From 57862f84c20bb71f37c5ab89d6e4a343e266c98a Mon Sep 17 00:00:00 2001 From: Roshan Date: Mon, 3 Jul 2023 14:14:06 +0800 Subject: [PATCH 1/9] feat: update metrics --- consensus/metrics.gen.go | 4 ++-- consensus/metrics.go | 2 +- consensus/state.go | 2 +- state/execution.go | 26 ++++++++++++++++++-------- state/metrics.gen.go | 34 ++++++++++++++++++++++++++++++---- state/metrics.go | 9 ++++++++- 6 files changed, 60 insertions(+), 17 deletions(-) diff --git a/consensus/metrics.gen.go b/consensus/metrics.gen.go index 6f1699cdd..f1c1b8419 100644 --- a/consensus/metrics.gen.go +++ b/consensus/metrics.gen.go @@ -88,7 +88,7 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { Name: "byzantine_validators_power", Help: "Total power of the byzantine validators.", }, labels).With(labelsAndValues...), - BlockIntervalSeconds: prometheus.NewHistogramFrom(stdprometheus.HistogramOpts{ + BlockIntervalSeconds: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ Namespace: namespace, Subsystem: MetricsSubsystem, Name: "block_interval_seconds", @@ -203,7 +203,7 @@ func NopMetrics() *Metrics { MissingValidatorsPower: discard.NewGauge(), ByzantineValidators: discard.NewGauge(), ByzantineValidatorsPower: discard.NewGauge(), - BlockIntervalSeconds: discard.NewHistogram(), + BlockIntervalSeconds: discard.NewGauge(), NumTxs: discard.NewGauge(), BlockSizeBytes: discard.NewGauge(), TotalTxs: discard.NewGauge(), diff --git a/consensus/metrics.go b/consensus/metrics.go index e9f81940a..374e60ca9 100644 --- a/consensus/metrics.go +++ b/consensus/metrics.go @@ -51,7 +51,7 @@ type Metrics struct { ByzantineValidatorsPower metrics.Gauge // Time between this and the last block. - BlockIntervalSeconds metrics.Histogram + BlockIntervalSeconds metrics.Gauge // Number of transactions. NumTxs metrics.Gauge diff --git a/consensus/state.go b/consensus/state.go index febf8f720..3dcbc196b 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -1841,7 +1841,7 @@ func (cs *State) recordMetrics(height int64, block *types.Block) { if height > 1 { lastBlockMeta := cs.blockStore.LoadBlockMeta(height - 1) if lastBlockMeta != nil { - cs.metrics.BlockIntervalSeconds.Observe( + cs.metrics.BlockIntervalSeconds.Set( block.Time.Sub(lastBlockMeta.Header.Time).Seconds(), ) } diff --git a/state/execution.go b/state/execution.go index 2b07dbfed..c2f62692d 100644 --- a/state/execution.go +++ b/state/execution.go @@ -15,7 +15,7 @@ import ( "github.com/cometbft/cometbft/types" ) -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // BlockExecutor handles block execution and state updates. // It exposes ApplyBlock(), which validates & executes the block, updates state w/ ABCI responses, // then commits and updates the mempool atomically, then saves state. @@ -194,12 +194,12 @@ func (blockExec *BlockExecutor) ApplyBlock( return state, 0, ErrInvalidBlock(err) } - startTime := time.Now().UnixNano() + startTime := time.Now() abciResponses, err := execBlockOnProxyApp( blockExec.logger, blockExec.proxyApp, block, blockExec.store, state.InitialHeight, ) - endTime := time.Now().UnixNano() - blockExec.metrics.BlockProcessingTime.Observe(float64(endTime-startTime) / 1000000) + elapseTime := time.Since(startTime).Milliseconds() + blockExec.metrics.BlockProcessingTime.Set(float64(elapseTime)) if err != nil { return state, 0, ErrProxyAppConn(err) } @@ -207,13 +207,17 @@ func (blockExec *BlockExecutor) ApplyBlock( fail.Fail() // XXX // Save the results before we commit. + startTime = time.Now() if err := blockExec.store.SaveABCIResponses(block.Height, abciResponses); err != nil { return state, 0, err } + elapseTime = time.Since(startTime).Milliseconds() + blockExec.metrics.SaveABCIResponse.Set(float64(elapseTime)) fail.Fail() // XXX // validate the validator updates and convert to CometBFT types + startTime = time.Now() abciValUpdates := abciResponses.EndBlock.ValidatorUpdates err = validateValidatorUpdates(abciValUpdates, state.ConsensusParams.Validator) if err != nil { @@ -237,24 +241,30 @@ func (blockExec *BlockExecutor) ApplyBlock( if err != nil { return state, 0, fmt.Errorf("commit failed for application: %v", err) } + elapseTime = time.Since(startTime).Milliseconds() + blockExec.metrics.UpdateState.Set(float64(elapseTime)) // Lock mempool, commit app state, update mempoool. + startTime = time.Now() appHash, retainHeight, err := blockExec.Commit(state, block, abciResponses.DeliverTxs) if err != nil { return state, 0, fmt.Errorf("commit failed for application: %v", err) } + elapseTime = time.Since(startTime).Milliseconds() + blockExec.metrics.CommitState.Set(float64(elapseTime)) // Update evpool with the latest state. blockExec.evpool.Update(state, block.Evidence.Evidence) - fail.Fail() // XXX // Update the app hash and save the state. + startTime = time.Now() state.AppHash = appHash if err := blockExec.store.Save(state); err != nil { return state, 0, err } - + elapseTime = time.Since(startTime).Milliseconds() + blockExec.metrics.SaveState.Set(float64(elapseTime)) fail.Fail() // XXX // Events are fired after everything else. @@ -313,7 +323,7 @@ func (blockExec *BlockExecutor) Commit( return res.Data, res.RetainHeight, err } -//--------------------------------------------------------- +// --------------------------------------------------------- // Helper functions for executing blocks and updating state // Executes block's transactions on proxyAppConn. @@ -599,7 +609,7 @@ func fireEvents( } } -//---------------------------------------------------------------------------------------------------- +// ---------------------------------------------------------------------------------------------------- // Execute block without state. TODO: eliminate // ExecCommitBlock executes and commits a block on the proxyApp without validating or mutating the state. diff --git a/state/metrics.gen.go b/state/metrics.gen.go index 1ce2c4de1..8cb1b900f 100644 --- a/state/metrics.gen.go +++ b/state/metrics.gen.go @@ -14,13 +14,35 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { labels = append(labels, labelsAndValues[i]) } return &Metrics{ - BlockProcessingTime: prometheus.NewHistogramFrom(stdprometheus.HistogramOpts{ + BlockProcessingTime: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ Namespace: namespace, Subsystem: MetricsSubsystem, Name: "block_processing_time", Help: "Time between BeginBlock and EndBlock in ms.", - - Buckets: stdprometheus.LinearBuckets(1, 10, 10), + }, labels).With(labelsAndValues...), + SaveABCIResponse: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "save_abciresponse", + Help: "", + }, labels).With(labelsAndValues...), + UpdateState: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "update_state", + Help: "", + }, labels).With(labelsAndValues...), + CommitState: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "commit_state", + Help: "", + }, labels).With(labelsAndValues...), + SaveState: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: MetricsSubsystem, + Name: "save_state", + Help: "", }, labels).With(labelsAndValues...), ConsensusParamUpdates: prometheus.NewCounterFrom(stdprometheus.CounterOpts{ Namespace: namespace, @@ -39,7 +61,11 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { func NopMetrics() *Metrics { return &Metrics{ - BlockProcessingTime: discard.NewHistogram(), + BlockProcessingTime: discard.NewGauge(), + SaveABCIResponse: discard.NewGauge(), + UpdateState: discard.NewGauge(), + CommitState: discard.NewGauge(), + SaveState: discard.NewGauge(), ConsensusParamUpdates: discard.NewCounter(), ValidatorSetUpdates: discard.NewCounter(), } diff --git a/state/metrics.go b/state/metrics.go index 6c238df76..4777761a5 100644 --- a/state/metrics.go +++ b/state/metrics.go @@ -15,7 +15,14 @@ const ( // Metrics contains metrics exposed by this package. type Metrics struct { // Time between BeginBlock and EndBlock in ms. - BlockProcessingTime metrics.Histogram `metrics_buckettype:"lin" metrics_bucketsizes:"1, 10, 10"` + BlockProcessingTime metrics.Gauge + + SaveABCIResponse metrics.Gauge + + UpdateState metrics.Gauge + + CommitState metrics.Gauge + SaveState metrics.Gauge // ConsensusParamUpdates is the total number of times the application has // udated the consensus params since process start. From 16974063fe867f858ec14917d30798c2825c6031 Mon Sep 17 00:00:00 2001 From: Roshan Date: Tue, 27 Jun 2023 11:36:54 +0800 Subject: [PATCH 2/9] feat: add prefetch to speed up block --- abci/client/client.go | 4 + abci/client/grpc_client.go | 14 + abci/client/local_client.go | 30 +- abci/client/mocks/client.go | 33 + abci/client/socket_client.go | 22 +- abci/example/kvstore/persistent_kvstore.go | 12 + abci/types/application.go | 29 + abci/types/mocks/application.go | 33 + abci/types/types.go | 11 + abci/types/types.pb.go | 2024 ++++++++++++++++---- blocksync/reactor_test.go | 2 +- consensus/byzantine_test.go | 4 +- consensus/common_test.go | 2 +- consensus/reactor.go | 12 +- consensus/reactor_test.go | 14 +- consensus/replay.go | 2 +- consensus/replay_file.go | 2 +- consensus/replay_test.go | 2 +- consensus/state.go | 2 +- consensus/state_test.go | 3 +- consensus/wal_generator.go | 2 +- node/node.go | 1 + node/node_test.go | 2 + proto/tendermint/abci/types.proto | 28 + proxy/app_conn.go | 37 +- proxy/client.go | 8 +- proxy/mocks/app_conn_prefetch.go | 62 + proxy/multi_app_conn.go | 17 + state/execution.go | 144 +- state/execution_test.go | 12 +- state/validation_test.go | 3 + 31 files changed, 2149 insertions(+), 424 deletions(-) create mode 100644 proxy/mocks/app_conn_prefetch.go diff --git a/abci/client/client.go b/abci/client/client.go index 3521c8170..d80492262 100644 --- a/abci/client/client.go +++ b/abci/client/client.go @@ -63,6 +63,10 @@ type Client interface { LoadSnapshotChunkSync(types.RequestLoadSnapshotChunk) (*types.ResponseLoadSnapshotChunk, error) ApplySnapshotChunkSync(types.RequestApplySnapshotChunk) (*types.ResponseApplySnapshotChunk, error) ProcessProposalSync(types.RequestProcessProposal) (*types.ResponseProcessProposal, error) + + PreDeliverTxAsync(types.RequestPreDeliverTx) + PreBeginBlockSync(types.RequestPreBeginBlock) error + PreCommitSync(types.RequestPreCommit) error } // ---------------------------------------- diff --git a/abci/client/grpc_client.go b/abci/client/grpc_client.go index 780a2422c..1ffc58ecf 100644 --- a/abci/client/grpc_client.go +++ b/abci/client/grpc_client.go @@ -452,3 +452,17 @@ func (cli *grpcClient) EthQuerySync(req types.RequestEthQuery) (*types.ResponseE reqres := cli.EthQueryAsync(req) return cli.finishSyncCall(reqres).GetEthQuery(), cli.Error() } + +// ---------------------------------------- + +func (cli *grpcClient) PreDeliverTxAsync(req types.RequestPreDeliverTx) { + panic("should not happen") +} + +func (cli *grpcClient) PreBeginBlockSync(req types.RequestPreBeginBlock) error { + panic("should not happen") +} + +func (cli *grpcClient) PreCommitSync(req types.RequestPreCommit) error { + panic("should not happen") +} diff --git a/abci/client/local_client.go b/abci/client/local_client.go index 3e4b5c075..637eccd4f 100644 --- a/abci/client/local_client.go +++ b/abci/client/local_client.go @@ -1,6 +1,8 @@ package abcicli import ( + "fmt" + types "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/libs/service" cmtsync "github.com/cometbft/cometbft/libs/sync" @@ -309,7 +311,8 @@ func (app *localClient) OfferSnapshotSync(req types.RequestOfferSnapshot) (*type } func (app *localClient) LoadSnapshotChunkSync( - req types.RequestLoadSnapshotChunk) (*types.ResponseLoadSnapshotChunk, error) { + req types.RequestLoadSnapshotChunk, +) (*types.ResponseLoadSnapshotChunk, error) { app.mtx.Lock() defer app.mtx.Unlock() @@ -318,7 +321,8 @@ func (app *localClient) LoadSnapshotChunkSync( } func (app *localClient) ApplySnapshotChunkSync( - req types.RequestApplySnapshotChunk) (*types.ResponseApplySnapshotChunk, error) { + req types.RequestApplySnapshotChunk, +) (*types.ResponseApplySnapshotChunk, error) { app.mtx.Lock() defer app.mtx.Unlock() @@ -377,3 +381,25 @@ func (app *localClient) EthQuerySync(req types.RequestEthQuery) (*types.Response res := app.Application.EthQuery(req) return &res, nil } + +// ------------------------------------------------------- + +func (app *localClient) PreDeliverTxAsync(req types.RequestPreDeliverTx) { + app.Application.PreDeliverTx(req) +} + +func (app *localClient) PreBeginBlockSync(req types.RequestPreBeginBlock) error { + res := app.Application.PreBeginBlock(req) + if res.IsErr() { + return fmt.Errorf(res.Error) + } + return nil +} + +func (app *localClient) PreCommitSync(req types.RequestPreCommit) error { + res := app.Application.PreCommit(req) + if res.IsErr() { + return fmt.Errorf(res.Error) + } + return nil +} diff --git a/abci/client/mocks/client.go b/abci/client/mocks/client.go index b2d052812..cef576b2e 100644 --- a/abci/client/mocks/client.go +++ b/abci/client/mocks/client.go @@ -614,6 +614,39 @@ func (_m *Client) OnStop() { _m.Called() } +// PreBeginBlockSync provides a mock function with given fields: _a0 +func (_m *Client) PreBeginBlockSync(_a0 types.RequestPreBeginBlock) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(types.RequestPreBeginBlock) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// PreCommitSync provides a mock function with given fields: _a0 +func (_m *Client) PreCommitSync(_a0 types.RequestPreCommit) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(types.RequestPreCommit) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// PreDeliverTxAsync provides a mock function with given fields: _a0 +func (_m *Client) PreDeliverTxAsync(_a0 types.RequestPreDeliverTx) { + _m.Called(_a0) +} + // PrepareProposalAsync provides a mock function with given fields: _a0 func (_m *Client) PrepareProposalAsync(_a0 types.RequestPrepareProposal) *abcicli.ReqRes { ret := _m.Called(_a0) diff --git a/abci/client/socket_client.go b/abci/client/socket_client.go index c94ba8b56..014ef1968 100644 --- a/abci/client/socket_client.go +++ b/abci/client/socket_client.go @@ -153,7 +153,7 @@ func (cli *socketClient) sendRequestsRoutine(conn io.Writer) { func (cli *socketClient) recvResponseRoutine(conn io.Reader) { r := bufio.NewReader(conn) for { - var res = &types.Response{} + res := &types.Response{} err := types.ReadMessage(r, res) if err != nil { cli.stopForError(fmt.Errorf("read message: %w", err)) @@ -394,7 +394,8 @@ func (cli *socketClient) OfferSnapshotSync(req types.RequestOfferSnapshot) (*typ } func (cli *socketClient) LoadSnapshotChunkSync( - req types.RequestLoadSnapshotChunk) (*types.ResponseLoadSnapshotChunk, error) { + req types.RequestLoadSnapshotChunk, +) (*types.ResponseLoadSnapshotChunk, error) { reqres := cli.queueRequest(types.ToRequestLoadSnapshotChunk(req)) if err := cli.FlushSync(); err != nil { return nil, err @@ -404,7 +405,8 @@ func (cli *socketClient) LoadSnapshotChunkSync( } func (cli *socketClient) ApplySnapshotChunkSync( - req types.RequestApplySnapshotChunk) (*types.ResponseApplySnapshotChunk, error) { + req types.RequestApplySnapshotChunk, +) (*types.ResponseApplySnapshotChunk, error) { reqres := cli.queueRequest(types.ToRequestApplySnapshotChunk(req)) if err := cli.FlushSync(); err != nil { return nil, err @@ -542,3 +544,17 @@ func (cli *socketClient) EthQuerySync(req types.RequestEthQuery) (*types.Respons return reqres.Response.GetEthQuery(), cli.Error() } + +// ---------------------------------------- + +func (cli *socketClient) PreDeliverTxAsync(req types.RequestPreDeliverTx) { + panic("should not happen") +} + +func (cli *socketClient) PreBeginBlockSync(req types.RequestPreBeginBlock) error { + panic("should not happen") +} + +func (cli *socketClient) PreCommitSync(req types.RequestPreCommit) error { + panic("should not happen") +} diff --git a/abci/example/kvstore/persistent_kvstore.go b/abci/example/kvstore/persistent_kvstore.go index 05abe9995..dbba06647 100644 --- a/abci/example/kvstore/persistent_kvstore.go +++ b/abci/example/kvstore/persistent_kvstore.go @@ -322,6 +322,18 @@ func (app *PersistentKVStoreApplication) EthQuery(query types.RequestEthQuery) t panic("should not happen") } +func (app *PersistentKVStoreApplication) PreBeginBlock(req types.RequestPreBeginBlock) types.ResponsePrefetch { + panic("should not happen") +} + +func (app *PersistentKVStoreApplication) PreDeliverTx(req types.RequestPreDeliverTx) { + panic("should not happen") +} + +func (app *PersistentKVStoreApplication) PreCommit(req types.RequestPreCommit) types.ResponsePrefetch { + panic("should not happen") +} + // ----------------------------- const ( diff --git a/abci/types/application.go b/abci/types/application.go index 36de357cf..a48360296 100644 --- a/abci/types/application.go +++ b/abci/types/application.go @@ -35,6 +35,11 @@ type Application interface { // Serve EVM json-rpc request EthQuery(RequestEthQuery) ResponseEthQuery + + // Prefetch + PreBeginBlock(RequestPreBeginBlock) ResponsePrefetch + PreDeliverTx(RequestPreDeliverTx) + PreCommit(RequestPreCommit) ResponsePrefetch } //------------------------------------------------------- @@ -122,6 +127,18 @@ func (BaseApplication) EthQuery(req RequestEthQuery) ResponseEthQuery { // ------------------------------------------------------- +func (BaseApplication) PreBeginBlock(req RequestPreBeginBlock) ResponsePrefetch { + return ResponsePrefetch{Code: CodeTypeOK} +} + +func (BaseApplication) PreDeliverTx(req RequestPreDeliverTx) {} + +func (BaseApplication) PreCommit(req RequestPreCommit) ResponsePrefetch { + return ResponsePrefetch{Code: CodeTypeOK} +} + +// ------------------------------------------------------- + // GRPCApplication is a GRPC wrapper for Application type GRPCApplication struct { app Application @@ -225,3 +242,15 @@ func (app *GRPCApplication) EthQuery(ctx context.Context, req *RequestEthQuery) res := app.app.EthQuery(*req) return &res, nil } + +func (app *GRPCApplication) PreBeginBlock(ctx context.Context, req *RequestPreBeginBlock) (*ResponsePrefetch, error) { + panic("should not be called") +} + +func (app *GRPCApplication) PreDeliverTx(ctx context.Context, req *RequestPreDeliverTx) (*ResponsePrefetch, error) { + panic("should not be called") +} + +func (app *GRPCApplication) PreCommit(ctx context.Context, req *RequestPreCommit) (*ResponsePrefetch, error) { + panic("should not be called") +} diff --git a/abci/types/mocks/application.go b/abci/types/mocks/application.go index a2c8215fb..a5ca5fce6 100644 --- a/abci/types/mocks/application.go +++ b/abci/types/mocks/application.go @@ -180,6 +180,39 @@ func (_m *Application) OfferSnapshot(_a0 types.RequestOfferSnapshot) types.Respo return r0 } +// PreBeginBlock provides a mock function with given fields: _a0 +func (_m *Application) PreBeginBlock(_a0 types.RequestPreBeginBlock) types.ResponsePrefetch { + ret := _m.Called(_a0) + + var r0 types.ResponsePrefetch + if rf, ok := ret.Get(0).(func(types.RequestPreBeginBlock) types.ResponsePrefetch); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponsePrefetch) + } + + return r0 +} + +// PreCommit provides a mock function with given fields: _a0 +func (_m *Application) PreCommit(_a0 types.RequestPreCommit) types.ResponsePrefetch { + ret := _m.Called(_a0) + + var r0 types.ResponsePrefetch + if rf, ok := ret.Get(0).(func(types.RequestPreCommit) types.ResponsePrefetch); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponsePrefetch) + } + + return r0 +} + +// PreDeliverTx provides a mock function with given fields: _a0 +func (_m *Application) PreDeliverTx(_a0 types.RequestPreDeliverTx) { + _m.Called(_a0) +} + // PrepareProposal provides a mock function with given fields: _a0 func (_m *Application) PrepareProposal(_a0 types.RequestPrepareProposal) types.ResponsePrepareProposal { ret := _m.Called(_a0) diff --git a/abci/types/types.go b/abci/types/types.go index 4b42d0e56..309a51e4d 100644 --- a/abci/types/types.go +++ b/abci/types/types.go @@ -51,6 +51,17 @@ func (r ResponseProcessProposal) IsStatusUnknown() bool { return r.Status == ResponseProcessProposal_UNKNOWN } +// IsOK returns true if Code is OK. +func (r ResponsePrefetch) IsOK() bool { + return r.Code == CodeTypeOK +} + +// IsErr returns true if Code is something other than OK. +func (r ResponsePrefetch) IsErr() bool { + return r.Code != CodeTypeOK +} + + //--------------------------------------------------------------------------- // override JSON marshaling so we emit defaults (ie. disable omitempty) diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 2325b6820..a0f4aa098 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -121,7 +121,7 @@ func (x ResponseOfferSnapshot_Result) String() string { } func (ResponseOfferSnapshot_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{31, 0} + return fileDescriptor_252557cfdd89a31a, []int{34, 0} } type ResponseApplySnapshotChunk_Result int32 @@ -158,7 +158,7 @@ func (x ResponseApplySnapshotChunk_Result) String() string { } func (ResponseApplySnapshotChunk_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{33, 0} + return fileDescriptor_252557cfdd89a31a, []int{36, 0} } type ResponseProcessProposal_ProposalStatus int32 @@ -186,7 +186,7 @@ func (x ResponseProcessProposal_ProposalStatus) String() string { } func (ResponseProcessProposal_ProposalStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{35, 0} + return fileDescriptor_252557cfdd89a31a, []int{38, 0} } type Request struct { @@ -208,6 +208,9 @@ type Request struct { // *Request_PrepareProposal // *Request_ProcessProposal // *Request_EthQuery + // *Request_PreBeginBlock + // *Request_PreDeliverTx + // *Request_PreCommit Value isRequest_Value `protobuf_oneof:"value"` } @@ -301,6 +304,15 @@ type Request_ProcessProposal struct { type Request_EthQuery struct { EthQuery *RequestEthQuery `protobuf:"bytes,18,opt,name=eth_query,json=ethQuery,proto3,oneof" json:"eth_query,omitempty"` } +type Request_PreBeginBlock struct { + PreBeginBlock *RequestPreBeginBlock `protobuf:"bytes,19,opt,name=pre_begin_block,json=preBeginBlock,proto3,oneof" json:"pre_begin_block,omitempty"` +} +type Request_PreDeliverTx struct { + PreDeliverTx *RequestPreDeliverTx `protobuf:"bytes,20,opt,name=pre_deliver_tx,json=preDeliverTx,proto3,oneof" json:"pre_deliver_tx,omitempty"` +} +type Request_PreCommit struct { + PreCommit *RequestPreCommit `protobuf:"bytes,21,opt,name=pre_commit,json=preCommit,proto3,oneof" json:"pre_commit,omitempty"` +} func (*Request_Echo) isRequest_Value() {} func (*Request_Flush) isRequest_Value() {} @@ -319,6 +331,9 @@ func (*Request_ApplySnapshotChunk) isRequest_Value() {} func (*Request_PrepareProposal) isRequest_Value() {} func (*Request_ProcessProposal) isRequest_Value() {} func (*Request_EthQuery) isRequest_Value() {} +func (*Request_PreBeginBlock) isRequest_Value() {} +func (*Request_PreDeliverTx) isRequest_Value() {} +func (*Request_PreCommit) isRequest_Value() {} func (m *Request) GetValue() isRequest_Value { if m != nil { @@ -446,6 +461,27 @@ func (m *Request) GetEthQuery() *RequestEthQuery { return nil } +func (m *Request) GetPreBeginBlock() *RequestPreBeginBlock { + if x, ok := m.GetValue().(*Request_PreBeginBlock); ok { + return x.PreBeginBlock + } + return nil +} + +func (m *Request) GetPreDeliverTx() *RequestPreDeliverTx { + if x, ok := m.GetValue().(*Request_PreDeliverTx); ok { + return x.PreDeliverTx + } + return nil +} + +func (m *Request) GetPreCommit() *RequestPreCommit { + if x, ok := m.GetValue().(*Request_PreCommit); ok { + return x.PreCommit + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Request) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -466,6 +502,9 @@ func (*Request) XXX_OneofWrappers() []interface{} { (*Request_PrepareProposal)(nil), (*Request_ProcessProposal)(nil), (*Request_EthQuery)(nil), + (*Request_PreBeginBlock)(nil), + (*Request_PreDeliverTx)(nil), + (*Request_PreCommit)(nil), } } @@ -1476,6 +1515,162 @@ func (m *RequestEthQuery) GetRequest() []byte { return nil } +type RequestPreBeginBlock struct { + StateNumber int64 `protobuf:"varint,1,opt,name=state_number,json=stateNumber,proto3" json:"state_number,omitempty"` + Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` + Header types1.Header `protobuf:"bytes,3,opt,name=header,proto3" json:"header"` +} + +func (m *RequestPreBeginBlock) Reset() { *m = RequestPreBeginBlock{} } +func (m *RequestPreBeginBlock) String() string { return proto.CompactTextString(m) } +func (*RequestPreBeginBlock) ProtoMessage() {} +func (*RequestPreBeginBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{18} +} +func (m *RequestPreBeginBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestPreBeginBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestPreBeginBlock.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 *RequestPreBeginBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestPreBeginBlock.Merge(m, src) +} +func (m *RequestPreBeginBlock) XXX_Size() int { + return m.Size() +} +func (m *RequestPreBeginBlock) XXX_DiscardUnknown() { + xxx_messageInfo_RequestPreBeginBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestPreBeginBlock proto.InternalMessageInfo + +func (m *RequestPreBeginBlock) GetStateNumber() int64 { + if m != nil { + return m.StateNumber + } + return 0 +} + +func (m *RequestPreBeginBlock) GetHash() []byte { + if m != nil { + return m.Hash + } + return nil +} + +func (m *RequestPreBeginBlock) GetHeader() types1.Header { + if m != nil { + return m.Header + } + return types1.Header{} +} + +type RequestPreDeliverTx struct { + StateIndex int64 `protobuf:"varint,1,opt,name=state_index,json=stateIndex,proto3" json:"state_index,omitempty"` + Tx []byte `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"` +} + +func (m *RequestPreDeliverTx) Reset() { *m = RequestPreDeliverTx{} } +func (m *RequestPreDeliverTx) String() string { return proto.CompactTextString(m) } +func (*RequestPreDeliverTx) ProtoMessage() {} +func (*RequestPreDeliverTx) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{19} +} +func (m *RequestPreDeliverTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestPreDeliverTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestPreDeliverTx.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 *RequestPreDeliverTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestPreDeliverTx.Merge(m, src) +} +func (m *RequestPreDeliverTx) XXX_Size() int { + return m.Size() +} +func (m *RequestPreDeliverTx) XXX_DiscardUnknown() { + xxx_messageInfo_RequestPreDeliverTx.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestPreDeliverTx proto.InternalMessageInfo + +func (m *RequestPreDeliverTx) GetStateIndex() int64 { + if m != nil { + return m.StateIndex + } + return 0 +} + +func (m *RequestPreDeliverTx) GetTx() []byte { + if m != nil { + return m.Tx + } + return nil +} + +type RequestPreCommit struct { + StateIndex int64 `protobuf:"varint,1,opt,name=state_index,json=stateIndex,proto3" json:"state_index,omitempty"` +} + +func (m *RequestPreCommit) Reset() { *m = RequestPreCommit{} } +func (m *RequestPreCommit) String() string { return proto.CompactTextString(m) } +func (*RequestPreCommit) ProtoMessage() {} +func (*RequestPreCommit) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{20} +} +func (m *RequestPreCommit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestPreCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestPreCommit.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 *RequestPreCommit) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestPreCommit.Merge(m, src) +} +func (m *RequestPreCommit) XXX_Size() int { + return m.Size() +} +func (m *RequestPreCommit) XXX_DiscardUnknown() { + xxx_messageInfo_RequestPreCommit.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestPreCommit proto.InternalMessageInfo + +func (m *RequestPreCommit) GetStateIndex() int64 { + if m != nil { + return m.StateIndex + } + return 0 +} + type Response struct { // Types that are valid to be assigned to Value: // @@ -1497,6 +1692,7 @@ type Response struct { // *Response_PrepareProposal // *Response_ProcessProposal // *Response_EthQuery + // *Response_Prefetch Value isResponse_Value `protobuf_oneof:"value"` } @@ -1504,7 +1700,7 @@ func (m *Response) Reset() { *m = Response{} } func (m *Response) String() string { return proto.CompactTextString(m) } func (*Response) ProtoMessage() {} func (*Response) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{18} + return fileDescriptor_252557cfdd89a31a, []int{21} } func (m *Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1593,6 +1789,9 @@ type Response_ProcessProposal struct { type Response_EthQuery struct { EthQuery *ResponseEthQuery `protobuf:"bytes,19,opt,name=eth_query,json=ethQuery,proto3,oneof" json:"eth_query,omitempty"` } +type Response_Prefetch struct { + Prefetch *ResponsePrefetch `protobuf:"bytes,20,opt,name=prefetch,proto3,oneof" json:"prefetch,omitempty"` +} func (*Response_Exception) isResponse_Value() {} func (*Response_Echo) isResponse_Value() {} @@ -1612,6 +1811,7 @@ func (*Response_ApplySnapshotChunk) isResponse_Value() {} func (*Response_PrepareProposal) isResponse_Value() {} func (*Response_ProcessProposal) isResponse_Value() {} func (*Response_EthQuery) isResponse_Value() {} +func (*Response_Prefetch) isResponse_Value() {} func (m *Response) GetValue() isResponse_Value { if m != nil { @@ -1746,6 +1946,13 @@ func (m *Response) GetEthQuery() *ResponseEthQuery { return nil } +func (m *Response) GetPrefetch() *ResponsePrefetch { + if x, ok := m.GetValue().(*Response_Prefetch); ok { + return x.Prefetch + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Response) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1767,6 +1974,7 @@ func (*Response) XXX_OneofWrappers() []interface{} { (*Response_PrepareProposal)(nil), (*Response_ProcessProposal)(nil), (*Response_EthQuery)(nil), + (*Response_Prefetch)(nil), } } @@ -1779,7 +1987,7 @@ func (m *ResponseException) Reset() { *m = ResponseException{} } func (m *ResponseException) String() string { return proto.CompactTextString(m) } func (*ResponseException) ProtoMessage() {} func (*ResponseException) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{19} + return fileDescriptor_252557cfdd89a31a, []int{22} } func (m *ResponseException) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1823,7 +2031,7 @@ func (m *ResponseEcho) Reset() { *m = ResponseEcho{} } func (m *ResponseEcho) String() string { return proto.CompactTextString(m) } func (*ResponseEcho) ProtoMessage() {} func (*ResponseEcho) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{20} + return fileDescriptor_252557cfdd89a31a, []int{23} } func (m *ResponseEcho) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1866,7 +2074,7 @@ func (m *ResponseFlush) Reset() { *m = ResponseFlush{} } func (m *ResponseFlush) String() string { return proto.CompactTextString(m) } func (*ResponseFlush) ProtoMessage() {} func (*ResponseFlush) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{21} + return fileDescriptor_252557cfdd89a31a, []int{24} } func (m *ResponseFlush) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1907,7 +2115,7 @@ func (m *ResponseInfo) Reset() { *m = ResponseInfo{} } func (m *ResponseInfo) String() string { return proto.CompactTextString(m) } func (*ResponseInfo) ProtoMessage() {} func (*ResponseInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{22} + return fileDescriptor_252557cfdd89a31a, []int{25} } func (m *ResponseInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1981,7 +2189,7 @@ func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} } func (m *ResponseInitChain) String() string { return proto.CompactTextString(m) } func (*ResponseInitChain) ProtoMessage() {} func (*ResponseInitChain) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{23} + return fileDescriptor_252557cfdd89a31a, []int{26} } func (m *ResponseInitChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2048,7 +2256,7 @@ func (m *ResponseQuery) Reset() { *m = ResponseQuery{} } func (m *ResponseQuery) String() string { return proto.CompactTextString(m) } func (*ResponseQuery) ProtoMessage() {} func (*ResponseQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{24} + return fileDescriptor_252557cfdd89a31a, []int{27} } func (m *ResponseQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2148,7 +2356,7 @@ func (m *ResponseBeginBlock) Reset() { *m = ResponseBeginBlock{} } func (m *ResponseBeginBlock) String() string { return proto.CompactTextString(m) } func (*ResponseBeginBlock) ProtoMessage() {} func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{25} + return fileDescriptor_252557cfdd89a31a, []int{28} } func (m *ResponseBeginBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2204,7 +2412,7 @@ func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} } func (m *ResponseCheckTx) String() string { return proto.CompactTextString(m) } func (*ResponseCheckTx) ProtoMessage() {} func (*ResponseCheckTx) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{26} + return fileDescriptor_252557cfdd89a31a, []int{29} } func (m *ResponseCheckTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2325,7 +2533,7 @@ func (m *ResponseDeliverTx) Reset() { *m = ResponseDeliverTx{} } func (m *ResponseDeliverTx) String() string { return proto.CompactTextString(m) } func (*ResponseDeliverTx) ProtoMessage() {} func (*ResponseDeliverTx) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{27} + return fileDescriptor_252557cfdd89a31a, []int{30} } func (m *ResponseDeliverTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2420,7 +2628,7 @@ func (m *ResponseEndBlock) Reset() { *m = ResponseEndBlock{} } func (m *ResponseEndBlock) String() string { return proto.CompactTextString(m) } func (*ResponseEndBlock) ProtoMessage() {} func (*ResponseEndBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{28} + return fileDescriptor_252557cfdd89a31a, []int{31} } func (m *ResponseEndBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,7 +2688,7 @@ func (m *ResponseCommit) Reset() { *m = ResponseCommit{} } func (m *ResponseCommit) String() string { return proto.CompactTextString(m) } func (*ResponseCommit) ProtoMessage() {} func (*ResponseCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{29} + return fileDescriptor_252557cfdd89a31a, []int{32} } func (m *ResponseCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2531,7 +2739,7 @@ func (m *ResponseListSnapshots) Reset() { *m = ResponseListSnapshots{} } func (m *ResponseListSnapshots) String() string { return proto.CompactTextString(m) } func (*ResponseListSnapshots) ProtoMessage() {} func (*ResponseListSnapshots) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{30} + return fileDescriptor_252557cfdd89a31a, []int{33} } func (m *ResponseListSnapshots) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2575,7 +2783,7 @@ func (m *ResponseOfferSnapshot) Reset() { *m = ResponseOfferSnapshot{} } func (m *ResponseOfferSnapshot) String() string { return proto.CompactTextString(m) } func (*ResponseOfferSnapshot) ProtoMessage() {} func (*ResponseOfferSnapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{31} + return fileDescriptor_252557cfdd89a31a, []int{34} } func (m *ResponseOfferSnapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2619,7 +2827,7 @@ func (m *ResponseLoadSnapshotChunk) Reset() { *m = ResponseLoadSnapshotC func (m *ResponseLoadSnapshotChunk) String() string { return proto.CompactTextString(m) } func (*ResponseLoadSnapshotChunk) ProtoMessage() {} func (*ResponseLoadSnapshotChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{32} + return fileDescriptor_252557cfdd89a31a, []int{35} } func (m *ResponseLoadSnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2665,7 +2873,7 @@ func (m *ResponseApplySnapshotChunk) Reset() { *m = ResponseApplySnapsho func (m *ResponseApplySnapshotChunk) String() string { return proto.CompactTextString(m) } func (*ResponseApplySnapshotChunk) ProtoMessage() {} func (*ResponseApplySnapshotChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{33} + return fileDescriptor_252557cfdd89a31a, []int{36} } func (m *ResponseApplySnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2723,7 +2931,7 @@ func (m *ResponsePrepareProposal) Reset() { *m = ResponsePrepareProposal func (m *ResponsePrepareProposal) String() string { return proto.CompactTextString(m) } func (*ResponsePrepareProposal) ProtoMessage() {} func (*ResponsePrepareProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{34} + return fileDescriptor_252557cfdd89a31a, []int{37} } func (m *ResponsePrepareProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2767,7 +2975,7 @@ func (m *ResponseProcessProposal) Reset() { *m = ResponseProcessProposal func (m *ResponseProcessProposal) String() string { return proto.CompactTextString(m) } func (*ResponseProcessProposal) ProtoMessage() {} func (*ResponseProcessProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{35} + return fileDescriptor_252557cfdd89a31a, []int{38} } func (m *ResponseProcessProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2814,7 +3022,7 @@ func (m *ResponseEthQuery) Reset() { *m = ResponseEthQuery{} } func (m *ResponseEthQuery) String() string { return proto.CompactTextString(m) } func (*ResponseEthQuery) ProtoMessage() {} func (*ResponseEthQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{36} + return fileDescriptor_252557cfdd89a31a, []int{39} } func (m *ResponseEthQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2871,6 +3079,58 @@ func (m *ResponseEthQuery) GetResponse() []byte { return nil } +type ResponsePrefetch struct { + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *ResponsePrefetch) Reset() { *m = ResponsePrefetch{} } +func (m *ResponsePrefetch) String() string { return proto.CompactTextString(m) } +func (*ResponsePrefetch) ProtoMessage() {} +func (*ResponsePrefetch) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{40} +} +func (m *ResponsePrefetch) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponsePrefetch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponsePrefetch.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 *ResponsePrefetch) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponsePrefetch.Merge(m, src) +} +func (m *ResponsePrefetch) XXX_Size() int { + return m.Size() +} +func (m *ResponsePrefetch) XXX_DiscardUnknown() { + xxx_messageInfo_ResponsePrefetch.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponsePrefetch proto.InternalMessageInfo + +func (m *ResponsePrefetch) GetCode() uint32 { + if m != nil { + return m.Code + } + return 0 +} + +func (m *ResponsePrefetch) GetError() string { + if m != nil { + return m.Error + } + return "" +} + type CommitInfo struct { Round int32 `protobuf:"varint,1,opt,name=round,proto3" json:"round,omitempty"` Votes []VoteInfo `protobuf:"bytes,2,rep,name=votes,proto3" json:"votes"` @@ -2880,7 +3140,7 @@ func (m *CommitInfo) Reset() { *m = CommitInfo{} } func (m *CommitInfo) String() string { return proto.CompactTextString(m) } func (*CommitInfo) ProtoMessage() {} func (*CommitInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{37} + return fileDescriptor_252557cfdd89a31a, []int{41} } func (m *CommitInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2935,7 +3195,7 @@ func (m *ExtendedCommitInfo) Reset() { *m = ExtendedCommitInfo{} } func (m *ExtendedCommitInfo) String() string { return proto.CompactTextString(m) } func (*ExtendedCommitInfo) ProtoMessage() {} func (*ExtendedCommitInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{38} + return fileDescriptor_252557cfdd89a31a, []int{42} } func (m *ExtendedCommitInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2990,7 +3250,7 @@ func (m *Event) Reset() { *m = Event{} } func (m *Event) String() string { return proto.CompactTextString(m) } func (*Event) ProtoMessage() {} func (*Event) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{39} + return fileDescriptor_252557cfdd89a31a, []int{43} } func (m *Event) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3044,7 +3304,7 @@ func (m *EventAttribute) Reset() { *m = EventAttribute{} } func (m *EventAttribute) String() string { return proto.CompactTextString(m) } func (*EventAttribute) ProtoMessage() {} func (*EventAttribute) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{40} + return fileDescriptor_252557cfdd89a31a, []int{44} } func (m *EventAttribute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3368,7 @@ func (m *TxResult) Reset() { *m = TxResult{} } func (m *TxResult) String() string { return proto.CompactTextString(m) } func (*TxResult) ProtoMessage() {} func (*TxResult) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{41} + return fileDescriptor_252557cfdd89a31a, []int{45} } func (m *TxResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3176,7 +3436,7 @@ 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_252557cfdd89a31a, []int{42} + return fileDescriptor_252557cfdd89a31a, []int{46} } func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3231,7 +3491,7 @@ func (m *ValidatorUpdate) Reset() { *m = ValidatorUpdate{} } func (m *ValidatorUpdate) String() string { return proto.CompactTextString(m) } func (*ValidatorUpdate) ProtoMessage() {} func (*ValidatorUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{43} + return fileDescriptor_252557cfdd89a31a, []int{47} } func (m *ValidatorUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3298,7 +3558,7 @@ func (m *VoteInfo) Reset() { *m = VoteInfo{} } func (m *VoteInfo) String() string { return proto.CompactTextString(m) } func (*VoteInfo) ProtoMessage() {} func (*VoteInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{44} + return fileDescriptor_252557cfdd89a31a, []int{48} } func (m *VoteInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3351,7 +3611,7 @@ func (m *ExtendedVoteInfo) Reset() { *m = ExtendedVoteInfo{} } func (m *ExtendedVoteInfo) String() string { return proto.CompactTextString(m) } func (*ExtendedVoteInfo) ProtoMessage() {} func (*ExtendedVoteInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{45} + return fileDescriptor_252557cfdd89a31a, []int{49} } func (m *ExtendedVoteInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3419,7 +3679,7 @@ func (m *Misbehavior) Reset() { *m = Misbehavior{} } func (m *Misbehavior) String() string { return proto.CompactTextString(m) } func (*Misbehavior) ProtoMessage() {} func (*Misbehavior) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{46} + return fileDescriptor_252557cfdd89a31a, []int{50} } func (m *Misbehavior) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3495,7 +3755,7 @@ func (m *Snapshot) Reset() { *m = Snapshot{} } func (m *Snapshot) String() string { return proto.CompactTextString(m) } func (*Snapshot) ProtoMessage() {} func (*Snapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{47} + return fileDescriptor_252557cfdd89a31a, []int{51} } func (m *Snapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3583,6 +3843,9 @@ func init() { proto.RegisterType((*RequestPrepareProposal)(nil), "tendermint.abci.RequestPrepareProposal") proto.RegisterType((*RequestProcessProposal)(nil), "tendermint.abci.RequestProcessProposal") proto.RegisterType((*RequestEthQuery)(nil), "tendermint.abci.RequestEthQuery") + proto.RegisterType((*RequestPreBeginBlock)(nil), "tendermint.abci.RequestPreBeginBlock") + proto.RegisterType((*RequestPreDeliverTx)(nil), "tendermint.abci.RequestPreDeliverTx") + proto.RegisterType((*RequestPreCommit)(nil), "tendermint.abci.RequestPreCommit") proto.RegisterType((*Response)(nil), "tendermint.abci.Response") proto.RegisterType((*ResponseException)(nil), "tendermint.abci.ResponseException") proto.RegisterType((*ResponseEcho)(nil), "tendermint.abci.ResponseEcho") @@ -3602,6 +3865,7 @@ func init() { proto.RegisterType((*ResponsePrepareProposal)(nil), "tendermint.abci.ResponsePrepareProposal") proto.RegisterType((*ResponseProcessProposal)(nil), "tendermint.abci.ResponseProcessProposal") proto.RegisterType((*ResponseEthQuery)(nil), "tendermint.abci.ResponseEthQuery") + proto.RegisterType((*ResponsePrefetch)(nil), "tendermint.abci.ResponsePrefetch") proto.RegisterType((*CommitInfo)(nil), "tendermint.abci.CommitInfo") proto.RegisterType((*ExtendedCommitInfo)(nil), "tendermint.abci.ExtendedCommitInfo") proto.RegisterType((*Event)(nil), "tendermint.abci.Event") @@ -3618,203 +3882,215 @@ func init() { func init() { proto.RegisterFile("tendermint/abci/types.proto", fileDescriptor_252557cfdd89a31a) } var fileDescriptor_252557cfdd89a31a = []byte{ - // 3124 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0xcb, 0x6f, 0x23, 0xc7, - 0xd1, 0xe7, 0xfb, 0x51, 0x7c, 0xaa, 0x57, 0xde, 0xe5, 0x8e, 0xd7, 0x92, 0x3c, 0x0b, 0x7b, 0x1f, - 0xb6, 0x25, 0x7f, 0xf2, 0xb7, 0x7e, 0xc0, 0x9f, 0xbf, 0x58, 0xe4, 0x72, 0x43, 0x59, 0xb2, 0xa4, - 0x8c, 0xa8, 0x35, 0x9c, 0xc7, 0x8e, 0x87, 0x64, 0x4b, 0x1c, 0x2f, 0x39, 0x33, 0x9e, 0x69, 0xca, - 0x94, 0x8f, 0x31, 0x02, 0x04, 0x46, 0x0e, 0x3e, 0x05, 0xbe, 0xf8, 0x90, 0x43, 0xf2, 0x37, 0xe4, - 0x14, 0xe4, 0x90, 0x83, 0x0f, 0x3e, 0xf8, 0x98, 0x43, 0xe0, 0x04, 0xf6, 0x2d, 0xff, 0x40, 0xae, - 0x41, 0x3f, 0xe6, 0x45, 0x72, 0x48, 0xca, 0x0e, 0x02, 0x04, 0xb9, 0x75, 0xd7, 0x54, 0x55, 0x77, - 0x57, 0x77, 0x57, 0xd5, 0xaf, 0xa6, 0xe1, 0x49, 0x82, 0x8d, 0x1e, 0xb6, 0x87, 0xba, 0x41, 0xb6, - 0xb4, 0x4e, 0x57, 0xdf, 0x22, 0x17, 0x16, 0x76, 0x36, 0x2d, 0xdb, 0x24, 0x26, 0xaa, 0xf8, 0x1f, - 0x37, 0xe9, 0x47, 0xe9, 0xa9, 0x00, 0x77, 0xd7, 0xbe, 0xb0, 0x88, 0xb9, 0x65, 0xd9, 0xa6, 0x79, - 0xca, 0xf9, 0xa5, 0x1b, 0x81, 0xcf, 0x4c, 0x4f, 0x50, 0x5b, 0xe8, 0xab, 0x10, 0x7e, 0x8c, 0x2f, - 0xdc, 0xaf, 0x4f, 0x4d, 0xc9, 0x5a, 0x9a, 0xad, 0x0d, 0xdd, 0xcf, 0xeb, 0x67, 0xa6, 0x79, 0x36, - 0xc0, 0x5b, 0xac, 0xd7, 0x19, 0x9d, 0x6e, 0x11, 0x7d, 0x88, 0x1d, 0xa2, 0x0d, 0x2d, 0xc1, 0xb0, - 0x7a, 0x66, 0x9e, 0x99, 0xac, 0xb9, 0x45, 0x5b, 0x9c, 0x2a, 0xff, 0x31, 0x0f, 0x59, 0x05, 0x7f, - 0x30, 0xc2, 0x0e, 0x41, 0xdb, 0x90, 0xc2, 0xdd, 0xbe, 0x59, 0x8b, 0x6f, 0xc4, 0x6f, 0x17, 0xb6, - 0x6f, 0x6c, 0x4e, 0x2c, 0x6e, 0x53, 0xf0, 0x35, 0xbb, 0x7d, 0xb3, 0x15, 0x53, 0x18, 0x2f, 0xba, - 0x07, 0xe9, 0xd3, 0xc1, 0xc8, 0xe9, 0xd7, 0x12, 0x4c, 0xe8, 0xa9, 0x28, 0xa1, 0x07, 0x94, 0xa9, - 0x15, 0x53, 0x38, 0x37, 0x1d, 0x4a, 0x37, 0x4e, 0xcd, 0x5a, 0x72, 0xfe, 0x50, 0xbb, 0xc6, 0x29, - 0x1b, 0x8a, 0xf2, 0xa2, 0x3a, 0x80, 0x6e, 0xe8, 0x44, 0xed, 0xf6, 0x35, 0xdd, 0xa8, 0xa5, 0x99, - 0xe4, 0xd3, 0xd1, 0x92, 0x3a, 0x69, 0x50, 0xc6, 0x56, 0x4c, 0xc9, 0xeb, 0x6e, 0x87, 0x4e, 0xf7, - 0x83, 0x11, 0xb6, 0x2f, 0x6a, 0x99, 0xf9, 0xd3, 0xfd, 0x11, 0x65, 0xa2, 0xd3, 0x65, 0xdc, 0xa8, - 0x09, 0x85, 0x0e, 0x3e, 0xd3, 0x0d, 0xb5, 0x33, 0x30, 0xbb, 0x8f, 0x6b, 0x59, 0x26, 0x2c, 0x47, - 0x09, 0xd7, 0x29, 0x6b, 0x9d, 0x72, 0xb6, 0x62, 0x0a, 0x74, 0xbc, 0x1e, 0xfa, 0x3f, 0xc8, 0x75, - 0xfb, 0xb8, 0xfb, 0x58, 0x25, 0xe3, 0x5a, 0x8e, 0xe9, 0x58, 0x8f, 0xd2, 0xd1, 0xa0, 0x7c, 0xed, - 0x71, 0x2b, 0xa6, 0x64, 0xbb, 0xbc, 0x49, 0xd7, 0xdf, 0xc3, 0x03, 0xfd, 0x1c, 0xdb, 0x54, 0x3e, - 0x3f, 0x7f, 0xfd, 0xf7, 0x39, 0x27, 0xd3, 0x90, 0xef, 0xb9, 0x1d, 0xf4, 0x03, 0xc8, 0x63, 0xa3, - 0x27, 0x96, 0x01, 0x4c, 0xc5, 0x46, 0xe4, 0x3e, 0x1b, 0x3d, 0x77, 0x11, 0x39, 0x2c, 0xda, 0xe8, - 0x55, 0xc8, 0x74, 0xcd, 0xe1, 0x50, 0x27, 0xb5, 0x02, 0x93, 0x5e, 0x8b, 0x5c, 0x00, 0xe3, 0x6a, - 0xc5, 0x14, 0xc1, 0x8f, 0x0e, 0xa0, 0x3c, 0xd0, 0x1d, 0xa2, 0x3a, 0x86, 0x66, 0x39, 0x7d, 0x93, - 0x38, 0xb5, 0x22, 0xd3, 0xf0, 0x4c, 0x94, 0x86, 0x7d, 0xdd, 0x21, 0xc7, 0x2e, 0x73, 0x2b, 0xa6, - 0x94, 0x06, 0x41, 0x02, 0xd5, 0x67, 0x9e, 0x9e, 0x62, 0xdb, 0x53, 0x58, 0x2b, 0xcd, 0xd7, 0x77, - 0x48, 0xb9, 0x5d, 0x79, 0xaa, 0xcf, 0x0c, 0x12, 0xd0, 0x4f, 0xe0, 0xca, 0xc0, 0xd4, 0x7a, 0x9e, - 0x3a, 0xb5, 0xdb, 0x1f, 0x19, 0x8f, 0x6b, 0x65, 0xa6, 0xf4, 0x4e, 0xe4, 0x24, 0x4d, 0xad, 0xe7, - 0xaa, 0x68, 0x50, 0x81, 0x56, 0x4c, 0x59, 0x19, 0x4c, 0x12, 0xd1, 0x23, 0x58, 0xd5, 0x2c, 0x6b, - 0x70, 0x31, 0xa9, 0xbd, 0xc2, 0xb4, 0xdf, 0x8d, 0xd2, 0xbe, 0x43, 0x65, 0x26, 0xd5, 0x23, 0x6d, - 0x8a, 0x8a, 0xda, 0x50, 0xb5, 0x6c, 0x6c, 0x69, 0x36, 0x56, 0x2d, 0xdb, 0xb4, 0x4c, 0x47, 0x1b, - 0xd4, 0xaa, 0x4c, 0xf7, 0xad, 0x28, 0xdd, 0x47, 0x9c, 0xff, 0x48, 0xb0, 0xb7, 0x62, 0x4a, 0xc5, - 0x0a, 0x93, 0xb8, 0x56, 0xb3, 0x8b, 0x1d, 0xc7, 0xd7, 0xba, 0xb2, 0x48, 0x2b, 0xe3, 0x0f, 0x6b, - 0x0d, 0x91, 0xd8, 0x19, 0x24, 0x7d, 0x95, 0xdf, 0x43, 0xb4, 0xe0, 0x0c, 0x92, 0xbe, 0x7b, 0x15, - 0x73, 0x58, 0xb4, 0xeb, 0x59, 0x48, 0x9f, 0x6b, 0x83, 0x11, 0x7e, 0x2b, 0x95, 0x4b, 0x55, 0xd3, - 0xf2, 0x2d, 0x28, 0x04, 0x3c, 0x13, 0xaa, 0x41, 0x76, 0x88, 0x1d, 0x47, 0x3b, 0xc3, 0xcc, 0x91, - 0xe5, 0x15, 0xb7, 0x2b, 0x97, 0xa1, 0x18, 0xf4, 0x46, 0xf2, 0xa7, 0x71, 0x4f, 0x92, 0x3a, 0x1a, - 0x2a, 0x79, 0x8e, 0x6d, 0x47, 0x37, 0x0d, 0x57, 0x52, 0x74, 0xd1, 0x4d, 0x28, 0xb1, 0x2b, 0xa3, - 0xba, 0xdf, 0xa9, 0xb7, 0x4b, 0x29, 0x45, 0x46, 0x7c, 0x28, 0x98, 0xd6, 0xa1, 0x60, 0x6d, 0x5b, - 0x1e, 0x4b, 0x92, 0xb1, 0x80, 0xb5, 0x6d, 0xb9, 0x0c, 0x4f, 0x43, 0x91, 0xae, 0xcd, 0xe3, 0x48, - 0xb1, 0x41, 0x0a, 0x94, 0x26, 0x58, 0xe4, 0x2f, 0x13, 0x50, 0x9d, 0xf4, 0x60, 0xe8, 0x55, 0x48, - 0x51, 0x67, 0x2e, 0xfc, 0xb2, 0xb4, 0xc9, 0x3d, 0xfd, 0xa6, 0xeb, 0xe9, 0x37, 0xdb, 0xae, 0xa7, - 0xaf, 0xe7, 0xbe, 0xf8, 0x7a, 0x3d, 0xf6, 0xe9, 0x5f, 0xd7, 0xe3, 0x0a, 0x93, 0x40, 0xd7, 0xa9, - 0xc3, 0xd1, 0x74, 0x43, 0xd5, 0x7b, 0x6c, 0xca, 0x79, 0xea, 0x4d, 0x34, 0xdd, 0xd8, 0xed, 0xa1, - 0x7d, 0xa8, 0x76, 0x4d, 0xc3, 0xc1, 0x86, 0x33, 0x72, 0x54, 0x1e, 0x49, 0x84, 0x37, 0x0e, 0xf9, - 0x14, 0x1e, 0x9f, 0x1a, 0x2e, 0xe7, 0x11, 0x63, 0x54, 0x2a, 0xdd, 0x30, 0x01, 0x3d, 0x00, 0x38, - 0xd7, 0x06, 0x7a, 0x4f, 0x23, 0xa6, 0xed, 0xd4, 0x52, 0x1b, 0xc9, 0x99, 0x9b, 0xfa, 0xd0, 0x65, - 0x39, 0xb1, 0x7a, 0x1a, 0xc1, 0xf5, 0x14, 0x9d, 0xae, 0x12, 0x90, 0x44, 0xcf, 0x42, 0x45, 0xb3, - 0x2c, 0xd5, 0x21, 0x1a, 0xc1, 0x6a, 0xe7, 0x82, 0x60, 0x87, 0x39, 0xfa, 0xa2, 0x52, 0xd2, 0x2c, - 0xeb, 0x98, 0x52, 0xeb, 0x94, 0x88, 0x9e, 0x81, 0x32, 0x75, 0xea, 0xba, 0x36, 0x50, 0xfb, 0x58, - 0x3f, 0xeb, 0x13, 0xe6, 0xd0, 0x93, 0x4a, 0x49, 0x50, 0x5b, 0x8c, 0x28, 0xf7, 0xbc, 0x1d, 0x67, - 0x27, 0x07, 0x21, 0x48, 0xf5, 0x34, 0xa2, 0x31, 0x4b, 0x16, 0x15, 0xd6, 0xa6, 0x34, 0x4b, 0x23, - 0x7d, 0x61, 0x1f, 0xd6, 0x46, 0x57, 0x21, 0x23, 0xd4, 0x26, 0x99, 0x5a, 0xd1, 0x43, 0xab, 0x90, - 0xb6, 0x6c, 0xf3, 0x1c, 0xb3, 0xad, 0xcb, 0x29, 0xbc, 0x23, 0x7f, 0x9c, 0x80, 0x95, 0x29, 0xd7, - 0x4f, 0xf5, 0xf6, 0x35, 0xa7, 0xef, 0x8e, 0x45, 0xdb, 0xe8, 0x65, 0xaa, 0x57, 0xeb, 0x61, 0x5b, - 0x84, 0xcb, 0xda, 0xb4, 0xa9, 0x5b, 0xec, 0xbb, 0x30, 0x8d, 0xe0, 0x46, 0x7b, 0x50, 0x1d, 0x68, - 0x0e, 0x51, 0xb9, 0x2b, 0x55, 0x03, 0xa1, 0xf3, 0xc9, 0x29, 0x23, 0x73, 0xc7, 0x4b, 0x0f, 0xb4, - 0x50, 0x52, 0xa6, 0xa2, 0x3e, 0x15, 0x9d, 0xc0, 0x6a, 0xe7, 0xe2, 0x23, 0xcd, 0x20, 0xba, 0x81, - 0xd5, 0xa9, 0x5d, 0x9b, 0x8e, 0xc5, 0x6f, 0xeb, 0x4e, 0x07, 0xf7, 0xb5, 0x73, 0xdd, 0x74, 0xa7, - 0x75, 0xc5, 0x93, 0xf7, 0x76, 0xd4, 0x91, 0x15, 0x28, 0x87, 0x63, 0x17, 0x2a, 0x43, 0x82, 0x8c, - 0xc5, 0xfa, 0x13, 0x64, 0x8c, 0x5e, 0x84, 0x14, 0x5d, 0x23, 0x5b, 0x7b, 0x79, 0xc6, 0x40, 0x42, - 0xae, 0x7d, 0x61, 0x61, 0x85, 0x71, 0xca, 0xb2, 0x77, 0x1b, 0xbc, 0x78, 0x36, 0xa9, 0x55, 0xbe, - 0x03, 0x95, 0x89, 0x80, 0x15, 0xd8, 0xbe, 0x78, 0x70, 0xfb, 0xe4, 0x0a, 0x94, 0x42, 0xd1, 0x49, - 0xbe, 0x0a, 0xab, 0xb3, 0x82, 0x8d, 0xdc, 0xf7, 0xe8, 0xa1, 0xa0, 0x81, 0xee, 0x41, 0xce, 0x8b, - 0x36, 0xfc, 0x36, 0x5e, 0x9f, 0x5a, 0x85, 0xcb, 0xac, 0x78, 0xac, 0xf4, 0x1a, 0xd2, 0x53, 0xcd, - 0x8e, 0x43, 0x82, 0x4d, 0x3c, 0xab, 0x59, 0x56, 0x4b, 0x73, 0xfa, 0xf2, 0x7b, 0x50, 0x8b, 0x8a, - 0x24, 0x13, 0xcb, 0x48, 0x79, 0xa7, 0xf0, 0x2a, 0x64, 0x4e, 0x4d, 0x7b, 0xa8, 0x11, 0xa6, 0xac, - 0xa4, 0x88, 0x1e, 0x3d, 0x9d, 0x3c, 0xaa, 0x24, 0x19, 0x99, 0x77, 0x64, 0x15, 0xae, 0x47, 0x46, - 0x13, 0x2a, 0xa2, 0x1b, 0x3d, 0xcc, 0xed, 0x59, 0x52, 0x78, 0xc7, 0x57, 0xc4, 0x27, 0xcb, 0x3b, - 0x74, 0x58, 0x87, 0xad, 0x95, 0xe9, 0xcf, 0x2b, 0xa2, 0x27, 0x7f, 0x96, 0x84, 0xab, 0xb3, 0x63, - 0x0a, 0xda, 0x80, 0xe2, 0x50, 0x1b, 0xab, 0x64, 0x2c, 0xee, 0x32, 0xdf, 0x0e, 0x18, 0x6a, 0xe3, - 0xf6, 0x98, 0x5f, 0xe4, 0x2a, 0x24, 0xc9, 0xd8, 0xa9, 0x25, 0x36, 0x92, 0xb7, 0x8b, 0x0a, 0x6d, - 0xa2, 0x13, 0x58, 0x19, 0x98, 0x5d, 0x6d, 0xa0, 0x06, 0x4e, 0xbc, 0x38, 0xec, 0x37, 0xa7, 0x8c, - 0xdd, 0x1c, 0x33, 0x4a, 0x6f, 0xea, 0xd0, 0x57, 0x98, 0x8e, 0x7d, 0xef, 0xe4, 0xa3, 0xfb, 0x50, - 0x18, 0xfa, 0x07, 0xf9, 0x12, 0x87, 0x3d, 0x28, 0x16, 0xd8, 0x92, 0x74, 0xc8, 0x31, 0xb8, 0x2e, - 0x3a, 0x73, 0x69, 0x17, 0xfd, 0x22, 0xac, 0x1a, 0x78, 0x4c, 0x02, 0x17, 0x91, 0x9f, 0x93, 0x2c, - 0x33, 0x3d, 0xa2, 0xdf, 0xfc, 0x4b, 0x46, 0x8f, 0x0c, 0xba, 0xc3, 0xa2, 0xb2, 0x65, 0x3a, 0xd8, - 0x56, 0xb5, 0x5e, 0xcf, 0xc6, 0x8e, 0xc3, 0xb2, 0xc9, 0x22, 0x0b, 0xb5, 0x8c, 0xbe, 0xc3, 0xc9, - 0xf2, 0x2f, 0x83, 0x5b, 0x13, 0x8e, 0xc2, 0xc2, 0xf0, 0x71, 0xdf, 0xf0, 0xc7, 0xb0, 0x2a, 0xe4, - 0x7b, 0x21, 0xdb, 0x27, 0x96, 0x75, 0x34, 0xc8, 0x15, 0x8f, 0x36, 0x7b, 0xf2, 0xbb, 0x99, 0xdd, - 0xf5, 0xa5, 0xa9, 0x80, 0x2f, 0xfd, 0x0f, 0xdb, 0x8a, 0xe7, 0x7c, 0x37, 0x25, 0xf2, 0x18, 0x9a, - 0x6f, 0xd8, 0x9c, 0x24, 0xdc, 0x99, 0xdb, 0x95, 0x7f, 0x0d, 0x90, 0x53, 0xb0, 0x63, 0xd1, 0x28, - 0x8b, 0xea, 0x90, 0xc7, 0xe3, 0x2e, 0xb6, 0x88, 0x9b, 0x98, 0xcc, 0x86, 0x1e, 0x9c, 0xbb, 0xe9, - 0x72, 0xd2, 0xbc, 0xdf, 0x13, 0x43, 0x2f, 0x09, 0x68, 0x17, 0x8d, 0xd2, 0x84, 0x78, 0x10, 0xdb, - 0xbd, 0xec, 0x62, 0xbb, 0x64, 0x64, 0xaa, 0xcf, 0xa5, 0x26, 0xc0, 0xdd, 0x4b, 0x02, 0xdc, 0xa5, - 0x16, 0x0c, 0x16, 0x42, 0x77, 0x8d, 0x10, 0xba, 0xcb, 0x2c, 0x58, 0x66, 0x04, 0xbc, 0x7b, 0xd9, - 0x85, 0x77, 0xd9, 0x05, 0x33, 0x9e, 0xc0, 0x77, 0x0f, 0xc2, 0xf8, 0x2e, 0x17, 0xe1, 0x6d, 0x5c, - 0xe9, 0x48, 0x80, 0xf7, 0x46, 0x00, 0xe0, 0xe5, 0x23, 0x33, 0x5b, 0xae, 0x64, 0x06, 0xc2, 0x6b, - 0x84, 0x10, 0x1e, 0x2c, 0xb0, 0x41, 0x04, 0xc4, 0x7b, 0x33, 0x08, 0xf1, 0x0a, 0x91, 0x28, 0x51, - 0xec, 0xf7, 0x2c, 0x8c, 0xf7, 0x9a, 0x87, 0xf1, 0x8a, 0x91, 0x20, 0x55, 0xac, 0x61, 0x12, 0xe4, - 0x1d, 0x4e, 0x81, 0x3c, 0x0e, 0xca, 0x9e, 0x8d, 0x54, 0xb1, 0x00, 0xe5, 0x1d, 0x4e, 0xa1, 0xbc, - 0xf2, 0x02, 0x85, 0x0b, 0x60, 0xde, 0x4f, 0x67, 0xc3, 0xbc, 0x68, 0x20, 0x26, 0xa6, 0xb9, 0x1c, - 0xce, 0x53, 0x23, 0x70, 0x1e, 0xc7, 0x62, 0xcf, 0x45, 0xaa, 0x5f, 0x1a, 0xe8, 0x9d, 0xcc, 0x00, - 0x7a, 0x1c, 0x92, 0xdd, 0x8e, 0x54, 0xbe, 0x04, 0xd2, 0x3b, 0x99, 0x81, 0xf4, 0xd0, 0x42, 0xb5, - 0x0b, 0xa1, 0xde, 0x9b, 0x41, 0xa8, 0x77, 0x65, 0xd1, 0x59, 0x5c, 0x80, 0xf5, 0xd2, 0xd5, 0x8c, - 0x7c, 0x87, 0x66, 0xda, 0x13, 0x9e, 0x8e, 0xa6, 0x2b, 0xd8, 0xb6, 0x4d, 0x5b, 0xa0, 0x36, 0xde, - 0x91, 0x6f, 0xd3, 0xdc, 0xdf, 0xf7, 0x6a, 0x73, 0x70, 0x21, 0x4b, 0x0b, 0x03, 0x9e, 0x4c, 0xfe, - 0x7d, 0xdc, 0x97, 0x65, 0x29, 0x73, 0x10, 0x37, 0xe4, 0x05, 0x6e, 0x08, 0xa0, 0xc5, 0x44, 0x18, - 0x2d, 0xae, 0x43, 0x81, 0xa6, 0x7b, 0x13, 0x40, 0x50, 0xb3, 0x3c, 0x20, 0x78, 0x17, 0x56, 0x58, - 0x80, 0xe5, 0x98, 0x52, 0x44, 0xb1, 0x14, 0x8b, 0x62, 0x15, 0xfa, 0x81, 0x5f, 0x49, 0x1e, 0xce, - 0x5e, 0x80, 0x2b, 0x01, 0x5e, 0x2f, 0x8d, 0xe4, 0xa8, 0xa8, 0xea, 0x71, 0xef, 0x88, 0x7c, 0xf2, - 0x4f, 0x71, 0xdf, 0x42, 0x3e, 0x82, 0x9c, 0x05, 0xf6, 0xe2, 0xff, 0x22, 0xb0, 0x97, 0xf8, 0xce, - 0x60, 0x2f, 0x98, 0x16, 0x27, 0xc3, 0x69, 0xf1, 0x3f, 0xe2, 0xfe, 0x9e, 0x78, 0xd0, 0xad, 0x6b, - 0xf6, 0xb0, 0x48, 0x54, 0x59, 0x9b, 0xe6, 0x30, 0x03, 0xf3, 0x4c, 0xa4, 0xa3, 0xb4, 0x49, 0xb9, - 0xbc, 0xd0, 0x93, 0x17, 0x91, 0xc5, 0xcb, 0x71, 0x79, 0x9e, 0x20, 0x72, 0xdc, 0x2a, 0x24, 0x1f, - 0x63, 0x5e, 0x07, 0x2c, 0x2a, 0xb4, 0x49, 0xf9, 0xd8, 0x51, 0x13, 0xf1, 0x9e, 0x77, 0xd0, 0xab, - 0x90, 0x67, 0x15, 0x5c, 0xd5, 0xb4, 0x1c, 0x11, 0x18, 0x42, 0xa9, 0x10, 0x2f, 0xd4, 0x6e, 0x1e, - 0x51, 0x9e, 0x43, 0xcb, 0x51, 0x72, 0x96, 0x68, 0x05, 0x12, 0x94, 0x7c, 0x28, 0x41, 0xb9, 0x01, - 0x79, 0x3a, 0x7b, 0xc7, 0xd2, 0xba, 0x98, 0x39, 0xf9, 0xbc, 0xe2, 0x13, 0xe4, 0x47, 0x80, 0xa6, - 0xc3, 0x0c, 0x6a, 0x41, 0x06, 0x9f, 0x63, 0x83, 0xf0, 0x84, 0xad, 0xb0, 0x7d, 0x75, 0x3a, 0x13, - 0xa6, 0x9f, 0xeb, 0x35, 0x6a, 0xe4, 0xbf, 0x7f, 0xbd, 0x5e, 0xe5, 0xdc, 0xcf, 0x9b, 0x43, 0x9d, - 0xe0, 0xa1, 0x45, 0x2e, 0x14, 0x21, 0x2f, 0xff, 0x25, 0x41, 0x13, 0x91, 0x50, 0x08, 0x9a, 0x69, - 0x5b, 0xf7, 0xc8, 0x27, 0x02, 0x50, 0x79, 0x39, 0x7b, 0xaf, 0x01, 0x9c, 0x69, 0x8e, 0xfa, 0xa1, - 0x66, 0x10, 0xdc, 0x13, 0x46, 0x0f, 0x50, 0x90, 0x04, 0x39, 0xda, 0x1b, 0x39, 0xb8, 0x27, 0x50, - 0xbb, 0xd7, 0x0f, 0xac, 0x33, 0xfb, 0xfd, 0xd6, 0x19, 0xb6, 0x72, 0x6e, 0xc2, 0xca, 0x01, 0x2c, - 0x93, 0x0f, 0x62, 0x19, 0x3a, 0x37, 0xcb, 0xd6, 0x4d, 0x5b, 0x27, 0x17, 0x6c, 0x6b, 0x92, 0x8a, - 0xd7, 0x47, 0x37, 0xa1, 0x34, 0xc4, 0x43, 0xcb, 0x34, 0x07, 0x2a, 0x77, 0x37, 0x05, 0x26, 0x5a, - 0x14, 0xc4, 0x26, 0xf3, 0x3a, 0xbf, 0x48, 0xf8, 0xf7, 0xcf, 0xc7, 0xac, 0xff, 0x75, 0x06, 0x96, - 0x7f, 0xc5, 0x0a, 0x59, 0xe1, 0x24, 0x03, 0x1d, 0xc3, 0x8a, 0x77, 0xfd, 0xd5, 0x11, 0x73, 0x0b, - 0xee, 0x81, 0x5e, 0xd6, 0x7f, 0x54, 0xcf, 0xc3, 0x64, 0x07, 0xbd, 0x0b, 0xd7, 0x26, 0x7c, 0x9b, - 0xa7, 0x3a, 0xb1, 0xac, 0x8b, 0x7b, 0x22, 0xec, 0xe2, 0x5c, 0xd5, 0xbe, 0xb1, 0x92, 0xdf, 0xf3, - 0xd6, 0xed, 0x42, 0x39, 0x9c, 0x33, 0xcd, 0xdc, 0xfe, 0x9b, 0x50, 0xb2, 0x31, 0xd1, 0x74, 0x43, - 0x0d, 0x55, 0x9f, 0x8a, 0x9c, 0x28, 0x6a, 0x5a, 0x47, 0xf0, 0xc4, 0xcc, 0xdc, 0x09, 0xbd, 0x02, - 0x79, 0x3f, 0xed, 0xe2, 0x56, 0x9d, 0x53, 0x9d, 0xf0, 0x79, 0xe5, 0x3f, 0xc4, 0x7d, 0x95, 0xe1, - 0x7a, 0x47, 0x13, 0x32, 0x36, 0x76, 0x46, 0x03, 0x0e, 0x50, 0xca, 0xdb, 0x2f, 0x2c, 0x97, 0x75, - 0x51, 0xea, 0x68, 0x40, 0x14, 0x21, 0x2c, 0x3f, 0x82, 0x0c, 0xa7, 0xa0, 0x02, 0x64, 0x4f, 0x0e, - 0xf6, 0x0e, 0x0e, 0xdf, 0x39, 0xa8, 0xc6, 0x10, 0x40, 0x66, 0xa7, 0xd1, 0x68, 0x1e, 0xb5, 0xab, - 0x71, 0x94, 0x87, 0xf4, 0x4e, 0xfd, 0x50, 0x69, 0x57, 0x13, 0x94, 0xac, 0x34, 0xdf, 0x6a, 0x36, - 0xda, 0xd5, 0x24, 0x5a, 0x81, 0x12, 0x6f, 0xab, 0x0f, 0x0e, 0x95, 0xb7, 0x77, 0xda, 0xd5, 0x54, - 0x80, 0x74, 0xdc, 0x3c, 0xb8, 0xdf, 0x54, 0xaa, 0x69, 0xf9, 0x7f, 0xe0, 0x7a, 0x64, 0x9e, 0xe6, - 0x17, 0x33, 0xe2, 0x81, 0x62, 0x86, 0xfc, 0x59, 0x02, 0xa4, 0xe8, 0xe4, 0x0b, 0xbd, 0x35, 0xb1, - 0xf0, 0xed, 0x4b, 0x64, 0x6e, 0x13, 0xab, 0x47, 0xcf, 0x40, 0xd9, 0xc6, 0xa7, 0x98, 0x74, 0xfb, - 0x3c, 0x19, 0xe4, 0x21, 0xb3, 0xa4, 0x94, 0x04, 0x95, 0x09, 0x39, 0x9c, 0xed, 0x7d, 0xdc, 0x25, - 0x2a, 0xf7, 0x45, 0xfc, 0xd0, 0xe5, 0x29, 0x1b, 0xa5, 0x1e, 0x73, 0xa2, 0xfc, 0xde, 0xa5, 0x6c, - 0x99, 0x87, 0xb4, 0xd2, 0x6c, 0x2b, 0xef, 0x56, 0x93, 0x08, 0x41, 0x99, 0x35, 0xd5, 0xe3, 0x83, - 0x9d, 0xa3, 0xe3, 0xd6, 0x21, 0xb5, 0xe5, 0x15, 0xa8, 0xb8, 0xb6, 0x74, 0x89, 0x69, 0xf9, 0x39, - 0xb8, 0x16, 0x91, 0x39, 0x4e, 0x17, 0x0d, 0xe4, 0xdf, 0xc4, 0x83, 0xdc, 0xe1, 0xec, 0xef, 0x10, - 0x32, 0x0e, 0xd1, 0xc8, 0xc8, 0x11, 0x46, 0x7c, 0x65, 0xd9, 0x54, 0x72, 0xd3, 0x6d, 0x1c, 0x33, - 0x71, 0x45, 0xa8, 0x91, 0xef, 0x41, 0x39, 0xfc, 0x25, 0xda, 0x06, 0xfe, 0x21, 0x4a, 0xc8, 0x76, - 0xc0, 0x15, 0xb9, 0xd8, 0x7b, 0x4e, 0x3a, 0x91, 0xf0, 0xbd, 0x6f, 0xc8, 0xc7, 0x25, 0x27, 0x83, - 0x88, 0x04, 0x39, 0x5b, 0xe8, 0x15, 0x95, 0x09, 0xaf, 0x2f, 0xbf, 0x0b, 0x10, 0x28, 0xb9, 0xae, - 0x42, 0xda, 0x36, 0x47, 0x46, 0x8f, 0x0d, 0x97, 0x56, 0x78, 0x07, 0xdd, 0x83, 0xf4, 0xb9, 0xc9, - 0xfd, 0xd4, 0xec, 0xcb, 0xfa, 0xd0, 0x24, 0x38, 0x50, 0x5f, 0xe1, 0xdc, 0xb2, 0x0e, 0x68, 0xba, - 0xec, 0x15, 0x31, 0xc4, 0x1b, 0xe1, 0x21, 0x9e, 0x8e, 0x2c, 0xa0, 0xcd, 0x1e, 0xea, 0x23, 0x48, - 0x33, 0x0f, 0x47, 0xcd, 0xc5, 0x4a, 0xb7, 0x22, 0x01, 0xa6, 0x6d, 0xf4, 0x33, 0x00, 0x8d, 0x10, - 0x5b, 0xef, 0x8c, 0xfc, 0x01, 0xd6, 0x67, 0x7b, 0xc8, 0x1d, 0x97, 0xaf, 0x7e, 0x43, 0xb8, 0xca, - 0x55, 0x5f, 0x34, 0xe0, 0x2e, 0x03, 0x0a, 0xe5, 0x03, 0x28, 0x87, 0x65, 0xdd, 0x94, 0x8d, 0xcf, - 0x21, 0x9c, 0xb2, 0xf1, 0x3d, 0x13, 0x29, 0x9b, 0x97, 0xf0, 0x25, 0x79, 0x95, 0x9e, 0x75, 0xe4, - 0x4f, 0xe2, 0x90, 0x6b, 0x8f, 0xc5, 0xdd, 0x89, 0xa8, 0x10, 0xfb, 0xa2, 0x89, 0x60, 0x3d, 0x94, - 0x97, 0x9c, 0x93, 0x5e, 0x21, 0xfb, 0x4d, 0xcf, 0x3b, 0xa4, 0x96, 0xc5, 0xe8, 0x6e, 0x41, 0x5f, - 0x78, 0xc4, 0xd7, 0x21, 0xef, 0xc5, 0x37, 0x8a, 0x24, 0xdc, 0xe2, 0x91, 0xa8, 0x03, 0x89, 0x2e, - 0xfb, 0xdf, 0x60, 0x7e, 0x28, 0x2a, 0xae, 0x49, 0x85, 0x77, 0xe4, 0xdf, 0xc5, 0xa1, 0x32, 0x11, - 0x1d, 0xd1, 0xeb, 0x90, 0xb5, 0x46, 0x1d, 0xd5, 0xb5, 0xcf, 0x44, 0x8d, 0xcd, 0x4d, 0x52, 0x47, - 0x9d, 0x81, 0xde, 0xdd, 0xc3, 0x17, 0xee, 0x6c, 0xac, 0x51, 0x67, 0x8f, 0x9b, 0x91, 0x0f, 0x93, - 0x08, 0x0c, 0x83, 0xae, 0x41, 0xb6, 0x33, 0x70, 0x98, 0x4a, 0xbe, 0xf4, 0x4c, 0x67, 0xe0, 0x50, - 0xf6, 0x5b, 0x50, 0xb1, 0xf1, 0x40, 0xbb, 0x08, 0x14, 0xbd, 0xf8, 0xf1, 0x2f, 0x0b, 0xb2, 0x5b, - 0xf3, 0x3a, 0x87, 0x9c, 0x7b, 0xae, 0xd0, 0xff, 0x43, 0xde, 0x0b, 0xdd, 0xde, 0x9f, 0xac, 0xc8, - 0x98, 0x2f, 0x26, 0xe8, 0x8b, 0x50, 0xcc, 0xe4, 0xe8, 0x67, 0x86, 0x5b, 0x9b, 0xe4, 0xe5, 0x8d, - 0x04, 0xdb, 0xe0, 0x0a, 0xff, 0xb0, 0xef, 0x62, 0x21, 0xf9, 0xb7, 0x71, 0xa8, 0x4e, 0x1e, 0xec, - 0x7f, 0xe7, 0x04, 0xa8, 0x2f, 0xa7, 0x17, 0x48, 0xc5, 0x74, 0x12, 0x1e, 0x08, 0x2c, 0x2a, 0x25, - 0x4a, 0x6d, 0xba, 0x44, 0xf9, 0xe3, 0x04, 0x14, 0x02, 0x95, 0x4f, 0xf4, 0xbf, 0x81, 0x5b, 0x56, - 0x9e, 0x91, 0x12, 0x05, 0x78, 0xfd, 0x9f, 0x24, 0xe1, 0x85, 0x25, 0x2e, 0xbf, 0xb0, 0xa8, 0x9f, - 0x5d, 0x6e, 0x21, 0x35, 0x75, 0xe9, 0x42, 0xea, 0xf3, 0x80, 0x88, 0x49, 0xb4, 0x81, 0x7a, 0x6e, - 0x12, 0xdd, 0x38, 0x53, 0xf9, 0xe1, 0xe2, 0x89, 0x6a, 0x95, 0x7d, 0x79, 0xc8, 0x3e, 0x1c, 0xb1, - 0xe3, 0xfc, 0xf3, 0x38, 0xe4, 0xbc, 0x8c, 0xe3, 0xb2, 0xff, 0x3c, 0xae, 0x42, 0x46, 0x04, 0x55, - 0xfe, 0xd3, 0x43, 0xf4, 0x66, 0x56, 0x8c, 0x25, 0xc8, 0x0d, 0x31, 0xd1, 0x58, 0xda, 0xc5, 0xf1, - 0xb3, 0xd7, 0xbf, 0xfb, 0x1a, 0x14, 0x02, 0xbf, 0x9f, 0xa8, 0xab, 0x39, 0x68, 0xbe, 0x53, 0x8d, - 0x49, 0xd9, 0x4f, 0x3e, 0xdf, 0x48, 0x1e, 0xe0, 0x0f, 0xe9, 0x25, 0x55, 0x9a, 0x8d, 0x56, 0xb3, - 0xb1, 0x57, 0x8d, 0x4b, 0x85, 0x4f, 0x3e, 0xdf, 0xc8, 0x2a, 0x98, 0xd5, 0xed, 0xee, 0xee, 0x41, - 0x65, 0x62, 0x63, 0xc2, 0x61, 0x09, 0x41, 0xf9, 0xfe, 0xc9, 0xd1, 0xfe, 0x6e, 0x63, 0xa7, 0xdd, - 0x54, 0x1f, 0x1e, 0xb6, 0x9b, 0xd5, 0x38, 0xba, 0x06, 0x57, 0xf6, 0x77, 0x7f, 0xd8, 0x6a, 0xab, - 0x8d, 0xfd, 0xdd, 0xe6, 0x41, 0x5b, 0xdd, 0x69, 0xb7, 0x77, 0x1a, 0x7b, 0xd5, 0xc4, 0xf6, 0x97, - 0x05, 0xa8, 0xec, 0xd4, 0x1b, 0xbb, 0x34, 0xad, 0xd0, 0xbb, 0x1a, 0xab, 0x6f, 0x34, 0x20, 0xc5, - 0x2a, 0x18, 0x73, 0x5f, 0xe4, 0x48, 0xf3, 0x8b, 0xba, 0xe8, 0x01, 0xa4, 0x59, 0x71, 0x03, 0xcd, - 0x7f, 0xa2, 0x23, 0x2d, 0xa8, 0xf2, 0xd2, 0xc9, 0xb0, 0xeb, 0x34, 0xf7, 0xcd, 0x8e, 0x34, 0xbf, - 0xe8, 0x8b, 0x14, 0xc8, 0xfb, 0xe0, 0x68, 0xf1, 0x1b, 0x16, 0x69, 0x09, 0x07, 0x8b, 0xf6, 0x21, - 0xeb, 0xe2, 0xd9, 0x45, 0xaf, 0x6a, 0xa4, 0x85, 0x55, 0x59, 0x6a, 0x2e, 0x9e, 0x28, 0xcc, 0x7f, - 0x22, 0x24, 0x2d, 0x28, 0x31, 0xa3, 0x5d, 0xc8, 0x88, 0x84, 0x7f, 0xc1, 0x4b, 0x19, 0x69, 0x51, - 0x95, 0x95, 0x1a, 0xcd, 0xaf, 0xe8, 0x2c, 0x7e, 0xf8, 0x24, 0x2d, 0x51, 0x3d, 0x47, 0x27, 0x00, - 0x81, 0x2a, 0xc3, 0x12, 0x2f, 0x9a, 0xa4, 0x65, 0xaa, 0xe2, 0xe8, 0x10, 0x72, 0x1e, 0xe8, 0x5b, - 0xf8, 0xbe, 0x48, 0x5a, 0x5c, 0x9e, 0x46, 0x8f, 0xa0, 0x14, 0x06, 0x3b, 0xcb, 0xbd, 0x1a, 0x92, - 0x96, 0xac, 0x3b, 0x53, 0xfd, 0x61, 0xe4, 0xb3, 0xdc, 0x2b, 0x22, 0x69, 0xc9, 0x32, 0x34, 0x7a, - 0x1f, 0x56, 0xa6, 0x91, 0xc9, 0xf2, 0x8f, 0x8a, 0xa4, 0x4b, 0x14, 0xa6, 0xd1, 0x10, 0xd0, 0x0c, - 0x44, 0x73, 0x89, 0x37, 0x46, 0xd2, 0x65, 0xea, 0xd4, 0xa8, 0x07, 0x95, 0x49, 0x98, 0xb0, 0xec, - 0x9b, 0x23, 0x69, 0xe9, 0x9a, 0x35, 0x1f, 0x25, 0x0c, 0x2f, 0x96, 0x7d, 0x83, 0x24, 0x2d, 0x5d, - 0xc2, 0x66, 0xe7, 0xd6, 0x45, 0x08, 0x0b, 0xdf, 0x24, 0x49, 0x8b, 0x4b, 0xd9, 0xf5, 0x9d, 0x2f, - 0xbe, 0x59, 0x8b, 0x7f, 0xf5, 0xcd, 0x5a, 0xfc, 0x6f, 0xdf, 0xac, 0xc5, 0x3f, 0xfd, 0x76, 0x2d, - 0xf6, 0xd5, 0xb7, 0x6b, 0xb1, 0x3f, 0x7f, 0xbb, 0x16, 0xfb, 0xf1, 0xad, 0x33, 0x9d, 0xf4, 0x47, - 0x9d, 0xcd, 0xae, 0x39, 0xdc, 0xea, 0x9a, 0x43, 0x4c, 0x3a, 0xa7, 0xc4, 0x6f, 0xf8, 0x2f, 0x4d, - 0x3b, 0x19, 0x16, 0x70, 0x5f, 0xfa, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x65, 0x94, 0x21, - 0x89, 0x2a, 0x00, 0x00, + // 3318 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0x4b, 0x6f, 0x23, 0xc7, + 0xf1, 0xe7, 0xfb, 0x51, 0x7c, 0xaa, 0x25, 0xef, 0x72, 0xe9, 0xb5, 0xa4, 0x9d, 0xfd, 0xdb, 0xfb, + 0xb0, 0x2d, 0xf9, 0xaf, 0xcd, 0xfa, 0x01, 0xdb, 0xb1, 0x25, 0x2e, 0x37, 0x94, 0x25, 0x4b, 0xf2, + 0x88, 0x5a, 0x63, 0xf3, 0xd8, 0xf1, 0x90, 0x6c, 0x89, 0xe3, 0x25, 0x39, 0xe3, 0x99, 0xa1, 0x2c, + 0xf9, 0x18, 0xc3, 0x40, 0x60, 0xe4, 0xe0, 0xa3, 0x2f, 0x3e, 0x04, 0x41, 0xf2, 0x19, 0x72, 0xca, + 0x29, 0x07, 0x1f, 0x72, 0x30, 0x90, 0x43, 0x72, 0x08, 0x9c, 0xc0, 0xbe, 0xe5, 0x0b, 0xe4, 0x1a, + 0xf4, 0x6b, 0xa6, 0x87, 0xe4, 0x90, 0x94, 0x1d, 0x04, 0x08, 0x72, 0xeb, 0xae, 0xa9, 0xaa, 0xee, + 0xae, 0xee, 0xae, 0xaa, 0x5f, 0x4d, 0xc3, 0x93, 0x2e, 0x1e, 0x74, 0xb0, 0xdd, 0x37, 0x06, 0xee, + 0xba, 0xde, 0x6a, 0x1b, 0xeb, 0xee, 0xb9, 0x85, 0x9d, 0x35, 0xcb, 0x36, 0x5d, 0x13, 0x95, 0xfc, + 0x8f, 0x6b, 0xe4, 0x63, 0xf5, 0x29, 0x89, 0xbb, 0x6d, 0x9f, 0x5b, 0xae, 0xb9, 0x6e, 0xd9, 0xa6, + 0x79, 0xcc, 0xf8, 0xab, 0x57, 0xa5, 0xcf, 0x54, 0x8f, 0xac, 0x2d, 0xf0, 0x95, 0x0b, 0x3f, 0xc6, + 0xe7, 0xe2, 0xeb, 0x53, 0x63, 0xb2, 0x96, 0x6e, 0xeb, 0x7d, 0xf1, 0x79, 0xe5, 0xc4, 0x34, 0x4f, + 0x7a, 0x78, 0x9d, 0xf6, 0x5a, 0xc3, 0xe3, 0x75, 0xd7, 0xe8, 0x63, 0xc7, 0xd5, 0xfb, 0x16, 0x67, + 0x58, 0x3a, 0x31, 0x4f, 0x4c, 0xda, 0x5c, 0x27, 0x2d, 0x46, 0x55, 0x7e, 0x9d, 0x83, 0xb4, 0x8a, + 0x3f, 0x18, 0x62, 0xc7, 0x45, 0x1b, 0x90, 0xc0, 0xed, 0xae, 0x59, 0x89, 0xae, 0x46, 0x6f, 0xe6, + 0x36, 0xae, 0xae, 0x8d, 0x2c, 0x6e, 0x8d, 0xf3, 0xd5, 0xdb, 0x5d, 0xb3, 0x11, 0x51, 0x29, 0x2f, + 0xba, 0x0b, 0xc9, 0xe3, 0xde, 0xd0, 0xe9, 0x56, 0x62, 0x54, 0xe8, 0xa9, 0x30, 0xa1, 0xfb, 0x84, + 0xa9, 0x11, 0x51, 0x19, 0x37, 0x19, 0xca, 0x18, 0x1c, 0x9b, 0x95, 0xf8, 0xf4, 0xa1, 0xb6, 0x07, + 0xc7, 0x74, 0x28, 0xc2, 0x8b, 0xb6, 0x00, 0x8c, 0x81, 0xe1, 0x6a, 0xed, 0xae, 0x6e, 0x0c, 0x2a, + 0x49, 0x2a, 0x79, 0x2d, 0x5c, 0xd2, 0x70, 0x6b, 0x84, 0xb1, 0x11, 0x51, 0xb3, 0x86, 0xe8, 0x90, + 0xe9, 0x7e, 0x30, 0xc4, 0xf6, 0x79, 0x25, 0x35, 0x7d, 0xba, 0xef, 0x10, 0x26, 0x32, 0x5d, 0xca, + 0x8d, 0xea, 0x90, 0x6b, 0xe1, 0x13, 0x63, 0xa0, 0xb5, 0x7a, 0x66, 0xfb, 0x71, 0x25, 0x4d, 0x85, + 0x95, 0x30, 0xe1, 0x2d, 0xc2, 0xba, 0x45, 0x38, 0x1b, 0x11, 0x15, 0x5a, 0x5e, 0x0f, 0xbd, 0x06, + 0x99, 0x76, 0x17, 0xb7, 0x1f, 0x6b, 0xee, 0x59, 0x25, 0x43, 0x75, 0xac, 0x84, 0xe9, 0xa8, 0x11, + 0xbe, 0xe6, 0x59, 0x23, 0xa2, 0xa6, 0xdb, 0xac, 0x49, 0xd6, 0xdf, 0xc1, 0x3d, 0xe3, 0x14, 0xdb, + 0x44, 0x3e, 0x3b, 0x7d, 0xfd, 0xf7, 0x18, 0x27, 0xd5, 0x90, 0xed, 0x88, 0x0e, 0x7a, 0x03, 0xb2, + 0x78, 0xd0, 0xe1, 0xcb, 0x00, 0xaa, 0x62, 0x35, 0x74, 0x9f, 0x07, 0x1d, 0xb1, 0x88, 0x0c, 0xe6, + 0x6d, 0xf4, 0x32, 0xa4, 0xda, 0x66, 0xbf, 0x6f, 0xb8, 0x95, 0x1c, 0x95, 0x5e, 0x0e, 0x5d, 0x00, + 0xe5, 0x6a, 0x44, 0x54, 0xce, 0x8f, 0xf6, 0xa0, 0xd8, 0x33, 0x1c, 0x57, 0x73, 0x06, 0xba, 0xe5, + 0x74, 0x4d, 0xd7, 0xa9, 0xe4, 0xa9, 0x86, 0xa7, 0xc3, 0x34, 0xec, 0x1a, 0x8e, 0x7b, 0x28, 0x98, + 0x1b, 0x11, 0xb5, 0xd0, 0x93, 0x09, 0x44, 0x9f, 0x79, 0x7c, 0x8c, 0x6d, 0x4f, 0x61, 0xa5, 0x30, + 0x5d, 0xdf, 0x3e, 0xe1, 0x16, 0xf2, 0x44, 0x9f, 0x29, 0x13, 0xd0, 0x4f, 0x60, 0xb1, 0x67, 0xea, + 0x1d, 0x4f, 0x9d, 0xd6, 0xee, 0x0e, 0x07, 0x8f, 0x2b, 0x45, 0xaa, 0xf4, 0x56, 0xe8, 0x24, 0x4d, + 0xbd, 0x23, 0x54, 0xd4, 0x88, 0x40, 0x23, 0xa2, 0x2e, 0xf4, 0x46, 0x89, 0xe8, 0x11, 0x2c, 0xe9, + 0x96, 0xd5, 0x3b, 0x1f, 0xd5, 0x5e, 0xa2, 0xda, 0x6f, 0x87, 0x69, 0xdf, 0x24, 0x32, 0xa3, 0xea, + 0x91, 0x3e, 0x46, 0x45, 0x4d, 0x28, 0x5b, 0x36, 0xb6, 0x74, 0x1b, 0x6b, 0x96, 0x6d, 0x5a, 0xa6, + 0xa3, 0xf7, 0x2a, 0x65, 0xaa, 0xfb, 0x46, 0x98, 0xee, 0x03, 0xc6, 0x7f, 0xc0, 0xd9, 0x1b, 0x11, + 0xb5, 0x64, 0x05, 0x49, 0x4c, 0xab, 0xd9, 0xc6, 0x8e, 0xe3, 0x6b, 0x5d, 0x98, 0xa5, 0x95, 0xf2, + 0x07, 0xb5, 0x06, 0x48, 0xf4, 0x0c, 0xba, 0x5d, 0x8d, 0xdd, 0x43, 0x34, 0xe3, 0x0c, 0xba, 0x5d, + 0x71, 0x15, 0x33, 0x98, 0xb7, 0xd1, 0x3e, 0x90, 0x99, 0x6a, 0xf2, 0x8d, 0x5c, 0x9c, 0xbe, 0xf5, + 0x07, 0x36, 0x0e, 0x5c, 0xca, 0x82, 0x25, 0x13, 0xd0, 0x2e, 0x14, 0x89, 0x42, 0xe9, 0x76, 0x2d, + 0x51, 0x7d, 0xff, 0x37, 0x45, 0x9f, 0x7c, 0xc1, 0xf2, 0x96, 0xd4, 0x27, 0xf7, 0x94, 0x68, 0xe3, + 0xd7, 0xe4, 0x89, 0xe9, 0xf7, 0xf4, 0xc0, 0xc6, 0xde, 0x4d, 0xc9, 0x5a, 0xa2, 0xb3, 0x95, 0x86, + 0xe4, 0xa9, 0xde, 0x1b, 0xe2, 0xb7, 0x12, 0x99, 0x44, 0x39, 0xa9, 0xdc, 0x80, 0x9c, 0xe4, 0x7c, + 0x51, 0x05, 0xd2, 0x7d, 0xec, 0x38, 0xfa, 0x09, 0xa6, 0xbe, 0x3a, 0xab, 0x8a, 0xae, 0x52, 0x84, + 0xbc, 0xec, 0x70, 0x95, 0xcf, 0xa2, 0x9e, 0x24, 0xf1, 0xa5, 0x44, 0xf2, 0x14, 0xdb, 0x8e, 0x61, + 0x0e, 0x84, 0x24, 0xef, 0xa2, 0xeb, 0x50, 0xa0, 0xa6, 0xd4, 0xc4, 0x77, 0xe2, 0xd0, 0x13, 0x6a, + 0x9e, 0x12, 0x1f, 0x70, 0xa6, 0x15, 0xc8, 0x59, 0x1b, 0x96, 0xc7, 0x12, 0xa7, 0x2c, 0x60, 0x6d, + 0x58, 0x82, 0xe1, 0x1a, 0xe4, 0xc9, 0xea, 0x3c, 0x8e, 0x04, 0x1d, 0x24, 0x47, 0x68, 0x9c, 0x45, + 0xf9, 0x63, 0x0c, 0xca, 0xa3, 0x4e, 0x1a, 0xbd, 0x0c, 0x09, 0x12, 0xaf, 0x78, 0xe8, 0xa9, 0xae, + 0xb1, 0x60, 0xb6, 0x26, 0x82, 0xd9, 0x5a, 0x53, 0x04, 0xb3, 0xad, 0xcc, 0x97, 0x5f, 0xaf, 0x44, + 0x3e, 0xfb, 0xdb, 0x4a, 0x54, 0xa5, 0x12, 0xe8, 0x0a, 0xf1, 0xa9, 0xba, 0x31, 0xd0, 0x8c, 0x0e, + 0x9d, 0x72, 0x96, 0x38, 0x4c, 0xdd, 0x18, 0x6c, 0x77, 0xd0, 0x2e, 0x94, 0xdb, 0xe6, 0xc0, 0xc1, + 0x03, 0x67, 0xe8, 0x68, 0x2c, 0x58, 0xf2, 0x80, 0x13, 0xd8, 0x0e, 0x16, 0x82, 0x6b, 0x82, 0xf3, + 0x80, 0x32, 0xaa, 0xa5, 0x76, 0x90, 0x80, 0xee, 0x03, 0x9c, 0xea, 0x3d, 0xa3, 0xa3, 0xbb, 0xa6, + 0xed, 0x54, 0x12, 0xab, 0xf1, 0x89, 0xe7, 0xf6, 0x81, 0x60, 0x39, 0xb2, 0x3a, 0xba, 0x8b, 0xb7, + 0x12, 0x64, 0xba, 0xaa, 0x24, 0x89, 0x9e, 0x81, 0x92, 0x6e, 0x59, 0x9a, 0xe3, 0xea, 0x2e, 0xd6, + 0x5a, 0xe7, 0x2e, 0x76, 0x68, 0x2c, 0xcb, 0xab, 0x05, 0xdd, 0xb2, 0x0e, 0x09, 0x75, 0x8b, 0x10, + 0xd1, 0xd3, 0x50, 0x24, 0x71, 0xcb, 0xd0, 0x7b, 0x5a, 0x17, 0x1b, 0x27, 0x5d, 0x97, 0xc6, 0xac, + 0xb8, 0x5a, 0xe0, 0xd4, 0x06, 0x25, 0x2a, 0x1d, 0x6f, 0xc7, 0xd9, 0xe5, 0x40, 0x90, 0xe8, 0xe8, + 0xae, 0x4e, 0x2d, 0x99, 0x57, 0x69, 0x9b, 0xd0, 0x2c, 0xdd, 0xed, 0x72, 0xfb, 0xd0, 0x36, 0xba, + 0x04, 0x29, 0xae, 0x36, 0x4e, 0xd5, 0xf2, 0x1e, 0x5a, 0x82, 0xa4, 0x65, 0x9b, 0xa7, 0x98, 0x6e, + 0x5d, 0x46, 0x65, 0x1d, 0xe5, 0xe3, 0x18, 0x2c, 0x8c, 0x45, 0x37, 0xa2, 0xb7, 0xab, 0x3b, 0x5d, + 0x31, 0x16, 0x69, 0xa3, 0x17, 0x89, 0x5e, 0xbd, 0x83, 0x6d, 0x9e, 0x11, 0x54, 0xc6, 0x4d, 0xdd, + 0xa0, 0xdf, 0xb9, 0x69, 0x38, 0x37, 0xda, 0x81, 0x72, 0x4f, 0x77, 0x5c, 0x7e, 0x6d, 0x34, 0x29, + 0x3b, 0x78, 0x72, 0xcc, 0xc8, 0xec, 0x92, 0x90, 0x03, 0xcd, 0x95, 0x14, 0x89, 0xa8, 0x4f, 0x45, + 0x47, 0xb0, 0xd4, 0x3a, 0xff, 0x48, 0x1f, 0xb8, 0xc6, 0x00, 0x6b, 0x63, 0xbb, 0x36, 0x9e, 0x6e, + 0xbc, 0x6d, 0x38, 0x2d, 0xdc, 0xd5, 0x4f, 0x0d, 0x53, 0x4c, 0x6b, 0xd1, 0x93, 0xf7, 0x76, 0xd4, + 0x51, 0x54, 0x28, 0x06, 0xc3, 0x33, 0x2a, 0x42, 0xcc, 0x3d, 0xe3, 0xeb, 0x8f, 0xb9, 0x67, 0xe8, + 0x05, 0x48, 0x90, 0x35, 0xd2, 0xb5, 0x17, 0x27, 0x0c, 0xc4, 0xe5, 0x9a, 0xe7, 0x16, 0x56, 0x29, + 0xa7, 0xa2, 0x78, 0xb7, 0xc1, 0xf7, 0x20, 0x23, 0x5a, 0x95, 0x5b, 0x50, 0x1a, 0x89, 0xc9, 0xd2, + 0xf6, 0x45, 0xe5, 0xed, 0x53, 0x4a, 0x50, 0x08, 0x04, 0x60, 0xe5, 0x12, 0x2c, 0x4d, 0x8a, 0xa7, + 0x4a, 0xd7, 0xa3, 0x07, 0xe2, 0x22, 0xba, 0x0b, 0x19, 0x2f, 0xa0, 0xb2, 0xdb, 0x78, 0x65, 0x6c, + 0x15, 0x82, 0x59, 0xf5, 0x58, 0xc9, 0x35, 0x24, 0xa7, 0x9a, 0x1e, 0x87, 0x18, 0x9d, 0x78, 0x5a, + 0xb7, 0xac, 0x86, 0xee, 0x74, 0x95, 0xf7, 0xa0, 0x12, 0x16, 0x2c, 0x47, 0x96, 0x91, 0xf0, 0x4e, + 0xe1, 0x25, 0x48, 0x1d, 0x9b, 0x76, 0x5f, 0x77, 0xa9, 0xb2, 0x82, 0xca, 0x7b, 0xe4, 0x74, 0xb2, + 0xc0, 0x19, 0xa7, 0x64, 0xd6, 0x51, 0x34, 0xb8, 0x12, 0x1a, 0x30, 0x89, 0x88, 0x31, 0xe8, 0x60, + 0x66, 0xcf, 0x82, 0xca, 0x3a, 0xbe, 0x22, 0x36, 0x59, 0xd6, 0x21, 0xc3, 0x3a, 0x74, 0xad, 0x54, + 0x7f, 0x56, 0xe5, 0x3d, 0xe5, 0xf3, 0x38, 0x5c, 0x9a, 0x1c, 0x36, 0xd1, 0x2a, 0xe4, 0xfb, 0xfa, + 0x99, 0xe6, 0x9e, 0xf1, 0xbb, 0xcc, 0xb6, 0x03, 0xfa, 0xfa, 0x59, 0xf3, 0x8c, 0x5d, 0xe4, 0x32, + 0xc4, 0xdd, 0x33, 0xa7, 0x12, 0x5b, 0x8d, 0xdf, 0xcc, 0xab, 0xa4, 0x89, 0x8e, 0x60, 0xa1, 0x67, + 0xb6, 0xf5, 0x9e, 0x26, 0x9d, 0x78, 0x7e, 0xd8, 0xaf, 0x8f, 0x19, 0xbb, 0x7e, 0x46, 0x29, 0x9d, + 0xb1, 0x43, 0x5f, 0xa2, 0x3a, 0x76, 0xbd, 0x93, 0x8f, 0xee, 0x41, 0xae, 0xef, 0x1f, 0xe4, 0x0b, + 0x1c, 0x76, 0x59, 0x4c, 0xda, 0x92, 0x64, 0xc0, 0x31, 0x08, 0x17, 0x9d, 0xba, 0xb0, 0x8b, 0x7e, + 0x01, 0x96, 0x06, 0xf8, 0xcc, 0x95, 0x2e, 0x22, 0x3b, 0x27, 0x69, 0x6a, 0x7a, 0x44, 0xbe, 0xf9, + 0x97, 0x8c, 0x1c, 0x19, 0x74, 0x8b, 0x26, 0x1e, 0x96, 0xe9, 0x60, 0x5b, 0xd3, 0x3b, 0x1d, 0x1b, + 0x3b, 0x0e, 0x4d, 0x98, 0xf3, 0x34, 0x9b, 0xa0, 0xf4, 0x4d, 0x46, 0x56, 0x7e, 0x21, 0x6f, 0x4d, + 0x30, 0xd1, 0xe0, 0x86, 0x8f, 0xfa, 0x86, 0x3f, 0x84, 0x25, 0x2e, 0xdf, 0x09, 0xd8, 0x3e, 0x36, + 0xaf, 0xa3, 0x41, 0x42, 0x3c, 0xdc, 0xec, 0xf1, 0xef, 0x66, 0x76, 0xe1, 0x4b, 0x13, 0x92, 0x2f, + 0xfd, 0x2f, 0xdb, 0x8a, 0x67, 0x7d, 0x37, 0x25, 0x52, 0xb5, 0x0a, 0xa4, 0x6d, 0x46, 0xe2, 0xee, + 0x4c, 0x74, 0x95, 0x4f, 0xa2, 0x9e, 0x03, 0x0a, 0x64, 0x67, 0x24, 0x85, 0x60, 0xb1, 0x71, 0x30, + 0xec, 0xb7, 0xb0, 0xcd, 0x2f, 0x54, 0x8e, 0xd2, 0xf6, 0x28, 0xc9, 0xb3, 0x55, 0x6c, 0x62, 0xdc, + 0x89, 0x5f, 0x24, 0xee, 0x28, 0xf7, 0x61, 0x71, 0x42, 0x52, 0x47, 0x32, 0x1d, 0x36, 0x0b, 0xdf, + 0x77, 0xc4, 0x55, 0xa0, 0xa4, 0x6d, 0xea, 0x40, 0x98, 0x8f, 0x8e, 0x79, 0x3e, 0xfa, 0x8e, 0xe7, + 0xc7, 0xbd, 0x94, 0x6e, 0xa6, 0x12, 0xe5, 0xcf, 0x00, 0x19, 0x15, 0x3b, 0x16, 0x49, 0x35, 0xd0, + 0x16, 0x64, 0xf1, 0x59, 0x1b, 0x5b, 0xae, 0xc8, 0xce, 0x26, 0x43, 0x4c, 0xc6, 0x5d, 0x17, 0x9c, + 0x24, 0x6f, 0xf4, 0xc4, 0xd0, 0x1d, 0x0e, 0xe1, 0xc3, 0xd1, 0x38, 0x17, 0x97, 0x31, 0xfc, 0x8b, + 0x02, 0xc3, 0xc7, 0x43, 0x21, 0x1d, 0x93, 0x1a, 0x01, 0xf1, 0x77, 0x38, 0x88, 0x4f, 0xcc, 0x18, + 0x2c, 0x80, 0xe2, 0x6b, 0x01, 0x14, 0x9f, 0x9a, 0xb1, 0xcc, 0x10, 0x18, 0xff, 0xa2, 0x80, 0xf1, + 0xe9, 0x19, 0x33, 0x1e, 0xc1, 0xf1, 0xf7, 0x83, 0x38, 0x3e, 0x13, 0xe2, 0x72, 0x85, 0x74, 0x28, + 0x90, 0x7f, 0x5d, 0x02, 0xf2, 0xd9, 0x50, 0x04, 0xc3, 0x94, 0x4c, 0x40, 0xf2, 0xb5, 0x00, 0x92, + 0x87, 0x19, 0x36, 0x08, 0x81, 0xf2, 0x6f, 0xca, 0x50, 0x3e, 0x17, 0x8a, 0x32, 0xf8, 0x7e, 0x4f, + 0xc2, 0xf2, 0xaf, 0x78, 0x58, 0x3e, 0x1f, 0x5a, 0x8c, 0xe0, 0x6b, 0x18, 0x05, 0xf3, 0xfb, 0x63, + 0x60, 0x9e, 0x81, 0xef, 0x67, 0x42, 0x55, 0xcc, 0x40, 0xf3, 0xfb, 0x63, 0x68, 0xbe, 0x38, 0x43, + 0xe1, 0x0c, 0x38, 0xff, 0xd3, 0xc9, 0x70, 0x3e, 0x1c, 0x70, 0xf3, 0x69, 0xce, 0x87, 0xe7, 0xb5, + 0x10, 0x3c, 0xcf, 0x30, 0xf7, 0xb3, 0xa1, 0xea, 0xe7, 0x06, 0xf4, 0x47, 0x13, 0x00, 0x3d, 0x83, + 0xde, 0x37, 0x43, 0x95, 0xcf, 0x81, 0xe8, 0x8f, 0x26, 0x20, 0x7a, 0x34, 0x53, 0xed, 0x4c, 0x48, + 0xff, 0xa6, 0x0c, 0xe9, 0x17, 0x67, 0x9d, 0xc5, 0x49, 0x98, 0xfe, 0x0d, 0xc8, 0x58, 0x36, 0x3e, + 0xc6, 0x6e, 0xbb, 0xcb, 0xc1, 0xf7, 0xb5, 0x69, 0xeb, 0xa4, 0x8c, 0x44, 0x81, 0x10, 0x92, 0x11, + 0x73, 0xb2, 0x9c, 0x52, 0x6e, 0x11, 0xbc, 0x32, 0xe2, 0x2a, 0x49, 0xd2, 0x87, 0x6d, 0xdb, 0xb4, + 0x39, 0xf6, 0x65, 0x1d, 0xe5, 0x26, 0x41, 0x50, 0xbe, 0x5b, 0x9c, 0x82, 0xae, 0x69, 0x72, 0x2d, + 0xb9, 0x42, 0xe5, 0x77, 0x51, 0x5f, 0x96, 0x02, 0x0f, 0x19, 0x7d, 0x65, 0x39, 0xfa, 0x92, 0x30, + 0x77, 0x2c, 0x88, 0xb9, 0x57, 0x20, 0x47, 0x92, 0xe6, 0x11, 0x38, 0xad, 0x5b, 0x1e, 0x9c, 0xbe, + 0x0d, 0x0b, 0x34, 0x4d, 0x61, 0xc8, 0x9c, 0xe7, 0x02, 0x09, 0x1a, 0x46, 0x4a, 0xe4, 0x03, 0xbb, + 0xd3, 0x2c, 0x29, 0x78, 0x1e, 0x16, 0x25, 0x5e, 0x2f, 0x19, 0x67, 0xd8, 0xb2, 0xec, 0x71, 0x6f, + 0xf2, 0xac, 0xfc, 0x0f, 0x51, 0xdf, 0x42, 0x3e, 0x0e, 0x9f, 0x04, 0x99, 0xa3, 0xff, 0x26, 0xc8, + 0x1c, 0xfb, 0xce, 0x90, 0x59, 0x06, 0x17, 0xf1, 0x20, 0xb8, 0xf8, 0x67, 0xd4, 0xdf, 0x13, 0x0f, + 0x00, 0xb7, 0xcd, 0x0e, 0xe6, 0xe9, 0x3e, 0x6d, 0x93, 0x4c, 0xb0, 0x67, 0x9e, 0xf0, 0xa4, 0x9e, + 0x34, 0x09, 0x97, 0x17, 0xbb, 0xb2, 0x3c, 0x34, 0x79, 0x48, 0x81, 0x65, 0x5b, 0x1c, 0x29, 0x94, + 0x21, 0xfe, 0x18, 0xb3, 0x82, 0x71, 0x5e, 0x25, 0x4d, 0xc2, 0x47, 0x8f, 0x1a, 0xcf, 0x9a, 0x58, + 0x07, 0xbd, 0x0c, 0x59, 0x5a, 0xea, 0xd7, 0x4c, 0xcb, 0xe1, 0x91, 0x25, 0x90, 0x50, 0xb2, 0x8a, + 0xfe, 0xda, 0x01, 0xe1, 0xd9, 0xb7, 0x1c, 0x72, 0x74, 0x59, 0x4b, 0x4a, 0xf3, 0xb2, 0x81, 0x34, + 0xef, 0x2a, 0x64, 0xc9, 0xec, 0x1d, 0x4b, 0x6f, 0x63, 0x1a, 0x25, 0xb2, 0xaa, 0x4f, 0x50, 0x1e, + 0x01, 0x1a, 0x8f, 0x53, 0xa8, 0x01, 0x29, 0x7c, 0x8a, 0x07, 0x2e, 0x4b, 0x7b, 0x73, 0x1b, 0x97, + 0xc6, 0xf1, 0x04, 0xf9, 0xbc, 0x55, 0x21, 0x46, 0xfe, 0xc7, 0xd7, 0x2b, 0x65, 0xc6, 0xfd, 0x9c, + 0xd9, 0x37, 0x5c, 0xdc, 0xb7, 0xdc, 0x73, 0x95, 0xcb, 0x2b, 0x7f, 0x8d, 0x91, 0x74, 0x2e, 0x10, + 0xc3, 0x26, 0xda, 0x56, 0x1c, 0xf9, 0x98, 0x54, 0x70, 0x98, 0xcf, 0xde, 0xcb, 0x00, 0x27, 0xba, + 0xa3, 0x7d, 0xa8, 0x0f, 0x5c, 0xdc, 0xe1, 0x46, 0x97, 0x28, 0xa8, 0x0a, 0x19, 0xd2, 0x1b, 0x3a, + 0xb8, 0xc3, 0x6b, 0x1f, 0x5e, 0x5f, 0x5a, 0x67, 0xfa, 0xfb, 0xad, 0x33, 0x68, 0xe5, 0xcc, 0x88, + 0x95, 0x25, 0x44, 0x98, 0x95, 0x11, 0x21, 0x99, 0x9b, 0x65, 0x1b, 0xa6, 0x6d, 0xb8, 0xe7, 0x74, + 0x6b, 0xe2, 0xaa, 0xd7, 0x47, 0xd7, 0xa1, 0xd0, 0xc7, 0x7d, 0xcb, 0x34, 0x7b, 0x1a, 0x73, 0x37, + 0x39, 0x2a, 0x9a, 0xe7, 0xc4, 0x3a, 0xf5, 0x3a, 0x9f, 0xc4, 0xfc, 0xfb, 0xe7, 0xa7, 0x9d, 0xff, + 0x73, 0x06, 0x56, 0x7e, 0x49, 0xcb, 0x81, 0xc1, 0x2c, 0x05, 0x1d, 0xc2, 0x82, 0x77, 0xfd, 0xb5, + 0x21, 0x75, 0x0b, 0xe2, 0x40, 0xcf, 0xeb, 0x3f, 0xca, 0xa7, 0x41, 0xb2, 0x83, 0x1e, 0xc2, 0xe5, + 0x11, 0xdf, 0xe6, 0xa9, 0x8e, 0xcd, 0xeb, 0xe2, 0x9e, 0x08, 0xba, 0x38, 0xa1, 0xda, 0x37, 0x56, + 0xfc, 0x7b, 0xde, 0xba, 0x6d, 0x28, 0x06, 0x93, 0xae, 0x89, 0xdb, 0x7f, 0x1d, 0x0a, 0x36, 0x76, + 0x75, 0x63, 0xa0, 0x05, 0x6a, 0x78, 0x79, 0x46, 0xe4, 0x95, 0xc1, 0x03, 0x78, 0x62, 0x62, 0xf2, + 0x85, 0x5e, 0x82, 0xac, 0x9f, 0xb7, 0x31, 0xab, 0x4e, 0xa9, 0xf1, 0xf8, 0xbc, 0xca, 0xef, 0xa3, + 0xbe, 0xca, 0x60, 0xd5, 0xa8, 0x0e, 0x29, 0x1b, 0x3b, 0xc3, 0x1e, 0x83, 0x79, 0xc5, 0x8d, 0xe7, + 0xe7, 0x4b, 0xdb, 0x08, 0x75, 0xd8, 0x73, 0x55, 0x2e, 0xac, 0x3c, 0x82, 0x14, 0xa3, 0xa0, 0x1c, + 0xa4, 0x8f, 0xf6, 0x76, 0xf6, 0xf6, 0xdf, 0xdd, 0x2b, 0x47, 0x10, 0x40, 0x6a, 0xb3, 0x56, 0xab, + 0x1f, 0x34, 0xcb, 0x51, 0x94, 0x85, 0xe4, 0xe6, 0xd6, 0xbe, 0xda, 0x2c, 0xc7, 0x08, 0x59, 0xad, + 0xbf, 0x55, 0xaf, 0x35, 0xcb, 0x71, 0xb4, 0x00, 0x05, 0xd6, 0xd6, 0xee, 0xef, 0xab, 0x6f, 0x6f, + 0x36, 0xcb, 0x09, 0x89, 0x74, 0x58, 0xdf, 0xbb, 0x57, 0x57, 0xcb, 0x49, 0xe5, 0xff, 0xe1, 0x4a, + 0x68, 0xa2, 0xe7, 0x97, 0x84, 0xa2, 0x52, 0x49, 0x48, 0xf9, 0x3c, 0x06, 0xd5, 0xf0, 0xec, 0x0d, + 0xbd, 0x35, 0xb2, 0xf0, 0x8d, 0x0b, 0xa4, 0x7e, 0x23, 0xab, 0x47, 0x4f, 0x43, 0x91, 0x67, 0x33, + 0x2c, 0x9b, 0x64, 0x21, 0xb3, 0xa0, 0x16, 0x38, 0x95, 0x0a, 0x39, 0x8c, 0xed, 0x7d, 0xdc, 0x76, + 0x35, 0xe6, 0x8b, 0xd8, 0xa1, 0xcb, 0x12, 0x36, 0x42, 0x3d, 0x64, 0x44, 0xe5, 0xbd, 0x0b, 0xd9, + 0x32, 0x0b, 0x49, 0xb5, 0xde, 0x54, 0x1f, 0x96, 0xe3, 0x08, 0x41, 0x91, 0x36, 0xb5, 0xc3, 0xbd, + 0xcd, 0x83, 0xc3, 0xc6, 0x3e, 0xb1, 0xe5, 0x22, 0x94, 0x84, 0x2d, 0x05, 0x31, 0xa9, 0x3c, 0x0b, + 0x97, 0x43, 0x52, 0xcf, 0xf1, 0xd2, 0x8b, 0xf2, 0xab, 0xa8, 0xcc, 0x1d, 0x4c, 0x1f, 0xf7, 0x21, + 0x45, 0x40, 0xf1, 0xd0, 0xe1, 0x46, 0x7c, 0x69, 0xde, 0x5c, 0x74, 0x4d, 0x34, 0x0e, 0xa9, 0xb8, + 0xca, 0xd5, 0x28, 0x77, 0xa1, 0x18, 0xfc, 0x12, 0x6e, 0x03, 0xff, 0x10, 0xc5, 0x14, 0x5b, 0x72, + 0x45, 0x22, 0x31, 0x9d, 0x92, 0x4e, 0xc4, 0x7c, 0xef, 0x1b, 0xf0, 0x71, 0xf1, 0xd1, 0x20, 0x52, + 0x85, 0x8c, 0xcd, 0xf5, 0xf2, 0xfa, 0x8e, 0xd7, 0x57, 0x5e, 0xf3, 0xc7, 0x14, 0x79, 0xed, 0xc4, + 0x31, 0xbd, 0xdc, 0x35, 0x26, 0xe7, 0xae, 0x0f, 0x01, 0xa4, 0xb2, 0xf7, 0x12, 0x24, 0x6d, 0x73, + 0x38, 0xe8, 0x50, 0xc1, 0xa4, 0xca, 0x3a, 0xe8, 0x2e, 0x24, 0x4f, 0x4d, 0xe6, 0xe5, 0x26, 0x5f, + 0xf5, 0x07, 0xa6, 0x8b, 0xa5, 0x1a, 0x17, 0xe3, 0x56, 0x0c, 0x40, 0xe3, 0xa5, 0xc7, 0x90, 0x21, + 0x5e, 0x0f, 0x0e, 0x71, 0x2d, 0xb4, 0x88, 0x39, 0x79, 0xa8, 0x8f, 0x20, 0x49, 0xfd, 0x23, 0x59, + 0x38, 0x2d, 0x9f, 0xf3, 0xf4, 0x99, 0xb4, 0xd1, 0xcf, 0x00, 0x74, 0xd7, 0xb5, 0x8d, 0xd6, 0xd0, + 0x1f, 0x60, 0x65, 0xb2, 0x7f, 0xdd, 0x14, 0x7c, 0x5b, 0x57, 0xb9, 0xa3, 0x5d, 0xf2, 0x45, 0x25, + 0x67, 0x2b, 0x29, 0x54, 0xf6, 0xa0, 0x18, 0x94, 0x15, 0x09, 0x1f, 0x9b, 0x43, 0x30, 0xe1, 0xe3, + 0xb6, 0x67, 0x09, 0x9f, 0x97, 0x2e, 0xc6, 0xd9, 0x9f, 0x12, 0xda, 0x51, 0x3e, 0x8d, 0x42, 0xa6, + 0x79, 0xc6, 0x6f, 0x5e, 0x48, 0x95, 0xde, 0x17, 0x8d, 0xc9, 0x35, 0x69, 0x56, 0x52, 0x8a, 0x7b, + 0x3f, 0x13, 0xde, 0xf4, 0x7c, 0x4b, 0x62, 0xde, 0x12, 0x81, 0x28, 0x6e, 0x71, 0x7f, 0xfa, 0x2a, + 0x64, 0xbd, 0xe8, 0x48, 0x70, 0x88, 0x28, 0xe0, 0xf1, 0x5a, 0x1c, 0xef, 0xd2, 0x7f, 0x3e, 0xe6, + 0x87, 0xbc, 0x74, 0x16, 0x57, 0x59, 0x47, 0xf9, 0x6d, 0x14, 0x4a, 0x23, 0xb1, 0x15, 0xbd, 0x0a, + 0x69, 0x6b, 0xd8, 0xd2, 0x84, 0x7d, 0x46, 0xea, 0x9c, 0x22, 0xc5, 0x1d, 0xb6, 0x7a, 0x46, 0x7b, + 0x07, 0x9f, 0x8b, 0xd9, 0x58, 0xc3, 0xd6, 0x0e, 0x33, 0x23, 0x1b, 0x26, 0x26, 0x0d, 0x83, 0x2e, + 0x43, 0xba, 0xd5, 0x73, 0xa8, 0x4a, 0xb6, 0xf4, 0x54, 0xab, 0xe7, 0x10, 0xf6, 0x1b, 0x50, 0xb2, + 0x71, 0x4f, 0x3f, 0x97, 0x0a, 0x8f, 0xec, 0xf2, 0x14, 0x39, 0x59, 0xd4, 0x1d, 0x4f, 0x21, 0x23, + 0xce, 0x15, 0xfa, 0x21, 0x64, 0xbd, 0xc0, 0xef, 0xfd, 0x4d, 0x0c, 0xcd, 0x18, 0xf8, 0x04, 0x7d, + 0x11, 0x82, 0xb8, 0x1c, 0xe3, 0x64, 0x20, 0xea, 0xc3, 0xac, 0xba, 0x12, 0xa3, 0x1b, 0x5c, 0x62, + 0x1f, 0x76, 0x05, 0x92, 0x52, 0x7e, 0x13, 0x85, 0xf2, 0xe8, 0xc1, 0xfe, 0x4f, 0x4e, 0x80, 0x44, + 0x02, 0x72, 0x81, 0x34, 0x4c, 0x26, 0xe1, 0x41, 0xc8, 0xbc, 0x5a, 0x20, 0xd4, 0xba, 0x20, 0x2a, + 0x1f, 0xc7, 0x20, 0x27, 0x55, 0x9f, 0xd1, 0x0f, 0xa4, 0x5b, 0x56, 0x9c, 0x90, 0x50, 0x49, 0xbc, + 0xfe, 0x8f, 0xaa, 0xe0, 0xc2, 0x62, 0x17, 0x5f, 0x58, 0xd8, 0x0f, 0x47, 0x51, 0xcc, 0x4e, 0x5c, + 0xb8, 0x98, 0xfd, 0x1c, 0x20, 0xd7, 0x74, 0xf5, 0x9e, 0x76, 0x6a, 0xba, 0xc6, 0xe0, 0x44, 0x63, + 0x87, 0x8b, 0xa5, 0xb9, 0x65, 0xfa, 0xe5, 0x01, 0xfd, 0x70, 0x40, 0x8f, 0xf3, 0xcf, 0xa3, 0x90, + 0xf1, 0xf2, 0x95, 0x8b, 0xfe, 0x77, 0xba, 0x04, 0x29, 0x1e, 0x92, 0xd9, 0x8f, 0x27, 0xde, 0x9b, + 0x58, 0xb5, 0xaf, 0x42, 0xa6, 0x8f, 0x5d, 0x9d, 0x26, 0x6d, 0x0c, 0x7d, 0x7b, 0xfd, 0xdb, 0xaf, + 0x40, 0x4e, 0xfa, 0x05, 0x48, 0x5c, 0xcd, 0x5e, 0xfd, 0xdd, 0x72, 0xa4, 0x9a, 0xfe, 0xf4, 0x8b, + 0xd5, 0xf8, 0x1e, 0xfe, 0x90, 0x5c, 0x52, 0xb5, 0x5e, 0x6b, 0xd4, 0x6b, 0x3b, 0xe5, 0x68, 0x35, + 0xf7, 0xe9, 0x17, 0xab, 0x69, 0x15, 0xd3, 0xb2, 0xe1, 0xed, 0x1d, 0x28, 0x8d, 0x6c, 0x4c, 0x30, + 0xa8, 0x21, 0x28, 0xde, 0x3b, 0x3a, 0xd8, 0xdd, 0xae, 0x6d, 0x36, 0xeb, 0xda, 0x83, 0xfd, 0x66, + 0xbd, 0x1c, 0x45, 0x97, 0x61, 0x71, 0x77, 0xfb, 0x47, 0x8d, 0xa6, 0x56, 0xdb, 0xdd, 0xae, 0xef, + 0x35, 0xb5, 0xcd, 0x66, 0x73, 0xb3, 0xb6, 0x53, 0x8e, 0x6d, 0xfc, 0xa9, 0x00, 0xa5, 0xcd, 0xad, + 0xda, 0x36, 0x49, 0x4a, 0x8c, 0xb6, 0x4e, 0xab, 0x23, 0x35, 0x48, 0xd0, 0xfa, 0xc7, 0xd4, 0x87, + 0x5f, 0xd5, 0xe9, 0x35, 0x65, 0x74, 0x1f, 0x92, 0xb4, 0x34, 0x82, 0xa6, 0xbf, 0x04, 0xab, 0xce, + 0x28, 0x32, 0x93, 0xc9, 0xd0, 0xeb, 0x34, 0xf5, 0x69, 0x58, 0x75, 0x7a, 0xcd, 0x19, 0xa9, 0x90, + 0xf5, 0xa1, 0xd5, 0xec, 0xa7, 0x52, 0xd5, 0x39, 0x1c, 0x2c, 0xda, 0x85, 0xb4, 0x40, 0xc3, 0xb3, + 0x1e, 0x6f, 0x55, 0x67, 0x16, 0x85, 0x89, 0xb9, 0x58, 0x9a, 0x31, 0xfd, 0x25, 0x5a, 0x75, 0x46, + 0x85, 0x1b, 0x6d, 0x43, 0x8a, 0xc3, 0x85, 0x19, 0x0f, 0xb2, 0xaa, 0xb3, 0x8a, 0xbc, 0xc4, 0x68, + 0x7e, 0x3d, 0x68, 0xf6, 0xfb, 0xba, 0xea, 0x1c, 0xc5, 0x7b, 0x74, 0x04, 0x20, 0xd5, 0x28, 0xe6, + 0x78, 0x38, 0x57, 0x9d, 0xa7, 0x28, 0x8f, 0xf6, 0x21, 0xe3, 0x41, 0xc6, 0x99, 0xcf, 0xd8, 0xaa, + 0xb3, 0xab, 0xe3, 0xe8, 0x11, 0x14, 0x82, 0x50, 0x69, 0xbe, 0xc7, 0x69, 0xd5, 0x39, 0xcb, 0xde, + 0x44, 0x7f, 0x10, 0x37, 0xcd, 0xf7, 0x58, 0xad, 0x3a, 0x67, 0x15, 0x1c, 0xbd, 0x0f, 0x0b, 0xe3, + 0xb8, 0x66, 0xfe, 0xb7, 0x6b, 0xd5, 0x0b, 0xd4, 0xc5, 0x51, 0x1f, 0xd0, 0x04, 0x3c, 0x74, 0x81, + 0xa7, 0x6c, 0xd5, 0x8b, 0x94, 0xc9, 0x51, 0x07, 0x4a, 0xa3, 0x20, 0x63, 0xde, 0xa7, 0x6d, 0xd5, + 0xb9, 0x4b, 0xe6, 0x6c, 0x94, 0x20, 0x38, 0x99, 0xf7, 0xa9, 0x5b, 0x75, 0xee, 0x0a, 0x3a, 0x3d, + 0xb7, 0x02, 0x5f, 0xcc, 0x7c, 0xfa, 0x56, 0x9d, 0x5d, 0x49, 0x47, 0x0f, 0xa1, 0x10, 0xfc, 0x89, + 0x3a, 0xdf, 0x4b, 0xb8, 0xea, 0xec, 0x1a, 0x3b, 0x7a, 0x17, 0xf2, 0x81, 0x1f, 0xa3, 0x73, 0xbd, + 0x89, 0x9b, 0x47, 0xf1, 0x3b, 0x90, 0xf5, 0xff, 0x94, 0xce, 0x7e, 0x1f, 0x37, 0x87, 0xca, 0xad, + 0xcd, 0x2f, 0xbf, 0x59, 0x8e, 0x7e, 0xf5, 0xcd, 0x72, 0xf4, 0xef, 0xdf, 0x2c, 0x47, 0x3f, 0xfb, + 0x76, 0x39, 0xf2, 0xd5, 0xb7, 0xcb, 0x91, 0xbf, 0x7c, 0xbb, 0x1c, 0xf9, 0xf1, 0x8d, 0x13, 0xc3, + 0xed, 0x0e, 0x5b, 0x6b, 0x6d, 0xb3, 0xbf, 0xde, 0x36, 0xfb, 0xd8, 0x6d, 0x1d, 0xbb, 0x7e, 0xc3, + 0x7f, 0xd7, 0xdd, 0x4a, 0xd1, 0xbc, 0xe3, 0xce, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x73, 0x48, + 0xdc, 0xce, 0xf7, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3846,6 +4122,9 @@ type ABCIApplicationClient interface { PrepareProposal(ctx context.Context, in *RequestPrepareProposal, opts ...grpc.CallOption) (*ResponsePrepareProposal, error) ProcessProposal(ctx context.Context, in *RequestProcessProposal, opts ...grpc.CallOption) (*ResponseProcessProposal, error) EthQuery(ctx context.Context, in *RequestEthQuery, opts ...grpc.CallOption) (*ResponseEthQuery, error) + PreBeginBlock(ctx context.Context, in *RequestPreBeginBlock, opts ...grpc.CallOption) (*ResponsePrefetch, error) + PreDeliverTx(ctx context.Context, in *RequestPreDeliverTx, opts ...grpc.CallOption) (*ResponsePrefetch, error) + PreCommit(ctx context.Context, in *RequestPreCommit, opts ...grpc.CallOption) (*ResponsePrefetch, error) } type aBCIApplicationClient struct { @@ -4009,6 +4288,33 @@ func (c *aBCIApplicationClient) EthQuery(ctx context.Context, in *RequestEthQuer return out, nil } +func (c *aBCIApplicationClient) PreBeginBlock(ctx context.Context, in *RequestPreBeginBlock, opts ...grpc.CallOption) (*ResponsePrefetch, error) { + out := new(ResponsePrefetch) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/PreBeginBlock", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aBCIApplicationClient) PreDeliverTx(ctx context.Context, in *RequestPreDeliverTx, opts ...grpc.CallOption) (*ResponsePrefetch, error) { + out := new(ResponsePrefetch) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/PreDeliverTx", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aBCIApplicationClient) PreCommit(ctx context.Context, in *RequestPreCommit, opts ...grpc.CallOption) (*ResponsePrefetch, error) { + out := new(ResponsePrefetch) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/PreCommit", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ABCIApplicationServer is the server API for ABCIApplication service. type ABCIApplicationServer interface { Echo(context.Context, *RequestEcho) (*ResponseEcho, error) @@ -4028,6 +4334,9 @@ type ABCIApplicationServer interface { PrepareProposal(context.Context, *RequestPrepareProposal) (*ResponsePrepareProposal, error) ProcessProposal(context.Context, *RequestProcessProposal) (*ResponseProcessProposal, error) EthQuery(context.Context, *RequestEthQuery) (*ResponseEthQuery, error) + PreBeginBlock(context.Context, *RequestPreBeginBlock) (*ResponsePrefetch, error) + PreDeliverTx(context.Context, *RequestPreDeliverTx) (*ResponsePrefetch, error) + PreCommit(context.Context, *RequestPreCommit) (*ResponsePrefetch, error) } // UnimplementedABCIApplicationServer can be embedded to have forward compatible implementations. @@ -4085,6 +4394,15 @@ func (*UnimplementedABCIApplicationServer) ProcessProposal(ctx context.Context, func (*UnimplementedABCIApplicationServer) EthQuery(ctx context.Context, req *RequestEthQuery) (*ResponseEthQuery, error) { return nil, status.Errorf(codes.Unimplemented, "method EthQuery not implemented") } +func (*UnimplementedABCIApplicationServer) PreBeginBlock(ctx context.Context, req *RequestPreBeginBlock) (*ResponsePrefetch, error) { + return nil, status.Errorf(codes.Unimplemented, "method PreBeginBlock not implemented") +} +func (*UnimplementedABCIApplicationServer) PreDeliverTx(ctx context.Context, req *RequestPreDeliverTx) (*ResponsePrefetch, error) { + return nil, status.Errorf(codes.Unimplemented, "method PreDeliverTx not implemented") +} +func (*UnimplementedABCIApplicationServer) PreCommit(ctx context.Context, req *RequestPreCommit) (*ResponsePrefetch, error) { + return nil, status.Errorf(codes.Unimplemented, "method PreCommit not implemented") +} func RegisterABCIApplicationServer(s grpc1.Server, srv ABCIApplicationServer) { s.RegisterService(&_ABCIApplication_serviceDesc, srv) @@ -4396,32 +4714,86 @@ func _ABCIApplication_EthQuery_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -var _ABCIApplication_serviceDesc = grpc.ServiceDesc{ - ServiceName: "tendermint.abci.ABCIApplication", - HandlerType: (*ABCIApplicationServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Echo", - Handler: _ABCIApplication_Echo_Handler, - }, - { - MethodName: "Flush", - Handler: _ABCIApplication_Flush_Handler, - }, - { - MethodName: "Info", - Handler: _ABCIApplication_Info_Handler, - }, - { - MethodName: "DeliverTx", - Handler: _ABCIApplication_DeliverTx_Handler, - }, - { - MethodName: "CheckTx", - Handler: _ABCIApplication_CheckTx_Handler, - }, - { - MethodName: "Query", +func _ABCIApplication_PreBeginBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestPreBeginBlock) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ABCIApplicationServer).PreBeginBlock(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tendermint.abci.ABCIApplication/PreBeginBlock", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ABCIApplicationServer).PreBeginBlock(ctx, req.(*RequestPreBeginBlock)) + } + return interceptor(ctx, in, info, handler) +} + +func _ABCIApplication_PreDeliverTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestPreDeliverTx) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ABCIApplicationServer).PreDeliverTx(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tendermint.abci.ABCIApplication/PreDeliverTx", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ABCIApplicationServer).PreDeliverTx(ctx, req.(*RequestPreDeliverTx)) + } + return interceptor(ctx, in, info, handler) +} + +func _ABCIApplication_PreCommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestPreCommit) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ABCIApplicationServer).PreCommit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tendermint.abci.ABCIApplication/PreCommit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ABCIApplicationServer).PreCommit(ctx, req.(*RequestPreCommit)) + } + return interceptor(ctx, in, info, handler) +} + +var _ABCIApplication_serviceDesc = grpc.ServiceDesc{ + ServiceName: "tendermint.abci.ABCIApplication", + HandlerType: (*ABCIApplicationServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Echo", + Handler: _ABCIApplication_Echo_Handler, + }, + { + MethodName: "Flush", + Handler: _ABCIApplication_Flush_Handler, + }, + { + MethodName: "Info", + Handler: _ABCIApplication_Info_Handler, + }, + { + MethodName: "DeliverTx", + Handler: _ABCIApplication_DeliverTx_Handler, + }, + { + MethodName: "CheckTx", + Handler: _ABCIApplication_CheckTx_Handler, + }, + { + MethodName: "Query", Handler: _ABCIApplication_Query_Handler, }, { @@ -4468,6 +4840,18 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{ MethodName: "EthQuery", Handler: _ABCIApplication_EthQuery_Handler, }, + { + MethodName: "PreBeginBlock", + Handler: _ABCIApplication_PreBeginBlock_Handler, + }, + { + MethodName: "PreDeliverTx", + Handler: _ABCIApplication_PreDeliverTx_Handler, + }, + { + MethodName: "PreCommit", + Handler: _ABCIApplication_PreCommit_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "tendermint/abci/types.proto", @@ -4868,6 +5252,75 @@ func (m *Request_EthQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Request_PreBeginBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_PreBeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.PreBeginBlock != nil { + { + size, err := m.PreBeginBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + return len(dAtA) - i, nil +} +func (m *Request_PreDeliverTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_PreDeliverTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.PreDeliverTx != nil { + { + size, err := m.PreDeliverTx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + return len(dAtA) - i, nil +} +func (m *Request_PreCommit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_PreCommit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.PreCommit != nil { + { + size, err := m.PreCommit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + } + return len(dAtA) - i, nil +} func (m *RequestEcho) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5033,12 +5486,12 @@ func (m *RequestInitChain) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - n19, err19 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) - if err19 != nil { - return 0, err19 + n22, err22 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err22 != nil { + return 0, err22 } - i -= n19 - i = encodeVarintTypes(dAtA, i, uint64(n19)) + i -= n22 + i = encodeVarintTypes(dAtA, i, uint64(n22)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -5455,12 +5908,12 @@ func (m *RequestPrepareProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x3a } - n23, err23 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) - if err23 != nil { - return 0, err23 + n26, err26 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err26 != nil { + return 0, err26 } - i -= n23 - i = encodeVarintTypes(dAtA, i, uint64(n23)) + i -= n26 + i = encodeVarintTypes(dAtA, i, uint64(n26)) i-- dAtA[i] = 0x32 if m.Height != 0 { @@ -5543,12 +5996,12 @@ func (m *RequestProcessProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x3a } - n25, err25 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) - if err25 != nil { - return 0, err25 + n28, err28 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err28 != nil { + return 0, err28 } - i -= n25 - i = encodeVarintTypes(dAtA, i, uint64(n25)) + i -= n28 + i = encodeVarintTypes(dAtA, i, uint64(n28)) i-- dAtA[i] = 0x32 if m.Height != 0 { @@ -5629,6 +6082,114 @@ func (m *RequestEthQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RequestPreBeginBlock) 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 *RequestPreBeginBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestPreBeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Hash) > 0 { + i -= len(m.Hash) + copy(dAtA[i:], m.Hash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Hash))) + i-- + dAtA[i] = 0x12 + } + if m.StateNumber != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.StateNumber)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RequestPreDeliverTx) 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 *RequestPreDeliverTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestPreDeliverTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Tx) > 0 { + i -= len(m.Tx) + copy(dAtA[i:], m.Tx) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Tx))) + i-- + dAtA[i] = 0x12 + } + if m.StateIndex != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.StateIndex)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RequestPreCommit) 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 *RequestPreCommit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestPreCommit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.StateIndex != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.StateIndex)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *Response) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6047,6 +6608,29 @@ func (m *Response_EthQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Response_Prefetch) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Response_Prefetch) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Prefetch != nil { + { + size, err := m.Prefetch.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + return len(dAtA) - i, nil +} func (m *ResponseException) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6764,20 +7348,20 @@ func (m *ResponseApplySnapshotChunk) MarshalToSizedBuffer(dAtA []byte) (int, err } } if len(m.RefetchChunks) > 0 { - dAtA49 := make([]byte, len(m.RefetchChunks)*10) - var j48 int + dAtA54 := make([]byte, len(m.RefetchChunks)*10) + var j53 int for _, num := range m.RefetchChunks { for num >= 1<<7 { - dAtA49[j48] = uint8(uint64(num)&0x7f | 0x80) + dAtA54[j53] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j48++ + j53++ } - dAtA49[j48] = uint8(num) - j48++ + dAtA54[j53] = uint8(num) + j53++ } - i -= j48 - copy(dAtA[i:], dAtA49[:j48]) - i = encodeVarintTypes(dAtA, i, uint64(j48)) + i -= j53 + copy(dAtA[i:], dAtA54[:j53]) + i = encodeVarintTypes(dAtA, i, uint64(j53)) i-- dAtA[i] = 0x12 } @@ -6898,7 +7482,7 @@ func (m *ResponseEthQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *CommitInfo) Marshal() (dAtA []byte, err error) { +func (m *ResponsePrefetch) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -6908,32 +7492,67 @@ func (m *CommitInfo) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *CommitInfo) MarshalTo(dAtA []byte) (int, error) { +func (m *ResponsePrefetch) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CommitInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ResponsePrefetch) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Votes) > 0 { - for iNdEx := len(m.Votes) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Votes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTypes(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if m.Round != 0 { - i = encodeVarintTypes(dAtA, i, uint64(m.Round)) + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *CommitInfo) 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 *CommitInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CommitInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Votes) > 0 { + for iNdEx := len(m.Votes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Votes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Round != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Round)) i-- dAtA[i] = 0x8 } @@ -7328,12 +7947,12 @@ func (m *Misbehavior) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x28 } - n54, err54 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) - if err54 != nil { - return 0, err54 + n59, err59 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err59 != nil { + return 0, err59 } - i -= n54 - i = encodeVarintTypes(dAtA, i, uint64(n54)) + i -= n59 + i = encodeVarintTypes(dAtA, i, uint64(n59)) i-- dAtA[i] = 0x22 if m.Height != 0 { @@ -7638,6 +8257,42 @@ func (m *Request_EthQuery) Size() (n int) { } return n } +func (m *Request_PreBeginBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PreBeginBlock != nil { + l = m.PreBeginBlock.Size() + n += 2 + l + sovTypes(uint64(l)) + } + return n +} +func (m *Request_PreDeliverTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PreDeliverTx != nil { + l = m.PreDeliverTx.Size() + n += 2 + l + sovTypes(uint64(l)) + } + return n +} +func (m *Request_PreCommit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PreCommit != nil { + l = m.PreCommit.Size() + n += 2 + l + sovTypes(uint64(l)) + } + return n +} func (m *RequestEcho) Size() (n int) { if m == nil { return 0 @@ -7967,6 +8622,52 @@ func (m *RequestEthQuery) Size() (n int) { return n } +func (m *RequestPreBeginBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.StateNumber != 0 { + n += 1 + sovTypes(uint64(m.StateNumber)) + } + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = m.Header.Size() + n += 1 + l + sovTypes(uint64(l)) + return n +} + +func (m *RequestPreDeliverTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.StateIndex != 0 { + n += 1 + sovTypes(uint64(m.StateIndex)) + } + l = len(m.Tx) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func (m *RequestPreCommit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.StateIndex != 0 { + n += 1 + sovTypes(uint64(m.StateIndex)) + } + return n +} + func (m *Response) Size() (n int) { if m == nil { return 0 @@ -8195,6 +8896,18 @@ func (m *Response_EthQuery) Size() (n int) { } return n } +func (m *Response_Prefetch) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Prefetch != nil { + l = m.Prefetch.Size() + n += 2 + l + sovTypes(uint64(l)) + } + return n +} func (m *ResponseException) Size() (n int) { if m == nil { return 0 @@ -8585,6 +9298,22 @@ func (m *ResponseEthQuery) Size() (n int) { return n } +func (m *ResponsePrefetch) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovTypes(uint64(m.Code)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + func (m *CommitInfo) Size() (n int) { if m == nil { return 0 @@ -9429,6 +10158,111 @@ func (m *Request) Unmarshal(dAtA []byte) error { } m.Value = &Request_EthQuery{v} iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreBeginBlock", 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 + } + v := &RequestPreBeginBlock{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_PreBeginBlock{v} + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreDeliverTx", 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 + } + v := &RequestPreDeliverTx{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_PreDeliverTx{v} + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreCommit", 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 + } + v := &RequestPreCommit{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_PreCommit{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -11479,28 +12313,316 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { m.Hash = []byte{} } iNdEx = postIndex - case 5: - 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 6: + case 5: + 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 6: + 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 7: + 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 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposerAddress", 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.ProposerAddress = append(m.ProposerAddress[:0], dAtA[iNdEx:postIndex]...) + if m.ProposerAddress == nil { + m.ProposerAddress = []byte{} + } + 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 *RequestEthQuery) 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: RequestEthQuery: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestEthQuery: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", 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.Request = append(m.Request[:0], dAtA[iNdEx:postIndex]...) + if m.Request == nil { + m.Request = []byte{} + } + 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 *RequestPreBeginBlock) 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: RequestPreBeginBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestPreBeginBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StateNumber", wireType) + } + m.StateNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.StateNumber |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", 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.Hash = append(m.Hash[:0], dAtA[iNdEx:postIndex]...) + if m.Hash == nil { + m.Hash = []byte{} + } + iNdEx = postIndex + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -11527,15 +12649,65 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NextValidatorsHash", wireType) + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err } - var byteLen int + 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 *RequestPreDeliverTx) 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: RequestPreDeliverTx: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestPreDeliverTx: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StateIndex", wireType) + } + m.StateIndex = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11545,29 +12717,14 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + m.StateIndex |= int64(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 8: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProposerAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -11594,9 +12751,9 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ProposerAddress = append(m.ProposerAddress[:0], dAtA[iNdEx:postIndex]...) - if m.ProposerAddress == nil { - m.ProposerAddress = []byte{} + m.Tx = append(m.Tx[:0], dAtA[iNdEx:postIndex]...) + if m.Tx == nil { + m.Tx = []byte{} } iNdEx = postIndex default: @@ -11620,7 +12777,7 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *RequestEthQuery) Unmarshal(dAtA []byte) error { +func (m *RequestPreCommit) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -11643,17 +12800,17 @@ func (m *RequestEthQuery) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RequestEthQuery: wiretype end group for non-group") + return fmt.Errorf("proto: RequestPreCommit: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RequestEthQuery: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RequestPreCommit: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StateIndex", wireType) } - var byteLen int + m.StateIndex = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11663,26 +12820,11 @@ func (m *RequestEthQuery) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + m.StateIndex |= int64(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.Request = append(m.Request[:0], dAtA[iNdEx:postIndex]...) - if m.Request == nil { - m.Request = []byte{} - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -12363,6 +13505,41 @@ func (m *Response) Unmarshal(dAtA []byte) error { } m.Value = &Response_EthQuery{v} iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prefetch", 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 + } + v := &ResponsePrefetch{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Response_Prefetch{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -14943,6 +16120,107 @@ func (m *ResponseEthQuery) Unmarshal(dAtA []byte) error { } return nil } +func (m *ResponsePrefetch) 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: ResponsePrefetch: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResponsePrefetch: 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 ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", 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.Error = 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 (m *CommitInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/blocksync/reactor_test.go b/blocksync/reactor_test.go index 50bb481c4..2df226340 100644 --- a/blocksync/reactor_test.go +++ b/blocksync/reactor_test.go @@ -104,7 +104,7 @@ func newReactor( stateStore = sm.NewStore(db, sm.StoreOptions{ DiscardABCIResponses: false, }) - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), nil, mp, sm.EmptyEvidencePool{}) if err = stateStore.Save(state); err != nil { panic(err) diff --git a/consensus/byzantine_test.go b/consensus/byzantine_test.go index 2778bfc53..2fec67334 100644 --- a/consensus/byzantine_test.go +++ b/consensus/byzantine_test.go @@ -101,7 +101,7 @@ func TestByzantinePrevoteEquivocation(t *testing.T) { evpool.SetLogger(logger.With("module", "evidence")) // Make State - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, nil, mempool, evpool) cs := NewState(thisConfig.Consensus, state, blockExec, blockStore, mempool, evpool) cs.SetLogger(cs.Logger) // set private validator @@ -598,9 +598,11 @@ func (br *ByzantineReactor) AddPeer(peer p2p.Peer) { br.reactor.sendNewRoundStepMessage(peer) } } + func (br *ByzantineReactor) RemovePeer(peer p2p.Peer, reason interface{}) { br.reactor.RemovePeer(peer, reason) } + func (br *ByzantineReactor) ReceiveEnvelope(e p2p.Envelope) { br.reactor.ReceiveEnvelope(e) } diff --git a/consensus/common_test.go b/consensus/common_test.go index 02235cb2c..b7fe725be 100644 --- a/consensus/common_test.go +++ b/consensus/common_test.go @@ -438,7 +438,7 @@ func newStateWithConfigAndBlockStore( panic(err) } - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, nil, mempool, evpool) cs := NewState(thisConfig.Consensus, state, blockExec, blockStore, mempool, evpool) cs.SetLogger(log.TestingLogger().With("module", "consensus")) cs.SetPrivValidator(pv) diff --git a/consensus/reactor.go b/consensus/reactor.go index 1c5de7f1f..0d85727d5 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -432,7 +432,6 @@ func (conR *Reactor) subscribeToBroadcastEvents() { }); err != nil { conR.Logger.Error("Error adding listener for events", "err", err) } - } func (conR *Reactor) unsubscribeFromBroadcastEvents() { @@ -647,8 +646,8 @@ OUTER_LOOP: } func (conR *Reactor) gossipDataForCatchup(logger log.Logger, rs *cstypes.RoundState, - prs *cstypes.PeerRoundState, ps *PeerState, peer p2p.Peer) { - + prs *cstypes.PeerRoundState, ps *PeerState, peer p2p.Peer, +) { if index, ok := prs.ProposalBlockParts.Not().PickRandom(); ok { // Ensure that the peer's PartSetHeader is correct blockMeta := conR.conS.blockStore.LoadBlockMeta(prs.Height) @@ -702,7 +701,7 @@ func (conR *Reactor) gossipVotesRoutine(peer p2p.Peer, ps *PeerState) { logger := conR.Logger.With("peer", peer) // Simple hack to throttle logs upon sleep. - var sleeping = 0 + sleeping := 0 OUTER_LOOP: for { @@ -776,7 +775,6 @@ func (conR *Reactor) gossipVotesForHeight( prs *cstypes.PeerRoundState, ps *PeerState, ) bool { - // If there are lastCommits to send... if prs.Step == cstypes.RoundStepNewHeight { if ps.PickSendVote(rs.LastCommit) { @@ -832,7 +830,6 @@ func (conR *Reactor) gossipVotesForHeight( // NOTE: `queryMaj23Routine` has a simple crude design since it only comes // into play for liveness when there's a signature DDoS attack happening. func (conR *Reactor) queryMaj23Routine(peer p2p.Peer, ps *PeerState) { - OUTER_LOOP: for { // Manage disconnects from self or peer. @@ -1160,8 +1157,7 @@ func (ps *PeerState) PickVoteToSend(votes types.VoteSetReader) (vote *types.Vote return nil, false } - height, round, votesType, size := - votes.GetHeight(), votes.GetRound(), cmtproto.SignedMsgType(votes.Type()), votes.Size() + height, round, votesType, size := votes.GetHeight(), votes.GetRound(), cmtproto.SignedMsgType(votes.Type()), votes.Size() // Lazily set data using 'votes'. if votes.IsCommit() { diff --git a/consensus/reactor_test.go b/consensus/reactor_test.go index 793f4e29e..255a1539c 100644 --- a/consensus/reactor_test.go +++ b/consensus/reactor_test.go @@ -203,7 +203,7 @@ func TestReactorWithEvidence(t *testing.T) { evpool2 := sm.EmptyEvidencePool{} // Make State - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyAppConnCon, nil, mempool, evpool) cs := NewState(thisConfig.Consensus, state, blockExec, blockStore, mempool, evpool2) cs.SetLogger(log.TestingLogger().With("module", "consensus")) cs.SetPrivValidator(pv) @@ -276,8 +276,10 @@ func TestReactorReceiveDoesNotPanicIfAddPeerHasntBeenCalledYet(t *testing.T) { reactor.ReceiveEnvelope(p2p.Envelope{ ChannelID: StateChannel, Src: peer, - Message: &cmtcons.HasVote{Height: 1, - Round: 1, Index: 1, Type: cmtproto.PrevoteType}, + Message: &cmtcons.HasVote{ + Height: 1, + Round: 1, Index: 1, Type: cmtproto.PrevoteType, + }, }) reactor.AddPeer(peer) }) @@ -302,8 +304,10 @@ func TestReactorReceivePanicsIfInitPeerHasntBeenCalledYet(t *testing.T) { reactor.ReceiveEnvelope(p2p.Envelope{ ChannelID: StateChannel, Src: peer, - Message: &cmtcons.HasVote{Height: 1, - Round: 1, Index: 1, Type: cmtproto.PrevoteType}, + Message: &cmtcons.HasVote{ + Height: 1, + Round: 1, Index: 1, Type: cmtproto.PrevoteType, + }, }) }) } diff --git a/consensus/replay.go b/consensus/replay.go index 43930f631..dbac8a56c 100644 --- a/consensus/replay.go +++ b/consensus/replay.go @@ -496,7 +496,7 @@ func (h *Handshaker) replayBlock(state sm.State, height int64, proxyApp proxy.Ap // Use stubs for both mempool and evidence pool since no transactions nor // evidence are needed here - block already exists. - blockExec := sm.NewBlockExecutor(h.stateStore, h.logger, proxyApp, emptyMempool{}, sm.EmptyEvidencePool{}) + blockExec := sm.NewBlockExecutor(h.stateStore, h.logger, proxyApp, nil, emptyMempool{}, sm.EmptyEvidencePool{}) blockExec.SetEventBus(h.eventBus) var err error diff --git a/consensus/replay_file.go b/consensus/replay_file.go index f164c02cb..3fd066dca 100644 --- a/consensus/replay_file.go +++ b/consensus/replay_file.go @@ -329,7 +329,7 @@ func newConsensusStateForReplay(config cfg.BaseConfig, csConfig *cfg.ConsensusCo } mempool, evpool := emptyMempool{}, sm.EmptyEvidencePool{} - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), nil, mempool, evpool) consensusState := NewState(csConfig, state.Copy(), blockExec, blockStore, mempool, evpool) diff --git a/consensus/replay_test.go b/consensus/replay_test.go index 24e3eb1ab..b3cb98432 100644 --- a/consensus/replay_test.go +++ b/consensus/replay_test.go @@ -799,7 +799,7 @@ func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uin func applyBlock(t *testing.T, stateStore sm.Store, st sm.State, blk *types.Block, proxyApp proxy.AppConns) sm.State { testPartSize := types.BlockPartSizeBytes - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), nil, mempool, evpool) bps, err := blk.MakePartSet(testPartSize) require.NoError(t, err) diff --git a/consensus/state.go b/consensus/state.go index 3dcbc196b..c76b07c5e 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -1201,7 +1201,7 @@ func (cs *State) isProposalComplete() bool { // We really only need to return the parts, but the block is returned for // convenience so we can log the proposal block. // -// NOTE: keep it side-effect free for clarity. +// NOTE: keep it side effect free for clarity. // CONTRACT: cs.privValidator is not nil. func (cs *State) createProposalBlock() (*types.Block, error) { if cs.privValidator == nil { diff --git a/consensus/state_test.go b/consensus/state_test.go index dea48b271..36a8a3d21 100644 --- a/consensus/state_test.go +++ b/consensus/state_test.go @@ -502,7 +502,8 @@ func TestStateLockNoPOL(t *testing.T) { ensurePrevote(voteCh, height, round) // now we're going to enter prevote again, but with invalid args - // and then prevote wait, which should timeout. then wait for precommit + // and then prevote wait, which should time out. + // then wait for precommit ensureNewTimeout(timeoutWaitCh, height, round, cs1.config.Prevote(round).Nanoseconds()) ensurePrecommit(voteCh, height, round) // precommit diff --git a/consensus/wal_generator.go b/consensus/wal_generator.go index fb13bdc58..ec83e2d3f 100644 --- a/consensus/wal_generator.go +++ b/consensus/wal_generator.go @@ -84,7 +84,7 @@ func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int) (err error) { }) mempool := emptyMempool{} evpool := sm.EmptyEvidencePool{} - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), mempool, evpool) + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), proxyApp.Prefetch(), mempool, evpool) consensusState := NewState(config.Consensus, state.Copy(), blockExec, blockStore, mempool, evpool) consensusState.SetLogger(logger) consensusState.SetEventBus(eventBus) diff --git a/node/node.go b/node/node.go index 97caa196f..62eb9519a 100644 --- a/node/node.go +++ b/node/node.go @@ -838,6 +838,7 @@ func NewNode(config *cfg.Config, stateStore, logger.With("module", "state"), proxyApp.Consensus(), + proxyApp.Prefetch(), mempool, evidencePool, sm.BlockExecutorWithMetrics(smMetrics), diff --git a/node/node_test.go b/node/node_test.go index 494242e86..1c279d392 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -305,6 +305,7 @@ func TestCreateProposalBlock(t *testing.T) { stateStore, logger, proxyApp.Consensus(), + proxyApp.Prefetch(), mempool, evidencePool, ) @@ -390,6 +391,7 @@ func TestMaxProposalBlockSize(t *testing.T) { stateStore, logger, proxyApp.Consensus(), + proxyApp.Prefetch(), mempool, sm.EmptyEvidencePool{}, ) diff --git a/proto/tendermint/abci/types.proto b/proto/tendermint/abci/types.proto index 3746944a9..8cd1b6b74 100644 --- a/proto/tendermint/abci/types.proto +++ b/proto/tendermint/abci/types.proto @@ -38,6 +38,9 @@ message Request { RequestPrepareProposal prepare_proposal = 16; RequestProcessProposal process_proposal = 17; RequestEthQuery eth_query = 18; + RequestPreBeginBlock pre_begin_block = 19; + RequestPreDeliverTx pre_deliver_tx = 20; + RequestPreCommit pre_commit = 21; } reserved 4; } @@ -155,6 +158,21 @@ message RequestEthQuery { bytes request = 1; } +message RequestPreBeginBlock { + int64 state_number = 1; + bytes hash = 2; + tendermint.types.Header header = 3 [(gogoproto.nullable) = false]; +} + +message RequestPreDeliverTx { + int64 state_index = 1; + bytes tx = 2; +} + +message RequestPreCommit { + int64 state_index = 1; +} + //---------------------------------------- // Response types @@ -178,6 +196,7 @@ message Response { ResponsePrepareProposal prepare_proposal = 17; ResponseProcessProposal process_proposal = 18; ResponseEthQuery eth_query = 19; + ResponsePrefetch prefetch = 20; } reserved 5; } @@ -329,6 +348,11 @@ message ResponseEthQuery{ bytes response = 4; } +message ResponsePrefetch{ + uint32 code = 1; + string error = 2; +} + //---------------------------------------- // Misc. @@ -459,4 +483,8 @@ service ABCIApplication { rpc ProcessProposal(RequestProcessProposal) returns (ResponseProcessProposal); rpc EthQuery(RequestEthQuery) returns (ResponseEthQuery); + + rpc PreBeginBlock(RequestPreBeginBlock) returns (ResponsePrefetch); + rpc PreDeliverTx(RequestPreDeliverTx) returns (ResponsePrefetch); + rpc PreCommit(RequestPreCommit) returns (ResponsePrefetch); } diff --git a/proxy/app_conn.go b/proxy/app_conn.go index c566cce6b..779641352 100644 --- a/proxy/app_conn.go +++ b/proxy/app_conn.go @@ -9,7 +9,7 @@ import ( "github.com/cometbft/cometbft/abci/types" ) -//go:generate ../scripts/mockery_generate.sh AppConnConsensus|AppConnMempool|AppConnQuery|AppConnSnapshot|AppConnEthQuery +//go:generate ../scripts/mockery_generate.sh AppConnConsensus|AppConnMempool|AppConnQuery|AppConnSnapshot|AppConnEthQuery|AppConnPrefetch //---------------------------------------------------------------------------------------- // Enforce which abci msgs can be sent on a connection at the type level @@ -27,6 +27,12 @@ type AppConnConsensus interface { CommitSync() (*types.ResponseCommit, error) } +type AppConnPrefetch interface { + PreDeliverTxAsync(types.RequestPreDeliverTx) + PreBeginBlockSync(types.RequestPreBeginBlock) error + PreCommitSync(types.RequestPreCommit) error +} + type AppConnMempool interface { SetResponseCallback(abcicli.Callback) Error() error @@ -272,3 +278,32 @@ func (app *appConnEthQuery) Error() error { func (app *appConnEthQuery) EthQuerySync(query types.RequestEthQuery) (*types.ResponseEthQuery, error) { return app.appConn.EthQuerySync(query) } + +// ----------------------------------------------------------------------------------------- +// Implements AppConnPrefetch (subset of abcicli.Client) + +type appConnPrefetch struct { + appConn abcicli.Client +} + +func NewAppConnPrefetch(appConn abcicli.Client) AppConnPrefetch { + return &appConnPrefetch{ + appConn: appConn, + } +} + +func (app *appConnPrefetch) Error() error { + return app.appConn.Error() +} + +func (app *appConnPrefetch) PreDeliverTxAsync(req types.RequestPreDeliverTx) { + app.appConn.PreDeliverTxAsync(req) +} + +func (app *appConnPrefetch) PreBeginBlockSync(req types.RequestPreBeginBlock) error { + return app.appConn.PreBeginBlockSync(req) +} + +func (app *appConnPrefetch) PreCommitSync(req types.RequestPreCommit) error { + return app.appConn.PreCommitSync(req) +} diff --git a/proxy/client.go b/proxy/client.go index 34876b126..a3934d737 100644 --- a/proxy/client.go +++ b/proxy/client.go @@ -22,16 +22,16 @@ type ClientCreator interface { // local proxy uses a mutex on an in-proc app type localClientCreator struct { - mtx *cmtsync.Mutex - app types.Application + mtx *cmtsync.Mutex + app types.Application } // NewLocalClientCreator returns a ClientCreator for the given app, // which will be running locally. func NewLocalClientCreator(app types.Application) ClientCreator { return &localClientCreator{ - mtx: new(cmtsync.Mutex), - app: app, + mtx: new(cmtsync.Mutex), + app: app, } } diff --git a/proxy/mocks/app_conn_prefetch.go b/proxy/mocks/app_conn_prefetch.go new file mode 100644 index 000000000..b83498603 --- /dev/null +++ b/proxy/mocks/app_conn_prefetch.go @@ -0,0 +1,62 @@ +// Code generated by mockery. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + + types "github.com/cometbft/cometbft/abci/types" +) + +// AppConnPrefetch is an autogenerated mock type for the AppConnPrefetch type +type AppConnPrefetch struct { + mock.Mock +} + +// PreBeginBlockSync provides a mock function with given fields: _a0 +func (_m *AppConnPrefetch) PreBeginBlockSync(_a0 types.RequestPreBeginBlock) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(types.RequestPreBeginBlock) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// PreCommitSync provides a mock function with given fields: _a0 +func (_m *AppConnPrefetch) PreCommitSync(_a0 types.RequestPreCommit) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(types.RequestPreCommit) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// PreDeliverTxAsync provides a mock function with given fields: _a0 +func (_m *AppConnPrefetch) PreDeliverTxAsync(_a0 types.RequestPreDeliverTx) { + _m.Called(_a0) +} + +type mockConstructorTestingTNewAppConnPrefetch interface { + mock.TestingT + Cleanup(func()) +} + +// NewAppConnPrefetch creates a new instance of AppConnPrefetch. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +func NewAppConnPrefetch(t mockConstructorTestingTNewAppConnPrefetch) *AppConnPrefetch { + mock := &AppConnPrefetch{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/proxy/multi_app_conn.go b/proxy/multi_app_conn.go index 6b3df1404..a49e7a0dc 100644 --- a/proxy/multi_app_conn.go +++ b/proxy/multi_app_conn.go @@ -11,6 +11,7 @@ import ( const ( connConsensus = "consensus" + connPrefetch = "prefetch" connMempool = "mempool" connQuery = "query" connSnapshot = "snapshot" @@ -27,6 +28,8 @@ type AppConns interface { Mempool() AppConnMempool // Consensus connection Consensus() AppConnConsensus + // Prefetch connection + Prefetch() AppConnPrefetch // Query connection Query() AppConnQuery // Snapshot connection @@ -51,12 +54,14 @@ type multiAppConn struct { metrics *Metrics consensusConn AppConnConsensus + prefetchConn AppConnPrefetch mempoolConn AppConnMempool queryConn AppConnQuery snapshotConn AppConnSnapshot ethQueryConn AppConnEthQuery consensusConnClient abcicli.Client + prefetchConnClient abcicli.Client mempoolConnClient abcicli.Client queryConnClient abcicli.Client snapshotConnClient abcicli.Client @@ -83,6 +88,10 @@ func (app *multiAppConn) Consensus() AppConnConsensus { return app.consensusConn } +func (app *multiAppConn) Prefetch() AppConnPrefetch { + return app.prefetchConn +} + func (app *multiAppConn) Query() AppConnQuery { return app.queryConn } @@ -135,6 +144,14 @@ func (app *multiAppConn) OnStart() error { app.ethQueryConnClient = c app.ethQueryConn = NewAppConnEthQuery(c) + c, err = app.abciClientFor(connPrefetch) + if err != nil { + app.stopAllClients() + return err + } + app.prefetchConnClient = c + app.prefetchConn = NewAppConnPrefetch(c) + // Kill CometBFT if the ABCI application crashes. go app.killTMOnClientError() diff --git a/state/execution.go b/state/execution.go index c2f62692d..7ba60dc69 100644 --- a/state/execution.go +++ b/state/execution.go @@ -3,6 +3,8 @@ package state import ( "errors" "fmt" + "runtime" + "sync" "time" abci "github.com/cometbft/cometbft/abci/types" @@ -15,7 +17,9 @@ import ( "github.com/cometbft/cometbft/types" ) -// ----------------------------------------------------------------------------- +const maxPreExecuteThread = 64 + +//----------------------------------------------------------------------------- // BlockExecutor handles block execution and state updates. // It exposes ApplyBlock(), which validates & executes the block, updates state w/ ABCI responses, // then commits and updates the mempool atomically, then saves state. @@ -26,7 +30,8 @@ type BlockExecutor struct { store Store // execute the app against this - proxyApp proxy.AppConnConsensus + proxyApp proxy.AppConnConsensus + proxyPrefetchApp proxy.AppConnPrefetch // events eventBus types.BlockEventPublisher @@ -55,18 +60,20 @@ func NewBlockExecutor( stateStore Store, logger log.Logger, proxyApp proxy.AppConnConsensus, + proxyPrefetchApp proxy.AppConnPrefetch, mempool mempool.Mempool, evpool EvidencePool, options ...BlockExecutorOption, ) *BlockExecutor { res := &BlockExecutor{ - store: stateStore, - proxyApp: proxyApp, - eventBus: types.NopEventBus{}, - mempool: mempool, - evpool: evpool, - logger: logger, - metrics: NopMetrics(), + store: stateStore, + proxyApp: proxyApp, + proxyPrefetchApp: proxyPrefetchApp, + eventBus: types.NopEventBus{}, + mempool: mempool, + evpool: evpool, + logger: logger, + metrics: NopMetrics(), } for _, option := range options { @@ -99,7 +106,6 @@ func (blockExec *BlockExecutor) CreateProposalBlock( randaoReveal []byte, proposerAddr []byte, ) (*types.Block, error) { - maxBytes := state.ConsensusParams.Block.MaxBytes maxGas := state.ConsensusParams.Block.MaxGas @@ -189,11 +195,21 @@ func (blockExec *BlockExecutor) ValidateBlock(state State, block *types.Block) e func (blockExec *BlockExecutor) ApplyBlock( state State, blockID types.BlockID, block *types.Block, ) (State, int64, error) { - if err := validateBlock(state, block); err != nil { return state, 0, ErrInvalidBlock(err) } + interruptCh := make(chan struct{}) + // do pre execute for cache + var wg sync.WaitGroup + if blockExec.proxyPrefetchApp != nil { + wg.Add(1) + go func() { + defer wg.Done() + blockExec.prefetch(block, interruptCh) + }() + } + startTime := time.Now() abciResponses, err := execBlockOnProxyApp( blockExec.logger, blockExec.proxyApp, block, blockExec.store, state.InitialHeight, @@ -253,8 +269,11 @@ func (blockExec *BlockExecutor) ApplyBlock( elapseTime = time.Since(startTime).Milliseconds() blockExec.metrics.CommitState.Set(float64(elapseTime)) + close(interruptCh) // stop pre-execution + // Update evpool with the latest state. blockExec.evpool.Update(state, block.Evidence.Evidence) + fail.Fail() // XXX // Update the app hash and save the state. @@ -268,8 +287,9 @@ func (blockExec *BlockExecutor) ApplyBlock( fail.Fail() // XXX // Events are fired after everything else. - // NOTE: if we crash between Commit and Save, events wont be fired during replay + // NOTE: if we crash between Commit and Save, events won't be fired during replay fireEvents(blockExec.logger, blockExec.eventBus, block, abciResponses, validatorUpdates) + wg.Wait() return state, retainHeight, nil } @@ -323,7 +343,7 @@ func (blockExec *BlockExecutor) Commit( return res.Data, res.RetainHeight, err } -// --------------------------------------------------------- +//--------------------------------------------------------- // Helper functions for executing blocks and updating state // Executes block's transactions on proxyAppConn. @@ -335,7 +355,7 @@ func execBlockOnProxyApp( store Store, initialHeight int64, ) (*cmtstate.ABCIResponses, error) { - var validTxs, invalidTxs = 0, 0 + validTxs, invalidTxs := 0, 0 txIndex := 0 abciResponses := new(cmtstate.ABCIResponses) @@ -461,7 +481,8 @@ func extendedCommitInfo(c abci.CommitInfo) abci.ExtendedCommitInfo { } func validateValidatorUpdates(abciUpdates []abci.ValidatorUpdate, - params types.ValidatorParams) error { + params types.ValidatorParams, +) error { for _, valUpdate := range abciUpdates { if valUpdate.GetPower() < 0 { return fmt.Errorf("voting power can't be negative %v", valUpdate) @@ -493,7 +514,6 @@ func updateState( abciResponses *cmtstate.ABCIResponses, validatorUpdates []*types.Validator, ) (State, error) { - // Copy the valset so we can apply changes from EndBlock // and update s.LastValidators and s.Validators. nValSet := state.NextValidators.Copy() @@ -609,7 +629,7 @@ func fireEvents( } } -// ---------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------- // Execute block without state. TODO: eliminate // ExecCommitBlock executes and commits a block on the proxyApp without validating or mutating the state. @@ -637,3 +657,93 @@ func ExecCommitBlock( // ResponseCommit has no error or log, just data return res.Data, nil } + +//--------------------------------------------------------- + +func (blockExec *BlockExecutor) prefetch( + block *types.Block, + interruptCh <-chan struct{}, +) { + // 1. calculate preExecuteThread number + txs := block.Txs + if len(txs) < 100 { + return // if txs less than 100, no need to prefetch + } + preExecuteThread := len(txs)/100 + 3 + if preExecuteThread > maxPreExecuteThread { + preExecuteThread = maxPreExecuteThread + } + + // 2. prepare pre-deliver state and execute txs + pbh := block.Header.ToProto() + if pbh == nil { + return + } + + err := blockExec.proxyPrefetchApp.PreBeginBlockSync(abci.RequestPreBeginBlock{ + StateNumber: int64(preExecuteThread), + Hash: block.Hash(), + Header: *pbh, + }) + if err != nil { + blockExec.logger.Error("error in proxyAppConn.PreBeginBlock", "err", err) + return + } + + var wg sync.WaitGroup + txChan := make(chan int, preExecuteThread) + for i := 0; i < preExecuteThread; i++ { + idx := int64(i) + wg.Add(1) + go func() { + defer func() { + wg.Done() + if r := recover(); r != nil { + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + err := fmt.Sprintf("recovered: %v\nstack:\n%v", r, buf) + blockExec.logger.Error("pre-execute panic", "err_log", err) + return + } + }() + + for txIdx := range txChan { + tx := txs[txIdx] + blockExec.proxyPrefetchApp.PreDeliverTxAsync(abci.RequestPreDeliverTx{StateIndex: idx, Tx: tx}) + + select { + case <-interruptCh: + return + default: + } + } + + blockExec.PreCommit(idx, block) + }() + } + + for i := 0; i < len(txs); i++ { + select { + case txChan <- i: + case <-interruptCh: + close(txChan) + wg.Wait() + return + } + } + close(txChan) + wg.Wait() +} + +func (blockExec *BlockExecutor) PreCommit( + stateIndex int64, + block *types.Block, +) { + if err := blockExec.proxyPrefetchApp.PreCommitSync(abci.RequestPreCommit{StateIndex: stateIndex}); err != nil { + blockExec.logger.Error("client error during proxyPrefetchApp.PreCommitSync", "err", err) + return + } + + blockExec.logger.Debug("pre committed state", "height", block.Height, "num_txs", len(block.Txs)) +} diff --git a/state/execution_test.go b/state/execution_test.go index feea38461..f2c81071d 100644 --- a/state/execution_test.go +++ b/state/execution_test.go @@ -58,7 +58,7 @@ func TestApplyBlock(t *testing.T) { mock.Anything, mock.Anything, mock.Anything).Return(nil) - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), nil, mp, sm.EmptyEvidencePool{}) block := makeBlock(state, 1, new(types.Commit)) @@ -231,7 +231,7 @@ func TestBeginBlockByzantineValidators(t *testing.T) { mock.Anything, mock.Anything).Return(nil) - blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), + blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), nil, mp, evpool) block := makeBlock(state, 1, new(types.Commit)) @@ -277,6 +277,7 @@ func TestProcessProposal(t *testing.T) { stateStore, logger, proxyApp.Consensus(), + nil, new(mpmocks.Mempool), sm.EmptyEvidencePool{}, ) @@ -523,6 +524,7 @@ func TestEndBlockValidatorUpdates(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, sm.EmptyEvidencePool{}, ) @@ -618,6 +620,7 @@ func TestEndBlockValidatorUpdatesResultingInEmptySet(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, new(mpmocks.Mempool), sm.EmptyEvidencePool{}, ) @@ -670,6 +673,7 @@ func TestEmptyPrepareProposal(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, sm.EmptyEvidencePool{}, ) @@ -711,6 +715,7 @@ func TestPrepareProposalTxsAllIncluded(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, evpool, ) @@ -762,6 +767,7 @@ func TestPrepareProposalReorderTxs(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, evpool, ) @@ -814,6 +820,7 @@ func TestPrepareProposalErrorOnTooManyTxs(t *testing.T) { stateStore, log.NewNopLogger(), proxyApp.Consensus(), + nil, mp, evpool, ) @@ -862,6 +869,7 @@ func TestPrepareProposalErrorOnPrepareProposalError(t *testing.T) { stateStore, log.NewNopLogger(), proxyApp.Consensus(), + nil, mp, evpool, ) diff --git a/state/validation_test.go b/state/validation_test.go index 639603493..8799fb1b6 100644 --- a/state/validation_test.go +++ b/state/validation_test.go @@ -48,6 +48,7 @@ func TestValidateBlockHeader(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, sm.EmptyEvidencePool{}, ) @@ -135,6 +136,7 @@ func TestValidateBlockCommit(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, sm.EmptyEvidencePool{}, ) @@ -274,6 +276,7 @@ func TestValidateBlockEvidence(t *testing.T) { stateStore, log.TestingLogger(), proxyApp.Consensus(), + nil, mp, evpool, ) From 77ccdc7c320ef060d021f7003ddd23307d086447 Mon Sep 17 00:00:00 2001 From: Roshan Date: Mon, 3 Jul 2023 14:20:56 +0800 Subject: [PATCH 3/9] feat: add block max txs limit and optimize p2p reactors --- consensus/replay_stubs.go | 1 + consensus/state.go | 2 +- mempool/mempool.go | 2 ++ mempool/mocks/mempool.go | 16 +++++++++ mempool/v0/clist_mempool.go | 49 ++++++++++++++++++++++++++ mempool/v0/reactor.go | 69 +++++++++++++++++++++++-------------- mempool/v1/mempool.go | 5 +++ p2p/conn/connection.go | 5 +-- state/execution.go | 2 +- 9 files changed, 121 insertions(+), 30 deletions(-) diff --git a/consensus/replay_stubs.go b/consensus/replay_stubs.go index 5ffb20ad8..93a63cebb 100644 --- a/consensus/replay_stubs.go +++ b/consensus/replay_stubs.go @@ -27,6 +27,7 @@ func (txmp emptyMempool) RemoveTxByKey(txKey types.TxKey) error { return nil } +func (emptyMempool) ReapMaxTxsMaxBytesMaxGas(_ int, _, _ int64) types.Txs { return types.Txs{} } func (emptyMempool) ReapMaxBytesMaxGas(_, _ int64) types.Txs { return types.Txs{} } func (emptyMempool) ReapMaxTxs(n int) types.Txs { return types.Txs{} } func (emptyMempool) Update( diff --git a/consensus/state.go b/consensus/state.go index c76b07c5e..e57e5d2da 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -1134,7 +1134,7 @@ func (cs *State) defaultDecideProposal(height int64, round int32) { // Decide on block if cs.ValidBlock != nil { - // If there is valid block, choose that. + // If there is a valid block, choose that. block, blockParts = cs.ValidBlock, cs.ValidBlockParts } else { // Create a new proposal block from state/txs from the mempool. diff --git a/mempool/mempool.go b/mempool/mempool.go index 244b6d9aa..611144086 100644 --- a/mempool/mempool.go +++ b/mempool/mempool.go @@ -38,6 +38,8 @@ type Mempool interface { // from the mempool. RemoveTxByKey(txKey types.TxKey) error + ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas int64) types.Txs + // ReapMaxBytesMaxGas reaps transactions from the mempool up to maxBytes // bytes total with the condition that the total gasWanted must be less than // maxGas. diff --git a/mempool/mocks/mempool.go b/mempool/mocks/mempool.go index 68a536caa..d9515bb05 100644 --- a/mempool/mocks/mempool.go +++ b/mempool/mocks/mempool.go @@ -91,6 +91,22 @@ func (_m *Mempool) ReapMaxTxs(max int) types.Txs { return r0 } +// ReapMaxTxsMaxBytesMaxGas provides a mock function with given fields: maxTxs, maxBytes, maxGas +func (_m *Mempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes int64, maxGas int64) types.Txs { + ret := _m.Called(maxTxs, maxBytes, maxGas) + + var r0 types.Txs + if rf, ok := ret.Get(0).(func(int, int64, int64) types.Txs); ok { + r0 = rf(maxTxs, maxBytes, maxGas) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(types.Txs) + } + } + + return r0 +} + // RemoveTxByKey provides a mock function with given fields: txKey func (_m *Mempool) RemoveTxByKey(txKey types.TxKey) error { ret := _m.Called(txKey) diff --git a/mempool/v0/clist_mempool.go b/mempool/v0/clist_mempool.go index 9500a3fb4..3899a8fce 100644 --- a/mempool/v0/clist_mempool.go +++ b/mempool/v0/clist_mempool.go @@ -575,6 +575,55 @@ func (mem *CListMempool) ReapMaxTxs(max int) types.Txs { return txs } +// Safe for concurrent use by multiple goroutines. +func (mem *CListMempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas int64) types.Txs { + mem.updateMtx.RLock() + defer mem.updateMtx.RUnlock() + + if maxTxs == 0 { + maxTxs = mem.txs.Len() + } + + var ( + totalTxs int + totalGas int64 + runningSize int64 + ) + + txs := make([]types.Tx, 0, cmtmath.MinInt(mem.txs.Len(), maxTxs)) + for e := mem.txs.Front(); e != nil; e = e.Next() { + totalTxs++ + if totalTxs > maxTxs { + return txs + } + + memTx := e.Value.(*mempoolTx) + + txs = append(txs, memTx.tx) + + dataSize := types.ComputeProtoSizeForTxs([]types.Tx{memTx.tx}) + + // Check total size requirement + if maxBytes > -1 && runningSize+dataSize > maxBytes { + return txs[:len(txs)-1] + } + + runningSize += dataSize + + // Check total gas requirement. + // If maxGas is negative, skip this check. + // Since newTotalGas < masGas, which + // must be non-negative, it follows that this won't overflow. + newTotalGas := totalGas + memTx.gasWanted + if maxGas > -1 && newTotalGas > maxGas { + return txs[:len(txs)-1] + } + totalGas = newTotalGas + } + return txs +} + + // Lock() must be help by the caller during execution. func (mem *CListMempool) Update( height int64, diff --git a/mempool/v0/reactor.go b/mempool/v0/reactor.go index 508d76666..e62cbd4c4 100644 --- a/mempool/v0/reactor.go +++ b/mempool/v0/reactor.go @@ -15,6 +15,8 @@ import ( "github.com/cometbft/cometbft/types" ) +var MempoolPacketChannelSize = 1024 * 200 // 200K messages can be queued + // Reactor handles mempool tx broadcasting amongst peers. // It maintains a map from peer ID to counter, to prevent gossiping txs to the // peers you received it from. @@ -23,6 +25,8 @@ type Reactor struct { config *cfg.MempoolConfig mempool *CListMempool ids *mempoolIDs + + recvCh chan p2p.Envelope } type mempoolIDs struct { @@ -94,6 +98,7 @@ func NewReactor(config *cfg.MempoolConfig, mempool *CListMempool) *Reactor { config: config, mempool: mempool, ids: newMempoolIDs(), + recvCh: make(chan p2p.Envelope, MempoolPacketChannelSize), } memR.BaseReactor = *p2p.NewBaseReactor("Mempool", memR) return memR @@ -116,9 +121,15 @@ func (memR *Reactor) OnStart() error { if !memR.config.Broadcast { memR.Logger.Info("Tx broadcasting is disabled") } + go memR.receiveRoutine() return nil } +// OnStop implements p2p.BaseReactor. +func (memR *Reactor) OnStop() { + close(memR.recvCh) +} + // GetChannels implements Reactor by returning the list of channels for this // reactor. func (memR *Reactor) GetChannels() []*p2p.ChannelDescriptor { @@ -132,7 +143,7 @@ func (memR *Reactor) GetChannels() []*p2p.ChannelDescriptor { return []*p2p.ChannelDescriptor{ { ID: mempool.MempoolChannel, - Priority: 5, + Priority: 1, RecvMessageCapacity: batchMsg.Size(), MessageType: &protomem.Message{}, }, @@ -157,35 +168,41 @@ func (memR *Reactor) RemovePeer(peer p2p.Peer, reason interface{}) { // It adds any received transactions to the mempool. func (memR *Reactor) ReceiveEnvelope(e p2p.Envelope) { memR.Logger.Debug("Receive", "src", e.Src, "chId", e.ChannelID, "msg", e.Message) - switch msg := e.Message.(type) { - case *protomem.Txs: - protoTxs := msg.GetTxs() - if len(protoTxs) == 0 { - memR.Logger.Error("received empty txs from peer", "src", e.Src) - return - } - txInfo := mempool.TxInfo{SenderID: memR.ids.GetForPeer(e.Src)} - if e.Src != nil { - txInfo.SenderP2PID = e.Src.ID() - } + memR.recvCh <- e + + // broadcasting happens from go routines per peer +} - var err error - for _, tx := range protoTxs { - ntx := types.Tx(tx) - err = memR.mempool.CheckTx(ntx, nil, txInfo) - if errors.Is(err, mempool.ErrTxInCache) { - memR.Logger.Debug("Tx already exists in cache", "tx", ntx.String()) - } else if err != nil { - memR.Logger.Info("Could not check tx", "tx", ntx.String(), "err", err) +func (memR *Reactor) receiveRoutine() { + for e := range memR.recvCh { + switch msg := e.Message.(type) { + case *protomem.Txs: + protoTxs := msg.GetTxs() + if len(protoTxs) == 0 { + memR.Logger.Error("received empty txs from peer", "src", e.Src) + return + } + txInfo := mempool.TxInfo{SenderID: memR.ids.GetForPeer(e.Src)} + if e.Src != nil { + txInfo.SenderP2PID = e.Src.ID() } + + var err error + for _, tx := range protoTxs { + ntx := types.Tx(tx) + err = memR.mempool.CheckTx(ntx, nil, txInfo) + if errors.Is(err, mempool.ErrTxInCache) { + memR.Logger.Debug("Tx already exists in cache", "tx", ntx.String()) + } else if err != nil { + memR.Logger.Info("Could not check tx", "tx", ntx.String(), "err", err) + } + } + default: + memR.Logger.Error("unknown message type", "src", e.Src, "chId", e.ChannelID, "msg", e.Message) + memR.Switch.StopPeerForError(e.Src, fmt.Errorf("mempool cannot handle message of type: %T", e.Message)) + return } - default: - memR.Logger.Error("unknown message type", "src", e.Src, "chId", e.ChannelID, "msg", e.Message) - memR.Switch.StopPeerForError(e.Src, fmt.Errorf("mempool cannot handle message of type: %T", e.Message)) - return } - - // broadcasting happens from go routines per peer } // PeerState describes the state of a peer. diff --git a/mempool/v1/mempool.go b/mempool/v1/mempool.go index 301109c36..a79f2af3b 100644 --- a/mempool/v1/mempool.go +++ b/mempool/v1/mempool.go @@ -312,6 +312,11 @@ func (txmp *TxMempool) allEntriesSorted() []*WrappedTx { return all } +func (txmp *TxMempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas int64) types.Txs { + // TODO implement me + panic("implement me") +} + // ReapMaxBytesMaxGas returns a slice of valid transactions that fit within the // size and gas constraints. The results are ordered by nonincreasing priority, // with ties broken by increasing order of arrival. Reaping transactions does diff --git a/p2p/conn/connection.go b/p2p/conn/connection.go index 8396a9037..263a577dd 100644 --- a/p2p/conn/connection.go +++ b/p2p/conn/connection.go @@ -851,8 +851,9 @@ func (ch *Channel) writePacketMsgTo(w io.Writer) (n int, err error) { return } -// Handles incoming PacketMsgs. It returns a message bytes if message is -// complete. NOTE message bytes may change on next call to recvPacketMsg. +// Handles incoming PacketMsgs. +// It returns a message bytes if the message is complete. +// NOTE message bytes may change on the next call to recvPacketMsg. // Not goroutine-safe func (ch *Channel) recvPacketMsg(packet tmp2p.PacketMsg) ([]byte, error) { ch.Logger.Debug("Read PacketMsg", "conn", ch.conn, "packet", packet) diff --git a/state/execution.go b/state/execution.go index 7ba60dc69..fef1c54a9 100644 --- a/state/execution.go +++ b/state/execution.go @@ -114,7 +114,7 @@ func (blockExec *BlockExecutor) CreateProposalBlock( // Fetch a limited amount of valid txs maxDataBytes := types.MaxDataBytes(maxBytes, evSize, state.Validators.Size()) - txs := blockExec.mempool.ReapMaxBytesMaxGas(maxDataBytes, maxGas) + txs := blockExec.mempool.ReapMaxTxsMaxBytesMaxGas(2400, maxDataBytes, maxGas) block := state.MakeBlock(height, txs, commit, evidence, randaoReveal, proposerAddr) localLastCommit := buildLastCommitInfo(block, blockExec.store, state.InitialHeight) From 4f3525a57bb1d81231789c23d7c5fc54d2cb4508 Mon Sep 17 00:00:00 2001 From: j75689 Date: Wed, 28 Jun 2023 17:12:56 +0800 Subject: [PATCH 4/9] feat: support custom db options --- go.mod | 26 ++++++++++----------- go.sum | 64 ++++++++++++++++++++++++---------------------------- node/node.go | 13 +++++++++++ 3 files changed, 55 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index d1d14c9a4..21e9662ae 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/go-kit/log v0.2.1 github.com/go-logfmt/logfmt v0.5.1 github.com/gofrs/uuid v4.3.0+incompatible - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/golangci/golangci-lint v1.50.1 github.com/google/orderedcode v0.0.1 github.com/google/uuid v1.3.0 @@ -33,10 +33,10 @@ require ( github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa github.com/spf13/cobra v1.6.1 github.com/spf13/viper v1.13.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.4 golang.org/x/crypto v0.5.0 - golang.org/x/net v0.7.0 - google.golang.org/grpc v1.52.0 + golang.org/x/net v0.9.0 + google.golang.org/grpc v1.56.1 ) require ( @@ -57,7 +57,7 @@ require ( github.com/prysmaticlabs/prysm v0.0.0-20220124113610-e26cde5e091b github.com/vektra/mockery/v2 v2.14.0 gonum.org/v1/gonum v0.8.2 - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 + google.golang.org/protobuf v1.30.0 ) require ( @@ -113,9 +113,6 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/esimonov/ifshort v1.0.4 // indirect github.com/ettle/strcase v0.1.1 // indirect - github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect - github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect - github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/fatih/color v1.13.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/ferranbt/fastssz v0.0.0-20210905181407-59cf6761a7d5 // indirect @@ -189,6 +186,7 @@ require ( github.com/ldez/gomoddirectives v0.2.3 // indirect github.com/ldez/tagliatelle v0.3.1 // indirect github.com/leonklingele/grouper v1.1.0 // indirect + github.com/linxGnu/grocksdb v1.7.16 // indirect github.com/lufeee/execinquery v1.2.1 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/maratori/testableexamples v1.0.0 // indirect @@ -262,7 +260,6 @@ require ( github.com/subosito/gotenv v1.4.1 // indirect github.com/supranational/blst v0.3.5 // indirect github.com/tdakkota/asciicheck v0.1.1 // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect @@ -277,7 +274,7 @@ require ( github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect gitlab.com/bosi/decorder v0.2.3 // indirect - go.etcd.io/bbolt v1.3.6 // indirect + go.etcd.io/bbolt v1.3.7 // indirect go.opencensus.io v0.23.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.3 // indirect go.opentelemetry.io/otel v1.11.0 // indirect @@ -289,11 +286,11 @@ require ( golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -310,4 +307,5 @@ replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.23.0 github.com/btcsuite/btcd/btcec/v2 => github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/btcsuite/btcd/btcutil => github.com/btcsuite/btcd/btcutil v1.1.2 + github.com/cometbft/cometbft-db => github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6 ) diff --git a/go.sum b/go.sum index 03594bc9e..ffa5da07b 100644 --- a/go.sum +++ b/go.sum @@ -24,7 +24,7 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -32,8 +32,8 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/compute v1.13.0 h1:AYrLkB8NPdDRslNp4Jxmzrhdr03fUAIDbiGFjLWowoU= -cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -247,10 +247,9 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= @@ -362,6 +361,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= github.com/ethereum/go-ethereum v1.10.13 h1:DEYFP9zk+Gruf3ae1JOJVhNmxK28ee+sMELPLgYTXpA= @@ -369,12 +369,6 @@ github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQ github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= @@ -549,8 +543,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD 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 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -785,6 +780,8 @@ github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHn github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= github.com/ipfs/go-log/v2 v2.4.0/go.mod h1:nPZnh7Cj7lwS3LpRU5Mwr2ol1c2gXIEXuF6aywqrtmo= +github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6 h1:e/YXEUJSTE5xiY+uC9QpKRp7gU+arFl79aFySUxK608= +github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6/go.mod h1:ey1CiK4bYo1RBNJLRiVbYr5CMdSxci9S/AZRINLtppI= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= @@ -1021,6 +1018,8 @@ github.com/libp2p/go-yamux/v2 v2.3.0/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDY github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= +github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= @@ -1555,8 +1554,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/supranational/blst v0.3.5 h1:/pey7U712GgJBSD1XTiJ5iBqjYIH3QNdrjRoGXlJJ60= @@ -1568,8 +1567,6 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45 github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= @@ -1657,8 +1654,8 @@ gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1867,8 +1864,8 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1883,7 +1880,7 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1968,7 +1965,6 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2018,15 +2014,15 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2038,8 +2034,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2245,8 +2241,8 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210426193834-eac7f76ac494/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= @@ -2277,8 +2273,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2294,8 +2290,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= diff --git a/node/node.go b/node/node.go index 62eb9519a..94771d9c0 100644 --- a/node/node.go +++ b/node/node.go @@ -77,6 +77,19 @@ func DefaultDBProvider(ctx *DBContext) (dbm.DB, error) { return dbm.NewDB(ctx.ID, dbType, ctx.Config.DBDir()) } +func DefaultDBProviderWithDBOptions(externalDBOpts map[string]*dbm.NewDatabaseOption) func(ctx *DBContext) (dbm.DB, error) { + if externalDBOpts == nil { + return DefaultDBProvider + } + return func(ctx *DBContext) (dbm.DB, error) { + dbType := dbm.BackendType(ctx.Config.DBBackend) + if dbOpts, ok := externalDBOpts[ctx.ID]; ok { + return dbm.NewDB(ctx.ID, dbType, ctx.Config.DBDir(), dbOpts) + } + return dbm.NewDB(ctx.ID, dbType, ctx.Config.DBDir()) + } +} + // GenesisDocProvider returns a GenesisDoc. // It allows the GenesisDoc to be pulled from sources other than the // filesystem, for instance from a distributed key-value store cluster. From a24eeb4c1f7a4c2fb3e2c07392cdacc9b1c56355 Mon Sep 17 00:00:00 2001 From: Roshan Date: Mon, 3 Jul 2023 14:59:34 +0800 Subject: [PATCH 5/9] fix lint issues --- abci/types/types.go | 11 +- consensus/replay_stubs.go | 4 +- go.mod | 87 ++++++++------- go.sum | 215 +++++++++++++++++++----------------- mempool/v0/clist_mempool.go | 5 +- mempool/v0/reactor.go | 2 +- proxy/client.go | 8 +- 7 files changed, 170 insertions(+), 162 deletions(-) diff --git a/abci/types/types.go b/abci/types/types.go index 309a51e4d..b97fc168e 100644 --- a/abci/types/types.go +++ b/abci/types/types.go @@ -61,7 +61,6 @@ func (r ResponsePrefetch) IsErr() bool { return r.Code != CodeTypeOK } - //--------------------------------------------------------------------------- // override JSON marshaling so we emit defaults (ie. disable omitempty) @@ -133,9 +132,11 @@ type jsonRoundTripper interface { json.Unmarshaler } -var _ jsonRoundTripper = (*ResponseCommit)(nil) -var _ jsonRoundTripper = (*ResponseQuery)(nil) -var _ jsonRoundTripper = (*ResponseDeliverTx)(nil) -var _ jsonRoundTripper = (*ResponseCheckTx)(nil) +var ( + _ jsonRoundTripper = (*ResponseCommit)(nil) + _ jsonRoundTripper = (*ResponseQuery)(nil) + _ jsonRoundTripper = (*ResponseDeliverTx)(nil) + _ jsonRoundTripper = (*ResponseCheckTx)(nil) +) var _ jsonRoundTripper = (*EventAttribute)(nil) diff --git a/consensus/replay_stubs.go b/consensus/replay_stubs.go index 93a63cebb..e77ef322d 100644 --- a/consensus/replay_stubs.go +++ b/consensus/replay_stubs.go @@ -28,8 +28,8 @@ func (txmp emptyMempool) RemoveTxByKey(txKey types.TxKey) error { } func (emptyMempool) ReapMaxTxsMaxBytesMaxGas(_ int, _, _ int64) types.Txs { return types.Txs{} } -func (emptyMempool) ReapMaxBytesMaxGas(_, _ int64) types.Txs { return types.Txs{} } -func (emptyMempool) ReapMaxTxs(n int) types.Txs { return types.Txs{} } +func (emptyMempool) ReapMaxBytesMaxGas(_, _ int64) types.Txs { return types.Txs{} } +func (emptyMempool) ReapMaxTxs(n int) types.Txs { return types.Txs{} } func (emptyMempool) Update( _ int64, _ types.Txs, diff --git a/go.mod b/go.mod index 21e9662ae..185a2a735 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/go-logfmt/logfmt v0.5.1 github.com/gofrs/uuid v4.3.0+incompatible github.com/golang/protobuf v1.5.3 - github.com/golangci/golangci-lint v1.50.1 + github.com/golangci/golangci-lint v1.51.2 github.com/google/orderedcode v0.0.1 github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 @@ -61,8 +61,9 @@ require ( ) require ( - 4d63.com/gochecknoglobals v0.1.0 // indirect - github.com/Abirdcfly/dupword v0.0.7 // indirect + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + github.com/Abirdcfly/dupword v0.0.9 // indirect github.com/Antonboom/errname v0.1.7 // indirect github.com/Antonboom/nilnil v0.1.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect @@ -76,12 +77,12 @@ require ( github.com/acomagu/bufpipe v1.0.3 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/ashanbrown/forbidigo v1.3.0 // indirect + github.com/ashanbrown/forbidigo v1.4.0 // indirect github.com/ashanbrown/makezero v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bkielbasa/cyclop v1.2.0 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v3 v3.3.0 // indirect + github.com/bombsimon/wsl/v3 v3.4.0 // indirect github.com/breml/bidichk v0.2.3 // indirect github.com/breml/errchkjson v0.3.0 // indirect github.com/bufbuild/connect-go v1.0.0 // indirect @@ -90,7 +91,7 @@ require ( github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/charithe/durationcheck v0.0.9 // indirect - github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 // indirect + github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 // indirect github.com/cloudflare/circl v1.1.0 // indirect github.com/containerd/containerd v1.6.8 // indirect github.com/containerd/continuity v0.3.0 // indirect @@ -98,7 +99,7 @@ require ( github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/curioswitch/go-reassign v0.2.0 // indirect - github.com/daixiang0/gci v0.8.1 // indirect + github.com/daixiang0/gci v0.9.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect @@ -113,26 +114,26 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/esimonov/ifshort v1.0.4 // indirect github.com/ettle/strcase v0.1.1 // indirect - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.14.1 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/ferranbt/fastssz v0.0.0-20210905181407-59cf6761a7d5 // indirect github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/go-chi/chi/v5 v5.0.7 // indirect - github.com/go-critic/go-critic v0.6.5 // indirect + github.com/go-critic/go-critic v0.6.7 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.4.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-toolsmith/astcast v1.0.0 // indirect - github.com/go-toolsmith/astcopy v1.0.2 // indirect - github.com/go-toolsmith/astequal v1.0.3 // indirect - github.com/go-toolsmith/astfmt v1.0.0 // indirect - github.com/go-toolsmith/astp v1.0.0 // indirect - github.com/go-toolsmith/strparse v1.0.0 // indirect - github.com/go-toolsmith/typep v1.0.2 // indirect - github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.0.3 // indirect + github.com/go-toolsmith/astequal v1.1.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -144,12 +145,12 @@ require ( github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect - github.com/golangci/misspell v0.3.5 // indirect + github.com/golangci/misspell v0.4.0 // indirect github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/go-cmp v0.5.9 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect @@ -173,8 +174,9 @@ require ( github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/julz/importas v0.1.0 // indirect + github.com/junk1tm/musttag v0.4.5 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/kisielk/errcheck v1.6.2 // indirect + github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/kkHAIKE/contextcheck v1.1.3 // indirect github.com/klauspost/compress v1.15.11 // indirect @@ -182,10 +184,10 @@ require ( github.com/klauspost/pgzip v1.2.5 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.6 // indirect - github.com/kyoh86/exportloopref v0.1.8 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.3.1 // indirect - github.com/leonklingele/grouper v1.1.0 // indirect + github.com/ldez/tagliatelle v0.4.0 // indirect + github.com/leonklingele/grouper v1.1.1 // indirect github.com/linxGnu/grocksdb v1.7.16 // indirect github.com/lufeee/execinquery v1.2.1 // indirect github.com/magiconair/properties v1.8.6 // indirect @@ -193,11 +195,11 @@ require ( github.com/maratori/testpackage v1.1.0 // indirect github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.2.4 // indirect + github.com/mgechev/revive v1.2.5 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/sha256-simd v1.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -209,8 +211,9 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.8.3 // indirect + github.com/nishanths/exhaustive v0.9.5 // indirect github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.8.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect @@ -218,38 +221,37 @@ require ( github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect - github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pjbgf/sha1cd v0.2.3 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/profile v1.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pointlander/compress v1.1.1-0.20190518213731-ff44bd196cc3 // indirect github.com/pointlander/jetset v1.0.1-0.20190518214125-eee7eff80bd4 // indirect - github.com/polyfloyd/go-errorlint v1.0.5 // indirect + github.com/polyfloyd/go-errorlint v1.1.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/prysmaticlabs/eth2-types v0.0.0-20210303084904-c9735a06829d // indirect - github.com/quasilyte/go-ruleguard v0.3.18 // indirect - github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f // indirect + github.com/quasilyte/go-ruleguard v0.3.19 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/rs/zerolog v1.27.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/ryancurrah/gomodguard v1.2.4 // indirect - github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect + github.com/ryancurrah/gomodguard v1.3.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.20.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect github.com/satori/go.uuid v1.2.0 // indirect - github.com/securego/gosec/v2 v2.13.1 // indirect + github.com/securego/gosec/v2 v2.15.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/sivchari/containedctx v1.0.2 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect - github.com/sivchari/tenv v1.7.0 // indirect + github.com/sivchari/tenv v1.7.1 // indirect github.com/skeema/knownhosts v1.1.0 // indirect github.com/sonatard/noctx v0.0.1 // indirect - github.com/sourcegraph/go-diff v0.6.1 // indirect + github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -259,12 +261,13 @@ require ( github.com/stretchr/objx v0.5.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/supranational/blst v0.3.5 // indirect + github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect github.com/tdakkota/asciicheck v0.1.1 // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect - github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect + github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect github.com/timonwong/loggercheck v0.9.3 // indirect - github.com/tomarrell/wrapcheck/v2 v2.7.0 // indirect + github.com/tomarrell/wrapcheck/v2 v2.8.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.0.3 // indirect github.com/ultraware/whitespace v0.0.5 // indirect @@ -283,7 +286,7 @@ require ( go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 // indirect - golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 // indirect + golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.7.0 // indirect @@ -296,11 +299,11 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.2.0 // indirect - honnef.co/go/tools v0.3.3 // indirect + honnef.co/go/tools v0.4.2 // indirect mvdan.cc/gofumpt v0.4.0 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect - mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect + mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect ) replace ( diff --git a/go.sum b/go.sum index ffa5da07b..9664b496b 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ -4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0= -4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -54,8 +56,8 @@ dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBr dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -github.com/Abirdcfly/dupword v0.0.7 h1:z14n0yytA3wNO2gpCD/jVtp/acEXPGmYu0esewpBt6Q= -github.com/Abirdcfly/dupword v0.0.7/go.mod h1:K/4M1kj+Zh39d2aotRwypvasonOyAMH1c/IZJzE0dmk= +github.com/Abirdcfly/dupword v0.0.9 h1:MxprGjKq3yDBICXDgEEsyGirIXfMYXkLNT/agPsE1tk= +github.com/Abirdcfly/dupword v0.0.9/go.mod h1:PzmHVLLZ27MvHSzV7eFmMXSFArWXZPZmfuuziuUrf2g= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= @@ -153,8 +155,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc= -github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= +github.com/ashanbrown/forbidigo v1.4.0 h1:spdPbupaSqtWORq1Q4eHBoPBmHtwVyLKwaedbSLc5Sw= +github.com/ashanbrown/forbidigo v1.4.0/go.mod h1:IvgwB5Y4fzqSAj/WVXKWigoTkB0dzI2FBbpKWuh7ph8= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -186,8 +188,8 @@ github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM= -github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= +github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= @@ -230,8 +232,8 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= +github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348 h1:cy5GCEZLUCshCGCRRUjxHrDUqkB4l5cuUt3ShEckQEo= +github.com/chavacava/garif v0.0.0-20221024190013-b3ef35877348/go.mod h1:f/miWtG3SSuTxKsNK3o58H1xl+XV6ZIfbC6p7lPPB8U= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -283,15 +285,14 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cristalhq/acmd v0.8.1/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= -github.com/daixiang0/gci v0.8.1 h1:T4xpSC+hmsi4CSyuYfIJdMZAr9o7xZmHpQVygMghGZ4= -github.com/daixiang0/gci v0.8.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= +github.com/daixiang0/gci v0.9.1 h1:jBrwBmBZTDsGsXiaCTLIe9diotp1X4X64zodFrh7l+c= +github.com/daixiang0/gci v0.9.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -371,8 +372,8 @@ github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/ferranbt/fastssz v0.0.0-20210120143747-11b9eff30ea9/go.mod h1:DyEu2iuLBnb/T51BlsiO3yLYdJC6UbGMrIkqK1KmQxM= @@ -415,8 +416,8 @@ github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1T github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8= github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-critic/go-critic v0.6.5 h1:fDaR/5GWURljXwF8Eh31T2GZNz9X4jeboS912mWF8Uo= -github.com/go-critic/go-critic v0.6.5/go.mod h1:ezfP/Lh7MA6dBNn4c6ab5ALv3sKnZVLx37tr00uuaOY= +github.com/go-critic/go-critic v0.6.7 h1:1evPrElnLQ2LZtJfmNDzlieDhjnq36SLgNzisx06oPM= +github.com/go-critic/go-critic v0.6.7/go.mod h1:fYZUijFdcnxgx6wPjQA2QEjIRaNCT0gO8bhexy6/QmE= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= @@ -463,30 +464,30 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.2 h1:YnWf5Rnh1hUudj11kei53kI57quN/VH6Hp1n+erozn0= -github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.0.3 h1:r0bgSRlMOAgO+BdQnVAcpMSMkrQCnV6ZJmIkrJgcJj0= +github.com/go-toolsmith/astcopy v1.0.3/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.0.3 h1:+LVdyRatFS+XO78SGV4I3TCEA0AC7fKEGma+fH+674o= github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= -github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk= -github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= +github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= @@ -560,15 +561,15 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6 github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.50.1 h1:C829clMcZXEORakZlwpk7M4iDw2XiwxxKaG504SZ9zY= -github.com/golangci/golangci-lint v1.50.1/go.mod h1:AQjHBopYS//oB8xs0y0M/dtxdKHkdhl0RvmjUct0/4w= +github.com/golangci/golangci-lint v1.51.2 h1:yIcsT1X9ZYHdSpeWXRT1ORC/FPGSqDHbHsu9uk4FK7M= +github.com/golangci/golangci-lint v1.51.2/go.mod h1:KH9Q7/3glwpYSknxUgUyLlAv46A8fsSKo1hH2wDvkr8= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo= -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0= +github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc= github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= @@ -634,8 +635,8 @@ github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTV github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U= +github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -644,7 +645,6 @@ github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= @@ -818,7 +818,6 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joonix/log v0.0.0-20200409080653-9c1d2ceb5f1d/go.mod h1:fS54ONkjDV71zS9CDx3V9K21gJg7byKSvI4ajuWFNJw= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -840,6 +839,8 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8 github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/junk1tm/musttag v0.4.5 h1:d+mpJ1vn6WFEVKHwkgJiIedis1u/EawKOuUTygAUtCo= +github.com/junk1tm/musttag v0.4.5/go.mod h1:XkcL/9O6RmD88JBXb+I15nYRl9W4ExhgQeCBEhfMC8U= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= @@ -850,8 +851,8 @@ github.com/kevinms/leakybucket-go v0.0.0-20200115003610-082473db97ca/go.mod h1:p github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= 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/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c= -github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= +github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= +github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw= @@ -895,17 +896,17 @@ github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dq github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM= -github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= +github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c= +github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg= -github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= @@ -1060,7 +1061,6 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -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= @@ -1076,13 +1076,13 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13/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 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA= github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= @@ -1091,8 +1091,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182aff github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.2.4 h1:+2Hd/S8oO2H0Ikq2+egtNwQsVhAeELHjxjIUFX5ajLI= -github.com/mgechev/revive v1.2.4/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= +github.com/mgechev/revive v1.2.5 h1:UF9AR8pOAuwNmhXj2odp4mxv9Nx2qUIwVz8ZsU+Mbec= +github.com/mgechev/revive v1.2.5/go.mod h1:nFOXent79jMTISAfOAasKfy0Z2Ejq0WX7Qn/KAdYopI= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -1210,10 +1210,12 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJ github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.8.3 h1:pw5O09vwg8ZaditDp/nQRqVnrMczSJDxRDJMowvhsrM= -github.com/nishanths/exhaustive v0.8.3/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= +github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME= +github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/nunnatsa/ginkgolinter v0.8.1 h1:/y4o/0hV+ruUHj4xXh89xlFjoaitnI4LnkpuYs02q1c= +github.com/nunnatsa/ginkgolinter v0.8.1/go.mod h1:FYYLtszIdmzCH8XMaMPyxPVXZ7VCaIm55bA+gugx+14= 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= @@ -1234,7 +1236,7 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= +github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1242,7 +1244,7 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= @@ -1293,8 +1295,6 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssy github.com/peterh/liner v1.2.0/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -1320,8 +1320,8 @@ github.com/pointlander/jetset v1.0.1-0.20190518214125-eee7eff80bd4 h1:RHHRCZeaNy github.com/pointlander/jetset v1.0.1-0.20190518214125-eee7eff80bd4/go.mod h1:RdR1j20Aj5pB6+fw6Y9Ur7lMHpegTEjY1vc19hEZL40= github.com/pointlander/peg v1.0.1 h1:mgA/GQE8TeS9MdkU6Xn6iEzBmQUQCNuWD7rHCK6Mjs0= github.com/pointlander/peg v1.0.1/go.mod h1:5hsGDQR2oZI4QoWz0/Kdg3VSVEC31iJw/b7WjqCBGRI= -github.com/polyfloyd/go-errorlint v1.0.5 h1:AHB5JRCjlmelh9RrLxT9sgzpalIwwq4hqE8EkwIwKdY= -github.com/polyfloyd/go-errorlint v1.0.5/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= +github.com/polyfloyd/go-errorlint v1.1.0 h1:VKoEFg5yxSgJ2yFPVhxW7oGz+f8/OVcuMeNvcPIi6Eg= +github.com/polyfloyd/go-errorlint v1.1.0/go.mod h1:Uss7Bc/izYG0leCMRx3WVlrpqWedSZk7V/FUQW6VJ6U= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -1383,15 +1383,10 @@ github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c/go.mod h1: github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20211014160335-757fae4f38c6/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y= github.com/prysmaticlabs/prysm v0.0.0-20220124113610-e26cde5e091b h1:XULhE6PdzCYSe5OEVFhuixNqL3mYVOq/3M+SUGnKr1Y= github.com/prysmaticlabs/prysm v0.0.0-20220124113610-e26cde5e091b/go.mod h1:bFzDfaj4xtisRey9RPkMJOhOJVwmtH3FChV7NPKV1Nk= -github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.18 h1:sd+abO1PEI9fkYennwzHn9kl3nqP6M5vE7FiOzZ+5CE= -github.com/quasilyte/go-ruleguard v0.3.18/go.mod h1:lOIzcYlgxrQ2sGJ735EHXmf/e9MJ516j16K/Ifcttvs= -github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f h1:6Gtn2i04RD0gVyYf2/IUMTIs+qYleBt4zxDqkLTcu4U= -github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc= +github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= @@ -1417,27 +1412,27 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4= -github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= -github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= +github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= +github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= -github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= +github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= 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/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.20.0 h1:K6CXjqqtSYSsuyRDDC7Sjn6vTMLiSJa4ZmDkiokoqtw= -github.com/sashamelentyev/usestdlibvars v1.20.0/go.mod h1:0GaP+ecfZMXShS0A94CJn6aEuPRILv8h/VuWI9n1ygg= +github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0= +github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/schollz/progressbar/v3 v3.3.4/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM= -github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= +github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= +github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -1480,8 +1475,8 @@ github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYI github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= -github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE= -github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= +github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -1494,8 +1489,8 @@ github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ= -github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= +github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= @@ -1554,6 +1549,7 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.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 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= @@ -1564,6 +1560,8 @@ github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= @@ -1577,8 +1575,8 @@ github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw= github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e/go.mod h1:Tu4lItkATkonrYuvtVjG0/rhy15qrNGNTjPdaphtZ/8= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo= +github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI= github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= @@ -1586,8 +1584,8 @@ github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.7.0 h1:J/F8DbSKJC83bAvC6FoZaRjZiZ/iKoueSdrEkmGeacA= -github.com/tomarrell/wrapcheck/v2 v2.7.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= +github.com/tomarrell/wrapcheck/v2 v2.8.0 h1:qDzbir0xmoE+aNxGCPrn+rUSxAX+nG6vREgbbXAR81I= +github.com/tomarrell/wrapcheck/v2 v2.8.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/trailofbits/go-mutexasserts v0.0.0-20200708152505-19999e7d3cef/go.mod h1:+SV/613m53DNAmlXPTWGZhIyt4E/qDvn9g/lOPRiy0A= @@ -1742,6 +1740,7 @@ golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= @@ -1763,8 +1762,8 @@ golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8H golang.org/x/exp v0.0.0-20230131160201-f062dba9d201 h1:BEABXpNXLEz0WxtA+6CQIz2xkg80e+1zrhWyMcq8VzE= golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 h1:Ic/qN6TEifvObMGQy72k0n1LlJr7DjWWEi+MOsDOiSk= -golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1794,6 +1793,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1863,7 +1864,10 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2012,15 +2016,20 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc 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= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2034,6 +2043,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2061,7 +2072,6 @@ golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -2073,7 +2083,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2108,25 +2117,20 @@ golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2136,11 +2140,14 @@ golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0t golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2356,8 +2363,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA= -honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= +honnef.co/go/tools v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc= +honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw= @@ -2376,8 +2383,8 @@ mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wp mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/mempool/v0/clist_mempool.go b/mempool/v0/clist_mempool.go index 3899a8fce..b1848213e 100644 --- a/mempool/v0/clist_mempool.go +++ b/mempool/v0/clist_mempool.go @@ -74,7 +74,6 @@ func NewCListMempool( height int64, options ...CListMempoolOption, ) *CListMempool { - mp := &CListMempool{ config: cfg, proxyAppConn: proxyAppConn, @@ -205,7 +204,6 @@ func (mem *CListMempool) CheckTx( cb func(*abci.Response), txInfo mempool.TxInfo, ) error { - mem.updateMtx.RLock() // use defer to unlock mutex because application (*local client*) might panic defer mem.updateMtx.RUnlock() @@ -585,7 +583,7 @@ func (mem *CListMempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas i } var ( - totalTxs int + totalTxs int totalGas int64 runningSize int64 ) @@ -623,7 +621,6 @@ func (mem *CListMempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas i return txs } - // Lock() must be help by the caller during execution. func (mem *CListMempool) Update( height int64, diff --git a/mempool/v0/reactor.go b/mempool/v0/reactor.go index e62cbd4c4..d8d3aca0f 100644 --- a/mempool/v0/reactor.go +++ b/mempool/v0/reactor.go @@ -15,7 +15,7 @@ import ( "github.com/cometbft/cometbft/types" ) -var MempoolPacketChannelSize = 1024 * 200 // 200K messages can be queued +var MempoolPacketChannelSize = 1024 * 200 // 200K messages can be queued // Reactor handles mempool tx broadcasting amongst peers. // It maintains a map from peer ID to counter, to prevent gossiping txs to the diff --git a/proxy/client.go b/proxy/client.go index a3934d737..34876b126 100644 --- a/proxy/client.go +++ b/proxy/client.go @@ -22,16 +22,16 @@ type ClientCreator interface { // local proxy uses a mutex on an in-proc app type localClientCreator struct { - mtx *cmtsync.Mutex - app types.Application + mtx *cmtsync.Mutex + app types.Application } // NewLocalClientCreator returns a ClientCreator for the given app, // which will be running locally. func NewLocalClientCreator(app types.Application) ClientCreator { return &localClientCreator{ - mtx: new(cmtsync.Mutex), - app: app, + mtx: new(cmtsync.Mutex), + app: app, } } From b1fe86e8eae83e7badfd9358240fe4ced3e50428 Mon Sep 17 00:00:00 2001 From: Roshan Date: Mon, 3 Jul 2023 17:56:52 +0800 Subject: [PATCH 6/9] fix test cases --- mempool/v0/clist_mempool.go | 3 +++ mempool/v0/reactor_test.go | 1 + proxy/multi_app_conn.go | 9 +++++++++ proxy/multi_app_conn_test.go | 10 +++++----- state/execution_test.go | 12 ++++++------ 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/mempool/v0/clist_mempool.go b/mempool/v0/clist_mempool.go index b1848213e..48e05a503 100644 --- a/mempool/v0/clist_mempool.go +++ b/mempool/v0/clist_mempool.go @@ -313,6 +313,9 @@ func (mem *CListMempool) reqResCb( // - resCbFirstTime (lock not held) if tx is valid func (mem *CListMempool) addTx(memTx *mempoolTx) { e := mem.txs.PushBack(memTx) + if e == nil { + panic("failed to push tx into mempool") + } mem.txsMap.Store(memTx.tx.Key(), e) atomic.AddInt64(&mem.txsBytes, int64(len(memTx.tx))) mem.metrics.TxSizeBytes.Observe(float64(len(memTx.tx))) diff --git a/mempool/v0/reactor_test.go b/mempool/v0/reactor_test.go index aa0de1046..62be7504a 100644 --- a/mempool/v0/reactor_test.go +++ b/mempool/v0/reactor_test.go @@ -120,6 +120,7 @@ func TestReactorConcurrency(t *testing.T) { }() // 1. flush the mempool + time.Sleep(50 * time.Millisecond) reactors[1].mempool.Flush() } diff --git a/proxy/multi_app_conn.go b/proxy/multi_app_conn.go index a49e7a0dc..cff320d7e 100644 --- a/proxy/multi_app_conn.go +++ b/proxy/multi_app_conn.go @@ -194,6 +194,10 @@ func (app *multiAppConn) killTMOnClientError() { if err := app.ethQueryConnClient.Error(); err != nil { killFn(connEthQuery, err, app.Logger) } + case <-app.prefetchConnClient.Quit(): + if err := app.prefetchConnClient.Error(); err != nil { + killFn(connPrefetch, err, app.Logger) + } } } @@ -223,6 +227,11 @@ func (app *multiAppConn) stopAllClients() { app.Logger.Error("error while stopping eth query client", "error", err) } } + if app.prefetchConnClient != nil { + if err := app.prefetchConnClient.Stop(); err != nil { + app.Logger.Error("error while stopping prefetch client", "error", err) + } + } } func (app *multiAppConn) abciClientFor(conn string) (abcicli.Client, error) { diff --git a/proxy/multi_app_conn_test.go b/proxy/multi_app_conn_test.go index 5cb0843f6..808f8d7eb 100644 --- a/proxy/multi_app_conn_test.go +++ b/proxy/multi_app_conn_test.go @@ -21,12 +21,12 @@ func TestAppConns_Start_Stop(t *testing.T) { clientCreatorMock := &mocks.ClientCreator{} clientMock := &abcimocks.Client{} - clientMock.On("SetLogger", mock.Anything).Return().Times(5) - clientMock.On("Start").Return(nil).Times(5) - clientMock.On("Stop").Return(nil).Times(5) - clientMock.On("Quit").Return(quitCh).Times(5) + clientMock.On("SetLogger", mock.Anything).Return().Times(6) + clientMock.On("Start").Return(nil).Times(6) + clientMock.On("Stop").Return(nil).Times(6) + clientMock.On("Quit").Return(quitCh).Times(6) - clientCreatorMock.On("NewABCIClient").Return(clientMock, nil).Times(5) + clientCreatorMock.On("NewABCIClient").Return(clientMock, nil).Times(6) appConns := NewAppConns(clientCreatorMock, NopMetrics()) diff --git a/state/execution_test.go b/state/execution_test.go index f2c81071d..8c5dbd618 100644 --- a/state/execution_test.go +++ b/state/execution_test.go @@ -518,7 +518,7 @@ func TestEndBlockValidatorUpdates(t *testing.T) { mock.Anything, mock.Anything, mock.Anything).Return(nil) - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs{}) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs{}) blockExec := sm.NewBlockExecutor( stateStore, @@ -667,7 +667,7 @@ func TestEmptyPrepareProposal(t *testing.T) { mock.Anything, mock.Anything, mock.Anything).Return(nil) - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs{}) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs{}) blockExec := sm.NewBlockExecutor( stateStore, @@ -699,7 +699,7 @@ func TestPrepareProposalTxsAllIncluded(t *testing.T) { txs := test.MakeNTxs(height, 10) mp := &mpmocks.Mempool{} - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs(txs[2:])) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs(txs[2:])) app := abcimocks.NewBaseMock() app.On("PrepareProposal", mock.Anything).Return(abci.ResponsePrepareProposal{ @@ -747,7 +747,7 @@ func TestPrepareProposalReorderTxs(t *testing.T) { txs := test.MakeNTxs(height, 10) mp := &mpmocks.Mempool{} - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs(txs)) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs(txs)) txs = txs[2:] txs = append(txs[len(txs)/2:], txs[:len(txs)/2]...) @@ -803,7 +803,7 @@ func TestPrepareProposalErrorOnTooManyTxs(t *testing.T) { maxDataBytes := types.MaxDataBytes(state.ConsensusParams.Block.MaxBytes, 0, nValidators) txs := test.MakeNTxs(height, maxDataBytes/bytesPerTx+2) // +2 so that tx don't fit mp := &mpmocks.Mempool{} - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs(txs)) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs(txs)) app := abcimocks.NewBaseMock() app.On("PrepareProposal", mock.Anything).Return(abci.ResponsePrepareProposal{ @@ -850,7 +850,7 @@ func TestPrepareProposalErrorOnPrepareProposalError(t *testing.T) { txs := test.MakeNTxs(height, 10) mp := &mpmocks.Mempool{} - mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs(txs)) + mp.On("ReapMaxTxsMaxBytesMaxGas", mock.Anything, mock.Anything, mock.Anything).Return(types.Txs(txs)) cm := &abciclientmocks.Client{} cm.On("SetLogger", mock.Anything).Return() From 66c745312837889be6fcc764e1aaebe4dac4becc Mon Sep 17 00:00:00 2001 From: Roshan Date: Tue, 4 Jul 2023 14:24:36 +0800 Subject: [PATCH 7/9] fix review comments --- consensus/mempool_test.go | 2 +- go.mod | 2 +- go.sum | 4 +-- mempool/mempool.go | 12 ++++----- mempool/mocks/mempool.go | 16 ------------ mempool/v0/bench_test.go | 2 +- mempool/v0/clist_mempool.go | 45 ++------------------------------ mempool/v0/clist_mempool_test.go | 40 +++++++++++++++------------- mempool/v0/reactor.go | 4 +-- mempool/v0/reactor_test.go | 2 +- 10 files changed, 37 insertions(+), 92 deletions(-) diff --git a/consensus/mempool_test.go b/consensus/mempool_test.go index 321756e09..fda47d458 100644 --- a/consensus/mempool_test.go +++ b/consensus/mempool_test.go @@ -173,7 +173,7 @@ func TestMempoolRmBadTx(t *testing.T) { // check for the tx for { - txs := assertMempool(cs.txNotifier).ReapMaxBytesMaxGas(int64(len(txBytes)), -1) + txs := assertMempool(cs.txNotifier).ReapMaxTxsMaxBytesMaxGas(-1, int64(len(txBytes)), -1) if len(txs) == 0 { emptyMempoolCh <- struct{}{} return diff --git a/go.mod b/go.mod index 185a2a735..53bf2af67 100644 --- a/go.mod +++ b/go.mod @@ -310,5 +310,5 @@ replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.23.0 github.com/btcsuite/btcd/btcec/v2 => github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/btcsuite/btcd/btcutil => github.com/btcsuite/btcd/btcutil v1.1.2 - github.com/cometbft/cometbft-db => github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6 + github.com/cometbft/cometbft-db => github.com/bnb-chain/greenfield-cometbft-db v0.0.0-20230704045740-dc62566e0315 ) diff --git a/go.sum b/go.sum index 9664b496b..33977388a 100644 --- a/go.sum +++ b/go.sum @@ -187,6 +187,8 @@ github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbz github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/bnb-chain/greenfield-cometbft-db v0.0.0-20230704045740-dc62566e0315 h1:7+UyWPm2WtVLJ7UAgnoUdjLHm53/1VSAci7UmWvcm34= +github.com/bnb-chain/greenfield-cometbft-db v0.0.0-20230704045740-dc62566e0315/go.mod h1:ey1CiK4bYo1RBNJLRiVbYr5CMdSxci9S/AZRINLtppI= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= @@ -780,8 +782,6 @@ github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHn github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= github.com/ipfs/go-log/v2 v2.4.0/go.mod h1:nPZnh7Cj7lwS3LpRU5Mwr2ol1c2gXIEXuF6aywqrtmo= -github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6 h1:e/YXEUJSTE5xiY+uC9QpKRp7gU+arFl79aFySUxK608= -github.com/j75689/cometbft-db v0.0.0-20230628070814-2ca2ef81dec6/go.mod h1:ey1CiK4bYo1RBNJLRiVbYr5CMdSxci9S/AZRINLtppI= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= diff --git a/mempool/mempool.go b/mempool/mempool.go index 611144086..0a42881f3 100644 --- a/mempool/mempool.go +++ b/mempool/mempool.go @@ -38,15 +38,13 @@ type Mempool interface { // from the mempool. RemoveTxByKey(txKey types.TxKey) error - ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas int64) types.Txs - - // ReapMaxBytesMaxGas reaps transactions from the mempool up to maxBytes - // bytes total with the condition that the total gasWanted must be less than - // maxGas. + // ReapMaxTxsMaxBytesMaxGas reaps transactions from the mempool up to maxTxs + // transactions with the condition that the total bytes must be less than + // maxBytes and the total gasWanted must be less than maxGas. // - // If both maxes are negative, there is no cap on the size of all returned + // If all maxes are negative, there is no cap on the size of all returned // transactions (~ all available transactions). - ReapMaxBytesMaxGas(maxBytes, maxGas int64) types.Txs + ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas int64) types.Txs // ReapMaxTxs reaps up to max transactions from the mempool. If max is // negative, there is no cap on the size of all returned transactions diff --git a/mempool/mocks/mempool.go b/mempool/mocks/mempool.go index d9515bb05..4746a226f 100644 --- a/mempool/mocks/mempool.go +++ b/mempool/mocks/mempool.go @@ -59,22 +59,6 @@ func (_m *Mempool) Lock() { _m.Called() } -// ReapMaxBytesMaxGas provides a mock function with given fields: maxBytes, maxGas -func (_m *Mempool) ReapMaxBytesMaxGas(maxBytes int64, maxGas int64) types.Txs { - ret := _m.Called(maxBytes, maxGas) - - var r0 types.Txs - if rf, ok := ret.Get(0).(func(int64, int64) types.Txs); ok { - r0 = rf(maxBytes, maxGas) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(types.Txs) - } - } - - return r0 -} - // ReapMaxTxs provides a mock function with given fields: max func (_m *Mempool) ReapMaxTxs(max int) types.Txs { ret := _m.Called(max) diff --git a/mempool/v0/bench_test.go b/mempool/v0/bench_test.go index 145836269..a579e7c5c 100644 --- a/mempool/v0/bench_test.go +++ b/mempool/v0/bench_test.go @@ -28,7 +28,7 @@ func BenchmarkReap(b *testing.B) { } b.ResetTimer() for i := 0; i < b.N; i++ { - mp.ReapMaxBytesMaxGas(100000000, 10000000) + mp.ReapMaxTxsMaxBytesMaxGas(-1, 100000000, 10000000) } } diff --git a/mempool/v0/clist_mempool.go b/mempool/v0/clist_mempool.go index 48e05a503..5d6cde17c 100644 --- a/mempool/v0/clist_mempool.go +++ b/mempool/v0/clist_mempool.go @@ -35,7 +35,7 @@ type CListMempool struct { config *config.MempoolConfig // Exclusive mutex for Update method to prevent concurrent execution of - // CheckTx or ReapMaxBytesMaxGas(ReapMaxTxs) methods. + // CheckTx or ReapMaxTxsMaxBytesMaxGas(ReapMaxTxs) methods. updateMtx cmtsync.RWMutex preCheck mempool.PreCheckFunc postCheck mempool.PostCheckFunc @@ -518,47 +518,6 @@ func (mem *CListMempool) notifyTxsAvailable() { } } -// Safe for concurrent use by multiple goroutines. -func (mem *CListMempool) ReapMaxBytesMaxGas(maxBytes, maxGas int64) types.Txs { - mem.updateMtx.RLock() - defer mem.updateMtx.RUnlock() - - var ( - totalGas int64 - runningSize int64 - ) - - // TODO: we will get a performance boost if we have a good estimate of avg - // size per tx, and set the initial capacity based off of that. - // txs := make([]types.Tx, 0, cmtmath.MinInt(mem.txs.Len(), max/mem.avgTxSize)) - txs := make([]types.Tx, 0, mem.txs.Len()) - for e := mem.txs.Front(); e != nil; e = e.Next() { - memTx := e.Value.(*mempoolTx) - - txs = append(txs, memTx.tx) - - dataSize := types.ComputeProtoSizeForTxs([]types.Tx{memTx.tx}) - - // Check total size requirement - if maxBytes > -1 && runningSize+dataSize > maxBytes { - return txs[:len(txs)-1] - } - - runningSize += dataSize - - // Check total gas requirement. - // If maxGas is negative, skip this check. - // Since newTotalGas < masGas, which - // must be non-negative, it follows that this won't overflow. - newTotalGas := totalGas + memTx.gasWanted - if maxGas > -1 && newTotalGas > maxGas { - return txs[:len(txs)-1] - } - totalGas = newTotalGas - } - return txs -} - // Safe for concurrent use by multiple goroutines. func (mem *CListMempool) ReapMaxTxs(max int) types.Txs { mem.updateMtx.RLock() @@ -581,7 +540,7 @@ func (mem *CListMempool) ReapMaxTxsMaxBytesMaxGas(maxTxs int, maxBytes, maxGas i mem.updateMtx.RLock() defer mem.updateMtx.RUnlock() - if maxTxs == 0 { + if maxTxs <= 0 { maxTxs = mem.txs.Len() } diff --git a/mempool/v0/clist_mempool_test.go b/mempool/v0/clist_mempool_test.go index 88b5c7052..28a1255b8 100644 --- a/mempool/v0/clist_mempool_test.go +++ b/mempool/v0/clist_mempool_test.go @@ -118,7 +118,7 @@ func checkTxs(t *testing.T, mp mempool.Mempool, count int, peerID uint16) types. return txs } -func TestReapMaxBytesMaxGas(t *testing.T) { +func TestReapMaxTxsMaxBytesMaxGas(t *testing.T) { app := kvstore.NewApplication() cc := proxy.NewLocalClientCreator(app) mp, cleanup := newMempoolWithApp(cc) @@ -138,29 +138,33 @@ func TestReapMaxBytesMaxGas(t *testing.T) { // each tx has 20 bytes tests := []struct { numTxsToCreate int + maxTxs int maxBytes int64 maxGas int64 expectedNumTxs int }{ - {20, -1, -1, 20}, - {20, -1, 0, 0}, - {20, -1, 10, 10}, - {20, -1, 30, 20}, - {20, 0, -1, 0}, - {20, 0, 10, 0}, - {20, 10, 10, 0}, - {20, 24, 10, 1}, - {20, 240, 5, 5}, - {20, 240, -1, 10}, - {20, 240, 10, 10}, - {20, 240, 15, 10}, - {20, 20000, -1, 20}, - {20, 20000, 5, 5}, - {20, 20000, 30, 20}, + {20, -1, -1, -1, 20}, + {20, -1, -1, 0, 0}, + {20, -1, -1, 10, 10}, + {20, -1, -1, 30, 20}, + {20, -1, 0, -1, 0}, + {20, -1, 0, 10, 0}, + {20, -1, 10, 10, 0}, + {20, -1, 24, 10, 1}, + {20, -1, 240, 5, 5}, + {20, -1, 240, -1, 10}, + {20, -1, 240, 10, 10}, + {20, -1, 240, 15, 10}, + {20, -1, 20000, -1, 20}, + {20, -1, 20000, 5, 5}, + {20, -1, 20000, 30, 20}, + {20, 1, -1, -1, 1}, + {20, 0, -1, -1, 20}, + {20, 10, -1, -1, 10}, } for tcIndex, tt := range tests { checkTxs(t, mp, tt.numTxsToCreate, mempool.UnknownPeerID) - got := mp.ReapMaxBytesMaxGas(tt.maxBytes, tt.maxGas) + got := mp.ReapMaxTxsMaxBytesMaxGas(tt.maxTxs, tt.maxBytes, tt.maxGas) assert.Equal(t, tt.expectedNumTxs, len(got), "Got %d txs, expected %d, tc #%d", len(got), tt.expectedNumTxs, tcIndex) mp.Flush() @@ -426,7 +430,7 @@ func TestSerialReap(t *testing.T) { } reapCheck := func(exp int) { - txs := mp.ReapMaxBytesMaxGas(-1, -1) + txs := mp.ReapMaxTxsMaxBytesMaxGas(-1,-1, -1) require.Equal(t, len(txs), exp, fmt.Sprintf("Expected to reap %v txs but got %v", exp, len(txs))) } diff --git a/mempool/v0/reactor.go b/mempool/v0/reactor.go index d8d3aca0f..caa83a511 100644 --- a/mempool/v0/reactor.go +++ b/mempool/v0/reactor.go @@ -180,7 +180,7 @@ func (memR *Reactor) receiveRoutine() { protoTxs := msg.GetTxs() if len(protoTxs) == 0 { memR.Logger.Error("received empty txs from peer", "src", e.Src) - return + continue } txInfo := mempool.TxInfo{SenderID: memR.ids.GetForPeer(e.Src)} if e.Src != nil { @@ -200,7 +200,7 @@ func (memR *Reactor) receiveRoutine() { default: memR.Logger.Error("unknown message type", "src", e.Src, "chId", e.ChannelID, "msg", e.Message) memR.Switch.StopPeerForError(e.Src, fmt.Errorf("mempool cannot handle message of type: %T", e.Message)) - return + continue } } } diff --git a/mempool/v0/reactor_test.go b/mempool/v0/reactor_test.go index 62be7504a..16d2a9a12 100644 --- a/mempool/v0/reactor_test.go +++ b/mempool/v0/reactor_test.go @@ -120,7 +120,7 @@ func TestReactorConcurrency(t *testing.T) { }() // 1. flush the mempool - time.Sleep(50 * time.Millisecond) + time.Sleep(20 * time.Millisecond) reactors[1].mempool.Flush() } From be0d6692c04199f3981c7e240e5666147dec3911 Mon Sep 17 00:00:00 2001 From: Roshan Date: Tue, 4 Jul 2023 15:31:33 +0800 Subject: [PATCH 8/9] update lint setting --- .github/workflows/lint.yml | 3 ++- .golangci.yml | 13 +++++++++++-- Makefile | 5 ++++- libs/clist/clist.go | 4 ++-- libs/protoio/io_test.go | 6 ++---- mempool/v0/clist_mempool_test.go | 8 ++++---- node/node.go | 10 ++-------- state/txindex/kv/kv_test.go | 6 +++--- statesync/syncer_test.go | 12 ++++++------ test/e2e/runner/main.go | 8 ++------ types/validator_set.go | 6 +++--- votepool/reactor.go | 6 ++---- 12 files changed, 43 insertions(+), 44 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7b932c3c8..af7214a40 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -32,7 +32,8 @@ jobs: go.sum - uses: golangci/golangci-lint-action@v3 with: - version: v1.51 + version: latest + skip-pkg-cache: true args: --timeout 10m github-token: ${{ secrets.github_token }} if: env.GIT_DIFF diff --git a/.golangci.yml b/.golangci.yml index 80e7214b2..50c55aadd 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -2,7 +2,7 @@ linters: enable: - asciicheck - bodyclose - - depguard + # - depguard - dogsled - dupl - errcheck @@ -16,7 +16,7 @@ linters: - govet - ineffassign - misspell - - nakedret + # - nakedret - nolintlint - prealloc - staticcheck @@ -31,6 +31,15 @@ issues: - path: _test\.go linters: - gosec + - text: "unused-parameter:" + linters: + - revive + - text: "empty-block:" + linters: + - revive + - text: "superfluous-else:" + linters: + - revive max-same-issues: 50 linters-settings: diff --git a/Makefile b/Makefile index 982b5c937..67cb4ae7e 100644 --- a/Makefile +++ b/Makefile @@ -269,9 +269,12 @@ format: find . -name '*.go' -type f -not -path "*.git*" -not -name '*.pb.go' -not -name '*pb_test.go' | xargs goimports -w -local github.com/cometbft/cometbft .PHONY: format +golangci_lint_cmd=golangci-lint + lint: @echo "--> Running linter" - @go run github.com/golangci/golangci-lint/cmd/golangci-lint run + @go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest + @$(golangci_lint_cmd) run --timeout=10m .PHONY: lint vulncheck: diff --git a/libs/clist/clist.go b/libs/clist/clist.go index b18306490..b56ce03c2 100644 --- a/libs/clist/clist.go +++ b/libs/clist/clist.go @@ -252,9 +252,9 @@ func newWithMax(maxLength int) *CList { func (l *CList) Len() int { l.mtx.RLock() - len := l.len + length := l.len l.mtx.RUnlock() - return len + return length } func (l *CList) Front() *CElement { diff --git a/libs/protoio/io_test.go b/libs/protoio/io_test.go index c6d3c1065..9a85189c4 100644 --- a/libs/protoio/io_test.go +++ b/libs/protoio/io_test.go @@ -97,10 +97,8 @@ func iotest(writer protoio.WriteCloser, reader protoio.ReadCloser) error { if i != size { panic("not enough messages read") } - if err := reader.Close(); err != nil { - return err - } - return nil + + return reader.Close() } type buffer struct { diff --git a/mempool/v0/clist_mempool_test.go b/mempool/v0/clist_mempool_test.go index 28a1255b8..88d9c5503 100644 --- a/mempool/v0/clist_mempool_test.go +++ b/mempool/v0/clist_mempool_test.go @@ -42,7 +42,8 @@ func newMempoolWithAppMock(cc proxy.ClientCreator, client abciclient.Client) (*C func newMempoolWithAppAndConfigMock(cc proxy.ClientCreator, cfg *config.Config, - client abciclient.Client) (*CListMempool, cleanupFunc) { + client abciclient.Client, +) (*CListMempool, cleanupFunc) { appConnMem := client appConnMem.SetLogger(log.TestingLogger().With("module", "abci-client", "connection", "mempool")) err := appConnMem.Start() @@ -138,7 +139,7 @@ func TestReapMaxTxsMaxBytesMaxGas(t *testing.T) { // each tx has 20 bytes tests := []struct { numTxsToCreate int - maxTxs int + maxTxs int maxBytes int64 maxGas int64 expectedNumTxs int @@ -430,7 +431,7 @@ func TestSerialReap(t *testing.T) { } reapCheck := func(exp int) { - txs := mp.ReapMaxTxsMaxBytesMaxGas(-1,-1, -1) + txs := mp.ReapMaxTxsMaxBytesMaxGas(-1, -1, -1) require.Equal(t, len(txs), exp, fmt.Sprintf("Expected to reap %v txs but got %v", exp, len(txs))) } @@ -639,7 +640,6 @@ func TestMempoolTxsBytes(t *testing.T) { assert.EqualValues(t, 9, mp.SizeBytes()) assert.NoError(t, mp.RemoveTxByKey(types.Tx([]byte{0x06}).Key())) assert.EqualValues(t, 8, mp.SizeBytes()) - } // This will non-deterministically catch some concurrency failures like diff --git a/node/node.go b/node/node.go index 94771d9c0..3807dffea 100644 --- a/node/node.go +++ b/node/node.go @@ -1143,11 +1143,8 @@ func (n *Node) ConfigureRPC() error { Config: *n.config.RPC, }) - if err := rpccore.InitGenesisChunks(); err != nil { - return err - } - return nil + return rpccore.InitGenesisChunks() } func (n *Node) startRPC() ([]net.Listener, error) { @@ -1482,11 +1479,8 @@ func saveGenesisDoc(db dbm.DB, genDoc *types.GenesisDoc) error { if err != nil { return fmt.Errorf("failed to save genesis doc due to marshaling error: %w", err) } - if err := db.SetSync(genesisDocKey, b); err != nil { - return err - } - return nil + return db.SetSync(genesisDocKey, b) } func createAndStartPrivValidatorSocketClient( diff --git a/state/txindex/kv/kv_test.go b/state/txindex/kv/kv_test.go index e55f08eae..c792a8359 100644 --- a/state/txindex/kv/kv_test.go +++ b/state/txindex/kv/kv_test.go @@ -421,11 +421,11 @@ func TestTxSearchOneTxWithMultipleSameTagsButDifferentValues(t *testing.T) { for _, tc := range testCases { results, err := indexer.Search(ctx, query.MustParse(tc.q)) assert.NoError(t, err) - len := 0 + length := 0 if tc.found { - len = 1 + length = 1 } - assert.Len(t, results, len) + assert.Len(t, results, length) assert.True(t, !tc.found || proto.Equal(txResult, results[0])) } diff --git a/statesync/syncer_test.go b/statesync/syncer_test.go index c8a2cdb54..03a41806a 100644 --- a/statesync/syncer_test.go +++ b/statesync/syncer_test.go @@ -124,17 +124,17 @@ func TestSyncer_SyncAny(t *testing.T) { // Both peers report back with snapshots. One of them also returns a snapshot we don't want, in // format 2, which will be rejected by the ABCI application. - new, err := syncer.AddSnapshot(peerA, s) + success, err := syncer.AddSnapshot(peerA, s) require.NoError(t, err) - assert.True(t, new) + assert.True(t, success) - new, err = syncer.AddSnapshot(peerB, s) + success, err = syncer.AddSnapshot(peerB, s) require.NoError(t, err) - assert.False(t, new) + assert.False(t, success) - new, err = syncer.AddSnapshot(peerB, &snapshot{Height: 2, Format: 2, Chunks: 3, Hash: []byte{1}}) + success, err = syncer.AddSnapshot(peerB, &snapshot{Height: 2, Format: 2, Chunks: 3, Hash: []byte{1}}) require.NoError(t, err) - assert.True(t, new) + assert.True(t, success) // We start a sync, with peers sending back chunks when requested. We first reject the snapshot // with height 2 format 2, and accept the snapshot at height 1. diff --git a/test/e2e/runner/main.go b/test/e2e/runner/main.go index e6e5ba4d5..80dd16b25 100644 --- a/test/e2e/runner/main.go +++ b/test/e2e/runner/main.go @@ -287,7 +287,7 @@ func NewCLI() *CLI { Min Block Interval Max Block Interval over a 100 block sampling period. - + Does not run any perturbations. `, RunE: func(cmd *cobra.Command, args []string) error { @@ -327,11 +327,7 @@ Does not run any perturbations. return err } - if err := Cleanup(cli.testnet); err != nil { - return err - } - - return nil + return Cleanup(cli.testnet) }, }) diff --git a/types/validator_set.go b/types/validator_set.go index f6e9eb611..22fdd6d19 100644 --- a/types/validator_set.go +++ b/types/validator_set.go @@ -108,9 +108,9 @@ func (vals *ValidatorSet) IsNilOrEmpty() bool { // CopyIncrementProposerPriority increments ProposerPriority and updates the // proposer on a copy, and returns it. func (vals *ValidatorSet) CopyIncrementProposerPriority(times int32) *ValidatorSet { - copy := vals.Copy() - copy.IncrementProposerPriority(times) - return copy + valCopy := vals.Copy() + valCopy.IncrementProposerPriority(times) + return valCopy } // IncrementProposerPriority increments ProposerPriority of each validator and diff --git a/votepool/reactor.go b/votepool/reactor.go index 49499a188..63b66bb4b 100644 --- a/votepool/reactor.go +++ b/votepool/reactor.go @@ -54,10 +54,8 @@ func (voteR *Reactor) OnStart() error { if err := voteR.BaseReactor.OnStart(); err != nil { return err } - if err := voteR.votePool.Start(); err != nil { - return err - } - return nil + + return voteR.votePool.Start() } // OnStop implements Service. From 28e4a7be551271b74d098b04c42f87220e761d1c Mon Sep 17 00:00:00 2001 From: Roshan Date: Tue, 4 Jul 2023 17:39:19 +0800 Subject: [PATCH 9/9] fix review comments --- config/toml.go | 8 +- proto/tendermint/types/params.pb.go | 147 +++++++++++++++++++++------- proto/tendermint/types/params.proto | 6 +- state/execution.go | 7 +- types/params.go | 11 ++- types/params_test.go | 71 +++++++------- 6 files changed, 169 insertions(+), 81 deletions(-) diff --git a/config/toml.go b/config/toml.go index ad560960a..9ba8d70db 100644 --- a/config/toml.go +++ b/config/toml.go @@ -91,7 +91,7 @@ moniker = "{{ .BaseConfig.Moniker }}" # allows them to catchup quickly by downloading blocks in parallel # and verifying their commits # -# Deprecated: this key will be removed and BlockSync will be enabled +# Deprecated: this key will be removed and BlockSync will be enabled # unconditionally in the next major release. block_sync = {{ .BaseConfig.BlockSyncMode }} @@ -437,7 +437,7 @@ chunk_fetchers = "{{ .StateSync.ChunkFetchers }}" [blocksync] # Block Sync version to use: -# +# # In v0.37, v1 and v2 of the block sync protocols were deprecated. # Please use v0 instead. # @@ -592,9 +592,9 @@ var testGenesisFmt = `{ "initial_height": "1", "consensus_params": { "block": { - "max_bytes": "22020096", + "max_bytes": "3145728", "max_gas": "-1", - "time_iota_ms": "10" + "max_txs": "2400" }, "evidence": { "max_age_num_blocks": "100000", diff --git a/proto/tendermint/types/params.pb.go b/proto/tendermint/types/params.pb.go index 3990bb6e9..0e8202138 100644 --- a/proto/tendermint/types/params.pb.go +++ b/proto/tendermint/types/params.pb.go @@ -105,6 +105,9 @@ type BlockParams struct { // Max gas per block. // Note: must be greater or equal to -1 MaxGas int64 `protobuf:"varint,2,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` + // Max tx nums. + // Note: must be greater than 0 + MaxTxs int64 `protobuf:"varint,3,opt,name=max_txs,json=maxTxs,proto3" json:"max_txs,omitempty"` } func (m *BlockParams) Reset() { *m = BlockParams{} } @@ -154,6 +157,13 @@ func (m *BlockParams) GetMaxGas() int64 { return 0 } +func (m *BlockParams) GetMaxTxs() int64 { + if m != nil { + return m.MaxTxs + } + return 0 +} + // EvidenceParams determine how we handle evidence of malfeasance. type EvidenceParams struct { // Max age of evidence, in blocks. @@ -324,6 +334,7 @@ func (m *VersionParams) GetApp() uint64 { type HashedParams struct { BlockMaxBytes int64 `protobuf:"varint,1,opt,name=block_max_bytes,json=blockMaxBytes,proto3" json:"block_max_bytes,omitempty"` BlockMaxGas int64 `protobuf:"varint,2,opt,name=block_max_gas,json=blockMaxGas,proto3" json:"block_max_gas,omitempty"` + BlockMaxTxs int64 `protobuf:"varint,3,opt,name=block_max_txs,json=blockMaxTxs,proto3" json:"block_max_txs,omitempty"` } func (m *HashedParams) Reset() { *m = HashedParams{} } @@ -373,6 +384,13 @@ func (m *HashedParams) GetBlockMaxGas() int64 { return 0 } +func (m *HashedParams) GetBlockMaxTxs() int64 { + if m != nil { + return m.BlockMaxTxs + } + return 0 +} + func init() { proto.RegisterType((*ConsensusParams)(nil), "tendermint.types.ConsensusParams") proto.RegisterType((*BlockParams)(nil), "tendermint.types.BlockParams") @@ -385,40 +403,41 @@ func init() { func init() { proto.RegisterFile("tendermint/types/params.proto", fileDescriptor_e12598271a686f57) } var fileDescriptor_e12598271a686f57 = []byte{ - // 515 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0xeb, 0xa5, 0x6c, 0xed, 0x5b, 0xba, 0x56, 0x16, 0x12, 0x61, 0x68, 0x49, 0xc9, 0x01, - 0x4d, 0x9a, 0x94, 0x48, 0xf4, 0x04, 0x42, 0x9a, 0x28, 0xa0, 0xf1, 0x47, 0x43, 0x10, 0x21, 0x0e, - 0xbb, 0x44, 0x4e, 0xe3, 0x65, 0xd1, 0xea, 0x38, 0x8a, 0x9d, 0xaa, 0xbd, 0xf1, 0x11, 0x38, 0x72, - 0xdc, 0x11, 0xbe, 0x01, 0x1f, 0x61, 0xc7, 0x1d, 0x39, 0x01, 0x6a, 0x2f, 0x7c, 0x0c, 0x14, 0x27, - 0x21, 0x6b, 0xb7, 0x9b, 0xe3, 0xe7, 0xf7, 0xd8, 0x79, 0x9e, 0x57, 0x86, 0x5d, 0x49, 0xe3, 0x80, - 0xa6, 0x2c, 0x8a, 0xa5, 0x23, 0xe7, 0x09, 0x15, 0x4e, 0x42, 0x52, 0xc2, 0x84, 0x9d, 0xa4, 0x5c, - 0x72, 0xdc, 0xaf, 0x65, 0x5b, 0xc9, 0x3b, 0x77, 0x42, 0x1e, 0x72, 0x25, 0x3a, 0xf9, 0xaa, 0xe0, - 0x76, 0x8c, 0x90, 0xf3, 0x70, 0x42, 0x1d, 0xf5, 0xe5, 0x67, 0x27, 0x4e, 0x90, 0xa5, 0x44, 0x46, - 0x3c, 0x2e, 0x74, 0xeb, 0xf3, 0x06, 0xf4, 0x9e, 0xf3, 0x58, 0xd0, 0x58, 0x64, 0xe2, 0xbd, 0xba, - 0x01, 0x0f, 0xe1, 0x96, 0x3f, 0xe1, 0xe3, 0x33, 0x1d, 0x0d, 0xd0, 0x5e, 0xe7, 0xd1, 0xae, 0xbd, - 0x7e, 0x97, 0x3d, 0xca, 0xe5, 0x82, 0x76, 0x0b, 0x16, 0x3f, 0x85, 0x16, 0x9d, 0x46, 0x01, 0x8d, - 0xc7, 0x54, 0xdf, 0x50, 0xbe, 0xc1, 0x75, 0xdf, 0xcb, 0x92, 0x28, 0xad, 0xff, 0x1d, 0xf8, 0x00, - 0xda, 0x53, 0x32, 0x89, 0x02, 0x22, 0x79, 0xaa, 0x6b, 0xca, 0xfe, 0xe0, 0xba, 0xfd, 0x53, 0x85, - 0x94, 0xfe, 0xda, 0x83, 0x1f, 0xc3, 0xd6, 0x94, 0xa6, 0x22, 0xe2, 0xb1, 0xde, 0x54, 0x76, 0xf3, - 0x06, 0x7b, 0x01, 0x94, 0xe6, 0x8a, 0xb7, 0x5e, 0x43, 0xe7, 0x4a, 0x1e, 0x7c, 0x1f, 0xda, 0x8c, - 0xcc, 0x3c, 0x7f, 0x2e, 0xa9, 0x50, 0x0d, 0x68, 0x6e, 0x8b, 0x91, 0xd9, 0x28, 0xff, 0xc6, 0x77, - 0x61, 0x2b, 0x17, 0x43, 0x22, 0x54, 0x48, 0xcd, 0xdd, 0x64, 0x64, 0x76, 0x48, 0xc4, 0x9b, 0x66, - 0x4b, 0xeb, 0x37, 0xad, 0xef, 0x08, 0xb6, 0x57, 0x33, 0xe2, 0x7d, 0xc0, 0xb9, 0x83, 0x84, 0xd4, - 0x8b, 0x33, 0xe6, 0xa9, 0xb2, 0xaa, 0x73, 0x7b, 0x8c, 0xcc, 0x9e, 0x85, 0xf4, 0x5d, 0xc6, 0xd4, - 0x0f, 0x08, 0x7c, 0x04, 0xfd, 0x0a, 0xae, 0xe6, 0x54, 0x96, 0x79, 0xcf, 0x2e, 0x06, 0x69, 0x57, - 0x83, 0xb4, 0x5f, 0x94, 0xc0, 0xa8, 0x75, 0xf1, 0xcb, 0x6c, 0x7c, 0xfd, 0x6d, 0x22, 0x77, 0xbb, - 0x38, 0xaf, 0x52, 0x56, 0xa3, 0x68, 0xab, 0x51, 0xac, 0x03, 0xe8, 0xad, 0xf5, 0x89, 0x2d, 0xe8, - 0x26, 0x99, 0xef, 0x9d, 0xd1, 0xb9, 0xa7, 0x1a, 0xd3, 0xd1, 0x40, 0xdb, 0x6b, 0xbb, 0x9d, 0x24, - 0xf3, 0xdf, 0xd2, 0xf9, 0xc7, 0x7c, 0xeb, 0x49, 0xeb, 0xc7, 0xb9, 0x89, 0xfe, 0x9e, 0x9b, 0xc8, - 0xda, 0x87, 0xee, 0x4a, 0xa3, 0xb8, 0x0f, 0x1a, 0x49, 0x12, 0x95, 0xad, 0xe9, 0xe6, 0xcb, 0x2b, - 0xf0, 0x31, 0xdc, 0x7e, 0x45, 0xc4, 0x29, 0x0d, 0x4a, 0xf6, 0x21, 0xf4, 0x54, 0x15, 0xde, 0x7a, - 0xd7, 0x5d, 0xb5, 0x7d, 0x54, 0x15, 0x6e, 0x41, 0xb7, 0xe6, 0xea, 0xda, 0x3b, 0x15, 0x75, 0x48, - 0xc4, 0xe8, 0xc3, 0xb7, 0x85, 0x81, 0x2e, 0x16, 0x06, 0xba, 0x5c, 0x18, 0xe8, 0xcf, 0xc2, 0x40, - 0x5f, 0x96, 0x46, 0xe3, 0x72, 0x69, 0x34, 0x7e, 0x2e, 0x8d, 0xc6, 0xf1, 0x30, 0x8c, 0xe4, 0x69, - 0xe6, 0xdb, 0x63, 0xce, 0x9c, 0x31, 0x67, 0x54, 0xfa, 0x27, 0xb2, 0x5e, 0x14, 0x0f, 0x66, 0xfd, - 0xad, 0xf9, 0x9b, 0x6a, 0x7f, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xfc, 0x4b, 0xf8, 0x86, - 0x03, 0x00, 0x00, + // 529 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x93, 0x41, 0x8b, 0xd3, 0x4c, + 0x1c, 0xc6, 0x3b, 0x9b, 0x7d, 0x77, 0xdb, 0x7f, 0xdf, 0x6e, 0xcb, 0x20, 0x58, 0x57, 0x36, 0xad, + 0x39, 0xc8, 0xc2, 0x42, 0x02, 0xf6, 0xa4, 0x08, 0x8b, 0x55, 0x51, 0x90, 0x15, 0x0d, 0xc5, 0x83, + 0x08, 0x61, 0xd2, 0xcc, 0x66, 0xc3, 0x76, 0x32, 0x21, 0x33, 0x29, 0xe9, 0x45, 0xfc, 0x08, 0x1e, + 0x3d, 0xee, 0x51, 0xbf, 0x81, 0x1f, 0x61, 0x8f, 0x7b, 0xf4, 0xa4, 0xd2, 0x5e, 0xfc, 0x18, 0x92, + 0x49, 0xd2, 0x6c, 0xba, 0xde, 0x26, 0xf3, 0xfc, 0x9e, 0xcc, 0xfc, 0x9f, 0x87, 0x81, 0x03, 0x49, + 0x43, 0x8f, 0xc6, 0x2c, 0x08, 0xa5, 0x25, 0x17, 0x11, 0x15, 0x56, 0x44, 0x62, 0xc2, 0x84, 0x19, + 0xc5, 0x5c, 0x72, 0xdc, 0xab, 0x64, 0x53, 0xc9, 0xfb, 0xb7, 0x7c, 0xee, 0x73, 0x25, 0x5a, 0xd9, + 0x2a, 0xe7, 0xf6, 0x75, 0x9f, 0x73, 0x7f, 0x46, 0x2d, 0xf5, 0xe5, 0x26, 0xa7, 0x96, 0x97, 0xc4, + 0x44, 0x06, 0x3c, 0xcc, 0x75, 0xe3, 0xd3, 0x16, 0x74, 0x9f, 0xf2, 0x50, 0xd0, 0x50, 0x24, 0xe2, + 0x8d, 0x3a, 0x01, 0x8f, 0xe0, 0x3f, 0x77, 0xc6, 0xa7, 0xe7, 0x7d, 0x34, 0x44, 0x87, 0xed, 0x07, + 0x07, 0xe6, 0xe6, 0x59, 0xe6, 0x38, 0x93, 0x73, 0xda, 0xce, 0x59, 0xfc, 0x18, 0x9a, 0x74, 0x1e, + 0x78, 0x34, 0x9c, 0xd2, 0xfe, 0x96, 0xf2, 0x0d, 0x6f, 0xfa, 0x9e, 0x17, 0x44, 0x61, 0x5d, 0x3b, + 0xf0, 0x31, 0xb4, 0xe6, 0x64, 0x16, 0x78, 0x44, 0xf2, 0xb8, 0xaf, 0x29, 0xfb, 0xbd, 0x9b, 0xf6, + 0x77, 0x25, 0x52, 0xf8, 0x2b, 0x0f, 0x7e, 0x08, 0xbb, 0x73, 0x1a, 0x8b, 0x80, 0x87, 0xfd, 0x6d, + 0x65, 0x1f, 0xfc, 0xc3, 0x9e, 0x03, 0x85, 0xb9, 0xe4, 0x8d, 0x0f, 0xd0, 0xbe, 0x36, 0x0f, 0xbe, + 0x0b, 0x2d, 0x46, 0x52, 0xc7, 0x5d, 0x48, 0x2a, 0x54, 0x02, 0x9a, 0xdd, 0x64, 0x24, 0x1d, 0x67, + 0xdf, 0xf8, 0x36, 0xec, 0x66, 0xa2, 0x4f, 0x84, 0x1a, 0x52, 0xb3, 0x77, 0x18, 0x49, 0x5f, 0x90, + 0xb5, 0x20, 0x53, 0xa1, 0xae, 0x9f, 0x0b, 0x93, 0x54, 0x18, 0xdf, 0x10, 0xec, 0xd5, 0xc7, 0xc6, + 0x47, 0x80, 0x33, 0x96, 0xf8, 0xd4, 0x09, 0x13, 0xe6, 0xa8, 0xfc, 0xca, 0xa3, 0xba, 0x8c, 0xa4, + 0x4f, 0x7c, 0xfa, 0x3a, 0x61, 0xea, 0x4e, 0x02, 0x9f, 0x40, 0xaf, 0x84, 0xcb, 0xea, 0x8a, 0x7c, + 0xef, 0x98, 0x79, 0xb7, 0x66, 0xd9, 0xad, 0xf9, 0xac, 0x00, 0xc6, 0xcd, 0xcb, 0x9f, 0x83, 0xc6, + 0x97, 0x5f, 0x03, 0x64, 0xef, 0xe5, 0xff, 0x2b, 0x95, 0xfa, 0x74, 0x5a, 0x7d, 0x3a, 0xe3, 0x18, + 0xba, 0x1b, 0x11, 0x63, 0x03, 0x3a, 0x51, 0xe2, 0x3a, 0xe7, 0x74, 0xe1, 0xa8, 0x10, 0xfb, 0x68, + 0xa8, 0x1d, 0xb6, 0xec, 0x76, 0x94, 0xb8, 0xaf, 0xe8, 0x62, 0x92, 0x6d, 0x3d, 0x6a, 0x7e, 0xbf, + 0x18, 0xa0, 0x3f, 0x17, 0x03, 0x64, 0x1c, 0x41, 0xa7, 0x16, 0x32, 0xee, 0x81, 0x46, 0xa2, 0x48, + 0xcd, 0xb6, 0x6d, 0x67, 0xcb, 0x6b, 0xf0, 0x47, 0xf8, 0xff, 0x25, 0x11, 0x67, 0xd4, 0x2b, 0xd8, + 0xfb, 0xd0, 0x55, 0x51, 0x38, 0x9b, 0xf1, 0x77, 0xd4, 0xf6, 0x49, 0xd9, 0x81, 0x01, 0x9d, 0x8a, + 0xab, 0x9a, 0x68, 0x97, 0x54, 0x56, 0x47, 0x8d, 0xa9, 0x4a, 0x59, 0x33, 0x93, 0x54, 0x8c, 0xdf, + 0x7e, 0x5d, 0xea, 0xe8, 0x72, 0xa9, 0xa3, 0xab, 0xa5, 0x8e, 0x7e, 0x2f, 0x75, 0xf4, 0x79, 0xa5, + 0x37, 0xae, 0x56, 0x7a, 0xe3, 0xc7, 0x4a, 0x6f, 0xbc, 0x1f, 0xf9, 0x81, 0x3c, 0x4b, 0x5c, 0x73, + 0xca, 0x99, 0x35, 0xe5, 0x8c, 0x4a, 0xf7, 0x54, 0x56, 0x8b, 0xfc, 0x9d, 0x6d, 0x3e, 0x51, 0x77, + 0x47, 0xed, 0x8f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x38, 0xe4, 0x49, 0xec, 0xbd, 0x03, 0x00, + 0x00, } func (this *ConsensusParams) Equal(that interface{}) bool { @@ -479,6 +498,9 @@ func (this *BlockParams) Equal(that interface{}) bool { if this.MaxGas != that1.MaxGas { return false } + if this.MaxTxs != that1.MaxTxs { + return false + } return true } func (this *EvidenceParams) Equal(that interface{}) bool { @@ -589,6 +611,9 @@ func (this *HashedParams) Equal(that interface{}) bool { if this.BlockMaxGas != that1.BlockMaxGas { return false } + if this.BlockMaxTxs != that1.BlockMaxTxs { + return false + } return true } func (m *ConsensusParams) Marshal() (dAtA []byte, err error) { @@ -682,6 +707,11 @@ func (m *BlockParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.MaxTxs != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.MaxTxs)) + i-- + dAtA[i] = 0x18 + } if m.MaxGas != 0 { i = encodeVarintParams(dAtA, i, uint64(m.MaxGas)) i-- @@ -816,6 +846,11 @@ func (m *HashedParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.BlockMaxTxs != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.BlockMaxTxs)) + i-- + dAtA[i] = 0x18 + } if m.BlockMaxGas != 0 { i = encodeVarintParams(dAtA, i, uint64(m.BlockMaxGas)) i-- @@ -969,6 +1004,9 @@ func (m *BlockParams) Size() (n int) { if m.MaxGas != 0 { n += 1 + sovParams(uint64(m.MaxGas)) } + if m.MaxTxs != 0 { + n += 1 + sovParams(uint64(m.MaxTxs)) + } return n } @@ -1028,6 +1066,9 @@ func (m *HashedParams) Size() (n int) { if m.BlockMaxGas != 0 { n += 1 + sovParams(uint64(m.BlockMaxGas)) } + if m.BlockMaxTxs != 0 { + n += 1 + sovParams(uint64(m.BlockMaxTxs)) + } return n } @@ -1298,6 +1339,25 @@ func (m *BlockParams) Unmarshal(dAtA []byte) error { break } } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxTxs", wireType) + } + m.MaxTxs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxTxs |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) @@ -1658,6 +1718,25 @@ func (m *HashedParams) Unmarshal(dAtA []byte) error { break } } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockMaxTxs", wireType) + } + m.BlockMaxTxs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockMaxTxs |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) diff --git a/proto/tendermint/types/params.proto b/proto/tendermint/types/params.proto index 66963eec4..ae3dc3142 100644 --- a/proto/tendermint/types/params.proto +++ b/proto/tendermint/types/params.proto @@ -25,8 +25,9 @@ message BlockParams { // Max gas per block. // Note: must be greater or equal to -1 int64 max_gas = 2; - - reserved 3; // was TimeIotaMs see https://github.com/cometbft/cometbft/pull/5792 + // Max tx nums. + // Note: must be greater than 0 + int64 max_txs = 3; } // EvidenceParams determine how we handle evidence of malfeasance. @@ -74,4 +75,5 @@ message VersionParams { message HashedParams { int64 block_max_bytes = 1; int64 block_max_gas = 2; + int64 block_max_txs = 3; } diff --git a/state/execution.go b/state/execution.go index fef1c54a9..c405889af 100644 --- a/state/execution.go +++ b/state/execution.go @@ -106,6 +106,7 @@ func (blockExec *BlockExecutor) CreateProposalBlock( randaoReveal []byte, proposerAddr []byte, ) (*types.Block, error) { + maxTxs := state.ConsensusParams.Block.MaxTxs maxBytes := state.ConsensusParams.Block.MaxBytes maxGas := state.ConsensusParams.Block.MaxGas @@ -114,7 +115,7 @@ func (blockExec *BlockExecutor) CreateProposalBlock( // Fetch a limited amount of valid txs maxDataBytes := types.MaxDataBytes(maxBytes, evSize, state.Validators.Size()) - txs := blockExec.mempool.ReapMaxTxsMaxBytesMaxGas(2400, maxDataBytes, maxGas) + txs := blockExec.mempool.ReapMaxTxsMaxBytesMaxGas(int(maxTxs), maxDataBytes, maxGas) block := state.MakeBlock(height, txs, commit, evidence, randaoReveal, proposerAddr) localLastCommit := buildLastCommitInfo(block, blockExec.store, state.InitialHeight) @@ -201,11 +202,8 @@ func (blockExec *BlockExecutor) ApplyBlock( interruptCh := make(chan struct{}) // do pre execute for cache - var wg sync.WaitGroup if blockExec.proxyPrefetchApp != nil { - wg.Add(1) go func() { - defer wg.Done() blockExec.prefetch(block, interruptCh) }() } @@ -289,7 +287,6 @@ func (blockExec *BlockExecutor) ApplyBlock( // Events are fired after everything else. // NOTE: if we crash between Commit and Save, events won't be fired during replay fireEvents(blockExec.logger, blockExec.eventBus, block, abciResponses, validatorUpdates) - wg.Wait() return state, retainHeight, nil } diff --git a/types/params.go b/types/params.go index 35281998a..a4eeeecb0 100644 --- a/types/params.go +++ b/types/params.go @@ -42,6 +42,7 @@ type ConsensusParams struct { // BlockParams define limits on the block size and gas plus minimum time // between blocks. type BlockParams struct { + MaxTxs int64 `json:"max_txs"` MaxBytes int64 `json:"max_bytes"` MaxGas int64 `json:"max_gas"` } @@ -76,7 +77,8 @@ func DefaultConsensusParams() *ConsensusParams { // DefaultBlockParams returns a default BlockParams. func DefaultBlockParams() BlockParams { return BlockParams{ - MaxBytes: 22020096, // 21MB + MaxTxs: 2400, + MaxBytes: 3145728, // 3MB MaxGas: -1, } } @@ -116,6 +118,10 @@ func IsValidPubkeyType(params ValidatorParams, pubkeyType string) bool { // Validate validates the ConsensusParams to ensure all values are within their // allowed limits, and returns an error if they are not. func (params ConsensusParams) ValidateBasic() error { + if params.Block.MaxTxs <= 0 { + return fmt.Errorf("block.MaxTxs must be greater than 0. Got %d", + params.Block.MaxGas) + } if params.Block.MaxBytes <= 0 { return fmt.Errorf("block.MaxBytes must be greater than 0. Got %d", params.Block.MaxBytes) @@ -176,6 +182,7 @@ func (params ConsensusParams) Hash() []byte { hp := cmtproto.HashedParams{ BlockMaxBytes: params.Block.MaxBytes, BlockMaxGas: params.Block.MaxGas, + BlockMaxTxs: params.Block.MaxTxs, } bz, err := hp.Marshal() @@ -225,6 +232,7 @@ func (params *ConsensusParams) ToProto() cmtproto.ConsensusParams { Block: &cmtproto.BlockParams{ MaxBytes: params.Block.MaxBytes, MaxGas: params.Block.MaxGas, + MaxTxs: params.Block.MaxTxs, }, Evidence: &cmtproto.EvidenceParams{ MaxAgeNumBlocks: params.Evidence.MaxAgeNumBlocks, @@ -245,6 +253,7 @@ func ConsensusParamsFromProto(pbParams cmtproto.ConsensusParams) ConsensusParams Block: BlockParams{ MaxBytes: pbParams.Block.MaxBytes, MaxGas: pbParams.Block.MaxGas, + MaxTxs: pbParams.Block.MaxTxs, }, Evidence: EvidenceParams{ MaxAgeNumBlocks: pbParams.Evidence.MaxAgeNumBlocks, diff --git a/types/params_test.go b/types/params_test.go index 226e35ab9..2e40d5089 100644 --- a/types/params_test.go +++ b/types/params_test.go @@ -22,22 +22,22 @@ func TestConsensusParamsValidation(t *testing.T) { valid bool }{ // test block params - 0: {makeParams(1, 0, 2, 0, valEd25519), true}, - 1: {makeParams(0, 0, 2, 0, valEd25519), false}, - 2: {makeParams(47*1024*1024, 0, 2, 0, valEd25519), true}, - 3: {makeParams(10, 0, 2, 0, valEd25519), true}, - 4: {makeParams(100*1024*1024, 0, 2, 0, valEd25519), true}, - 5: {makeParams(101*1024*1024, 0, 2, 0, valEd25519), false}, - 6: {makeParams(1024*1024*1024, 0, 2, 0, valEd25519), false}, + 0: {makeParams(2400, 1, 0, 2, 0, valEd25519), true}, + 1: {makeParams(2400, 0, 0, 2, 0, valEd25519), false}, + 2: {makeParams(2400, 47*1024*1024, 0, 2, 0, valEd25519), true}, + 3: {makeParams(2400, 10, 0, 2, 0, valEd25519), true}, + 4: {makeParams(2400, 100*1024*1024, 0, 2, 0, valEd25519), true}, + 5: {makeParams(2400, 101*1024*1024, 0, 2, 0, valEd25519), false}, + 6: {makeParams(2400, 1024*1024*1024, 0, 2, 0, valEd25519), false}, // test evidence params - 7: {makeParams(1, 0, 0, 0, valEd25519), false}, - 8: {makeParams(1, 0, 2, 2, valEd25519), false}, - 9: {makeParams(1000, 0, 2, 1, valEd25519), true}, - 10: {makeParams(1, 0, -1, 0, valEd25519), false}, + 7: {makeParams(2400, 1, 0, 0, 0, valEd25519), false}, + 8: {makeParams(2400, 1, 0, 2, 2, valEd25519), false}, + 9: {makeParams(2400, 1000, 0, 2, 1, valEd25519), true}, + 10: {makeParams(2400, 1, 0, -1, 0, valEd25519), false}, // test no pubkey type provided - 11: {makeParams(1, 0, 2, 0, []string{}), false}, + 11: {makeParams(2400, 1, 0, 2, 0, []string{}), false}, // test invalid pubkey type provided - 12: {makeParams(1, 0, 2, 0, []string{"potatoes make good pubkeys"}), false}, + 12: {makeParams(2400, 1, 0, 2, 0, []string{"potatoes make good pubkeys"}), false}, } for i, tc := range testCases { if tc.valid { @@ -49,7 +49,7 @@ func TestConsensusParamsValidation(t *testing.T) { } func makeParams( - blockBytes, blockGas int64, + blockTxs, blockBytes, blockGas int64, evidenceAge int64, maxEvidenceBytes int64, pubkeyTypes []string, @@ -58,6 +58,7 @@ func makeParams( Block: BlockParams{ MaxBytes: blockBytes, MaxGas: blockGas, + MaxTxs: blockTxs, }, Evidence: EvidenceParams{ MaxAgeNumBlocks: evidenceAge, @@ -72,14 +73,14 @@ func makeParams( func TestConsensusParamsHash(t *testing.T) { params := []ConsensusParams{ - makeParams(4, 2, 3, 1, valEd25519), - makeParams(1, 4, 3, 1, valEd25519), - makeParams(1, 2, 4, 1, valEd25519), - makeParams(2, 5, 7, 1, valEd25519), - makeParams(1, 7, 6, 1, valEd25519), - makeParams(9, 5, 4, 1, valEd25519), - makeParams(7, 8, 9, 1, valEd25519), - makeParams(4, 6, 5, 1, valEd25519), + makeParams(2400, 4, 2, 3, 1, valEd25519), + makeParams(2400, 1, 4, 3, 1, valEd25519), + makeParams(2400, 1, 2, 4, 1, valEd25519), + makeParams(2400, 2, 5, 7, 1, valEd25519), + makeParams(2400, 1, 7, 6, 1, valEd25519), + makeParams(2400, 9, 5, 4, 1, valEd25519), + makeParams(2400, 7, 8, 9, 1, valEd25519), + makeParams(2400, 4, 6, 5, 1, valEd25519), } hashes := make([][]byte, len(params)) @@ -105,13 +106,13 @@ func TestConsensusParamsUpdate(t *testing.T) { }{ // empty updates { - makeParams(1, 2, 3, 0, valEd25519), + makeParams(2400, 1, 2, 3, 0, valEd25519), &cmtproto.ConsensusParams{}, - makeParams(1, 2, 3, 0, valEd25519), + makeParams(2400, 1, 2, 3, 0, valEd25519), }, // fine updates { - makeParams(1, 2, 3, 0, valEd25519), + makeParams(2400, 1, 2, 3, 0, valEd25519), &cmtproto.ConsensusParams{ Block: &cmtproto.BlockParams{ MaxBytes: 100, @@ -126,7 +127,7 @@ func TestConsensusParamsUpdate(t *testing.T) { PubKeyTypes: valSecp256k1, }, }, - makeParams(100, 200, 300, 50, valSecp256k1), + makeParams(2400, 100, 200, 300, 50, valSecp256k1), }, } @@ -136,7 +137,7 @@ func TestConsensusParamsUpdate(t *testing.T) { } func TestConsensusParamsUpdate_AppVersion(t *testing.T) { - params := makeParams(1, 2, 3, 0, valEd25519) + params := makeParams(2400, 1, 2, 3, 0, valEd25519) assert.EqualValues(t, 0, params.Version.App) @@ -148,14 +149,14 @@ func TestConsensusParamsUpdate_AppVersion(t *testing.T) { func TestProto(t *testing.T) { params := []ConsensusParams{ - makeParams(4, 2, 3, 1, valEd25519), - makeParams(1, 4, 3, 1, valEd25519), - makeParams(1, 2, 4, 1, valEd25519), - makeParams(2, 5, 7, 1, valEd25519), - makeParams(1, 7, 6, 1, valEd25519), - makeParams(9, 5, 4, 1, valEd25519), - makeParams(7, 8, 9, 1, valEd25519), - makeParams(4, 6, 5, 1, valEd25519), + makeParams(2400, 4, 2, 3, 1, valEd25519), + makeParams(2400, 1, 4, 3, 1, valEd25519), + makeParams(2400, 1, 2, 4, 1, valEd25519), + makeParams(2400, 2, 5, 7, 1, valEd25519), + makeParams(2400, 1, 7, 6, 1, valEd25519), + makeParams(2400, 9, 5, 4, 1, valEd25519), + makeParams(2400, 7, 8, 9, 1, valEd25519), + makeParams(2400, 4, 6, 5, 1, valEd25519), } for i := range params {