From c80734e5afe6b633b5e9e198045f63762c465e51 Mon Sep 17 00:00:00 2001 From: William Banfield <4561443+williambanfield@users.noreply.github.com> Date: Fri, 25 Feb 2022 13:56:34 -0500 Subject: [PATCH] state: synchronize the ProcessProposal implementation with the latest version of the spec (#7961) This change implements the spec for `ProcessProposal`. It first calls the Tendermint block validation logic to check that all of the proposed block fields are well formed and do not violate any of the rules for Tendermint to consider the block valid and then passes the validated block the `ProcessProposal`. This change also adds additional fixtures to test the change. It adds the `baseMock` types that holds a mock as well as a reference to `BaseApplication`. If the function was not setup by the test on the contained mock Application, the type delegates to the `BaseApplication` and returns what `BaseApplication` returns. The change also switches the `makeState` helper to take an arg struct so that an ABCI application can be plumbed through when needed. closes: #7656 --- abci/client/socket_client.go | 2 + abci/example/kvstore/kvstore.go | 4 +- abci/types/application.go | 1 + abci/types/mocks/application.go | 209 ++ abci/types/mocks/base.go | 189 ++ abci/types/result.go | 5 - abci/types/types.pb.go | 3600 +++++++++++++++++++++++----- internal/consensus/common_test.go | 35 +- internal/consensus/mempool_test.go | 5 + internal/consensus/state.go | 47 +- internal/consensus/state_test.go | 181 +- internal/state/execution.go | 84 +- internal/state/execution_test.go | 100 +- internal/state/helpers_test.go | 4 +- test/e2e/app/app.go | 12 + types/evidence.go | 10 + 16 files changed, 3728 insertions(+), 760 deletions(-) create mode 100644 abci/types/mocks/application.go create mode 100644 abci/types/mocks/base.go diff --git a/abci/client/socket_client.go b/abci/client/socket_client.go index b41e53ead..dcf5fa519 100644 --- a/abci/client/socket_client.go +++ b/abci/client/socket_client.go @@ -387,6 +387,8 @@ func resMatchesReq(req *types.Request, res *types.Response) (ok bool) { _, ok = res.Value.(*types.Response_Query) case *types.Request_InitChain: _, ok = res.Value.(*types.Response_InitChain) + case *types.Request_ProcessProposal: + _, ok = res.Value.(*types.Response_ProcessProposal) case *types.Request_PrepareProposal: _, ok = res.Value.(*types.Response_PrepareProposal) case *types.Request_ExtendVote: diff --git a/abci/example/kvstore/kvstore.go b/abci/example/kvstore/kvstore.go index 9d4f61887..f295243bd 100644 --- a/abci/example/kvstore/kvstore.go +++ b/abci/example/kvstore/kvstore.go @@ -290,10 +290,10 @@ func (app *Application) PrepareProposal(req types.RequestPrepareProposal) types. func (*Application) ProcessProposal(req types.RequestProcessProposal) types.ResponseProcessProposal { for _, tx := range req.Txs { if len(tx) == 0 { - return types.ResponseProcessProposal{Result: types.ResponseProcessProposal_REJECT} + return types.ResponseProcessProposal{Accept: false} } } - return types.ResponseProcessProposal{Result: types.ResponseProcessProposal_ACCEPT} + return types.ResponseProcessProposal{Accept: true} } //--------------------------------------------- diff --git a/abci/types/application.go b/abci/types/application.go index b3ebf707f..389de354e 100644 --- a/abci/types/application.go +++ b/abci/types/application.go @@ -4,6 +4,7 @@ import ( "context" ) +//go:generate ../../scripts/mockery_generate.sh Application // Application is an interface that enables any finite, deterministic state machine // to be driven by a blockchain-based replication engine via the ABCI. // All methods take a RequestXxx argument and return a ResponseXxx argument, diff --git a/abci/types/mocks/application.go b/abci/types/mocks/application.go new file mode 100644 index 000000000..30bf0f84c --- /dev/null +++ b/abci/types/mocks/application.go @@ -0,0 +1,209 @@ +// Code generated by mockery. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + types "github.com/tendermint/tendermint/abci/types" +) + +// Application is an autogenerated mock type for the Application type +type Application struct { + mock.Mock +} + +// ApplySnapshotChunk provides a mock function with given fields: _a0 +func (_m *Application) ApplySnapshotChunk(_a0 types.RequestApplySnapshotChunk) types.ResponseApplySnapshotChunk { + ret := _m.Called(_a0) + + var r0 types.ResponseApplySnapshotChunk + if rf, ok := ret.Get(0).(func(types.RequestApplySnapshotChunk) types.ResponseApplySnapshotChunk); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseApplySnapshotChunk) + } + + return r0 +} + +// CheckTx provides a mock function with given fields: _a0 +func (_m *Application) CheckTx(_a0 types.RequestCheckTx) types.ResponseCheckTx { + ret := _m.Called(_a0) + + var r0 types.ResponseCheckTx + if rf, ok := ret.Get(0).(func(types.RequestCheckTx) types.ResponseCheckTx); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseCheckTx) + } + + return r0 +} + +// Commit provides a mock function with given fields: +func (_m *Application) Commit() types.ResponseCommit { + ret := _m.Called() + + var r0 types.ResponseCommit + if rf, ok := ret.Get(0).(func() types.ResponseCommit); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(types.ResponseCommit) + } + + return r0 +} + +// ExtendVote provides a mock function with given fields: _a0 +func (_m *Application) ExtendVote(_a0 types.RequestExtendVote) types.ResponseExtendVote { + ret := _m.Called(_a0) + + var r0 types.ResponseExtendVote + if rf, ok := ret.Get(0).(func(types.RequestExtendVote) types.ResponseExtendVote); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseExtendVote) + } + + return r0 +} + +// FinalizeBlock provides a mock function with given fields: _a0 +func (_m *Application) FinalizeBlock(_a0 types.RequestFinalizeBlock) types.ResponseFinalizeBlock { + ret := _m.Called(_a0) + + var r0 types.ResponseFinalizeBlock + if rf, ok := ret.Get(0).(func(types.RequestFinalizeBlock) types.ResponseFinalizeBlock); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseFinalizeBlock) + } + + return r0 +} + +// Info provides a mock function with given fields: _a0 +func (_m *Application) Info(_a0 types.RequestInfo) types.ResponseInfo { + ret := _m.Called(_a0) + + var r0 types.ResponseInfo + if rf, ok := ret.Get(0).(func(types.RequestInfo) types.ResponseInfo); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseInfo) + } + + return r0 +} + +// InitChain provides a mock function with given fields: _a0 +func (_m *Application) InitChain(_a0 types.RequestInitChain) types.ResponseInitChain { + ret := _m.Called(_a0) + + var r0 types.ResponseInitChain + if rf, ok := ret.Get(0).(func(types.RequestInitChain) types.ResponseInitChain); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseInitChain) + } + + return r0 +} + +// ListSnapshots provides a mock function with given fields: _a0 +func (_m *Application) ListSnapshots(_a0 types.RequestListSnapshots) types.ResponseListSnapshots { + ret := _m.Called(_a0) + + var r0 types.ResponseListSnapshots + if rf, ok := ret.Get(0).(func(types.RequestListSnapshots) types.ResponseListSnapshots); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseListSnapshots) + } + + return r0 +} + +// LoadSnapshotChunk provides a mock function with given fields: _a0 +func (_m *Application) LoadSnapshotChunk(_a0 types.RequestLoadSnapshotChunk) types.ResponseLoadSnapshotChunk { + ret := _m.Called(_a0) + + var r0 types.ResponseLoadSnapshotChunk + if rf, ok := ret.Get(0).(func(types.RequestLoadSnapshotChunk) types.ResponseLoadSnapshotChunk); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseLoadSnapshotChunk) + } + + return r0 +} + +// OfferSnapshot provides a mock function with given fields: _a0 +func (_m *Application) OfferSnapshot(_a0 types.RequestOfferSnapshot) types.ResponseOfferSnapshot { + ret := _m.Called(_a0) + + var r0 types.ResponseOfferSnapshot + if rf, ok := ret.Get(0).(func(types.RequestOfferSnapshot) types.ResponseOfferSnapshot); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseOfferSnapshot) + } + + return r0 +} + +// PrepareProposal provides a mock function with given fields: _a0 +func (_m *Application) PrepareProposal(_a0 types.RequestPrepareProposal) types.ResponsePrepareProposal { + ret := _m.Called(_a0) + + var r0 types.ResponsePrepareProposal + if rf, ok := ret.Get(0).(func(types.RequestPrepareProposal) types.ResponsePrepareProposal); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponsePrepareProposal) + } + + return r0 +} + +// ProcessProposal provides a mock function with given fields: _a0 +func (_m *Application) ProcessProposal(_a0 types.RequestProcessProposal) types.ResponseProcessProposal { + ret := _m.Called(_a0) + + var r0 types.ResponseProcessProposal + if rf, ok := ret.Get(0).(func(types.RequestProcessProposal) types.ResponseProcessProposal); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseProcessProposal) + } + + return r0 +} + +// Query provides a mock function with given fields: _a0 +func (_m *Application) Query(_a0 types.RequestQuery) types.ResponseQuery { + ret := _m.Called(_a0) + + var r0 types.ResponseQuery + if rf, ok := ret.Get(0).(func(types.RequestQuery) types.ResponseQuery); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseQuery) + } + + return r0 +} + +// VerifyVoteExtension provides a mock function with given fields: _a0 +func (_m *Application) VerifyVoteExtension(_a0 types.RequestVerifyVoteExtension) types.ResponseVerifyVoteExtension { + ret := _m.Called(_a0) + + var r0 types.ResponseVerifyVoteExtension + if rf, ok := ret.Get(0).(func(types.RequestVerifyVoteExtension) types.ResponseVerifyVoteExtension); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(types.ResponseVerifyVoteExtension) + } + + return r0 +} diff --git a/abci/types/mocks/base.go b/abci/types/mocks/base.go new file mode 100644 index 000000000..f9d84b858 --- /dev/null +++ b/abci/types/mocks/base.go @@ -0,0 +1,189 @@ +package mocks + +import ( + types "github.com/tendermint/tendermint/abci/types" +) + +// BaseMock provides a wrapper around the generated Application mock and a BaseApplication. +// BaseMock first tries to use the mock's implementation of the method. +// If no functionality was provided for the mock by the user, BaseMock dispatches +// to the BaseApplication and uses its functionality. +// BaseMock allows users to provide mocked functionality for only the methods that matter +// for their test while avoiding a panic if the code calls Application methods that are +// not relevant to the test. +type BaseMock struct { + base *types.BaseApplication + *Application +} + +func NewBaseMock() BaseMock { + return BaseMock{ + base: types.NewBaseApplication(), + Application: new(Application), + } +} + +// Info/Query Connection +// Return application info +func (m BaseMock) Info(input types.RequestInfo) types.ResponseInfo { + var ret types.ResponseInfo + defer func() { + if r := recover(); r != nil { + ret = m.base.Info(input) + } + }() + ret = m.Application.Info(input) + return ret +} + +func (m BaseMock) Query(input types.RequestQuery) types.ResponseQuery { + var ret types.ResponseQuery + defer func() { + if r := recover(); r != nil { + ret = m.base.Query(input) + } + }() + ret = m.Application.Query(input) + return ret +} + +// Mempool Connection +// Validate a tx for the mempool +func (m BaseMock) CheckTx(input types.RequestCheckTx) types.ResponseCheckTx { + var ret types.ResponseCheckTx + defer func() { + if r := recover(); r != nil { + ret = m.base.CheckTx(input) + } + }() + ret = m.Application.CheckTx(input) + return ret +} + +// Consensus Connection +// Initialize blockchain w validators/other info from TendermintCore +func (m BaseMock) InitChain(input types.RequestInitChain) types.ResponseInitChain { + var ret types.ResponseInitChain + defer func() { + if r := recover(); r != nil { + ret = m.base.InitChain(input) + } + }() + ret = m.Application.InitChain(input) + return ret +} + +func (m BaseMock) PrepareProposal(input types.RequestPrepareProposal) types.ResponsePrepareProposal { + var ret types.ResponsePrepareProposal + defer func() { + if r := recover(); r != nil { + ret = m.base.PrepareProposal(input) + } + }() + ret = m.Application.PrepareProposal(input) + return ret +} + +func (m BaseMock) ProcessProposal(input types.RequestProcessProposal) types.ResponseProcessProposal { + var ret types.ResponseProcessProposal + defer func() { + if r := recover(); r != nil { + ret = m.base.ProcessProposal(input) + } + }() + ret = m.Application.ProcessProposal(input) + return ret +} + +// Commit the state and return the application Merkle root hash +func (m BaseMock) Commit() types.ResponseCommit { + var ret types.ResponseCommit + defer func() { + if r := recover(); r != nil { + ret = m.base.Commit() + } + }() + ret = m.Application.Commit() + return ret +} + +// Create application specific vote extension +func (m BaseMock) ExtendVote(input types.RequestExtendVote) types.ResponseExtendVote { + var ret types.ResponseExtendVote + defer func() { + if r := recover(); r != nil { + ret = m.base.ExtendVote(input) + } + }() + ret = m.Application.ExtendVote(input) + return ret +} + +// Verify application's vote extension data +func (m BaseMock) VerifyVoteExtension(input types.RequestVerifyVoteExtension) types.ResponseVerifyVoteExtension { + var ret types.ResponseVerifyVoteExtension + defer func() { + if r := recover(); r != nil { + ret = m.base.VerifyVoteExtension(input) + } + }() + ret = m.Application.VerifyVoteExtension(input) + return ret +} + +// State Sync Connection +// List available snapshots +func (m BaseMock) ListSnapshots(input types.RequestListSnapshots) types.ResponseListSnapshots { + var ret types.ResponseListSnapshots + defer func() { + if r := recover(); r != nil { + ret = m.base.ListSnapshots(input) + } + }() + ret = m.Application.ListSnapshots(input) + return ret +} + +func (m BaseMock) OfferSnapshot(input types.RequestOfferSnapshot) types.ResponseOfferSnapshot { + var ret types.ResponseOfferSnapshot + defer func() { + if r := recover(); r != nil { + ret = m.base.OfferSnapshot(input) + } + }() + ret = m.Application.OfferSnapshot(input) + return ret +} + +func (m BaseMock) LoadSnapshotChunk(input types.RequestLoadSnapshotChunk) types.ResponseLoadSnapshotChunk { + var ret types.ResponseLoadSnapshotChunk + defer func() { + if r := recover(); r != nil { + ret = m.base.LoadSnapshotChunk(input) + } + }() + ret = m.Application.LoadSnapshotChunk(input) + return ret +} + +func (m BaseMock) ApplySnapshotChunk(input types.RequestApplySnapshotChunk) types.ResponseApplySnapshotChunk { + var ret types.ResponseApplySnapshotChunk + defer func() { + if r := recover(); r != nil { + ret = m.base.ApplySnapshotChunk(input) + } + }() + ret = m.Application.ApplySnapshotChunk(input) + return ret +} + +func (m BaseMock) FinalizeBlock(input types.RequestFinalizeBlock) types.ResponseFinalizeBlock { + var ret types.ResponseFinalizeBlock + defer func() { + if r := recover(); r != nil { + ret = m.base.FinalizeBlock(input) + } + }() + ret = m.Application.FinalizeBlock(input) + return ret +} diff --git a/abci/types/result.go b/abci/types/result.go index fb76e01d0..d899b771a 100644 --- a/abci/types/result.go +++ b/abci/types/result.go @@ -58,11 +58,6 @@ func (r ResponseVerifyVoteExtension) IsErr() bool { return r.Result != ResponseVerifyVoteExtension_ACCEPT } -// IsOK returns true if Code is OK -func (r ResponseProcessProposal) IsOK() bool { - return r.Result == ResponseProcessProposal_ACCEPT -} - //--------------------------------------------------------------------------- // 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 5f98a6ce5..095f8c00d 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -11,7 +11,7 @@ import ( _ "github.com/gogo/protobuf/types" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" crypto "github.com/tendermint/tendermint/proto/tendermint/crypto" - types1 "github.com/tendermint/tendermint/proto/tendermint/types" + types "github.com/tendermint/tendermint/proto/tendermint/types" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -120,7 +120,7 @@ func (x ResponseOfferSnapshot_Result) String() string { } func (ResponseOfferSnapshot_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{28, 0} + return fileDescriptor_252557cfdd89a31a, []int{33, 0} } type ResponseApplySnapshotChunk_Result int32 @@ -157,7 +157,7 @@ func (x ResponseApplySnapshotChunk_Result) String() string { } func (ResponseApplySnapshotChunk_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{30, 0} + return fileDescriptor_252557cfdd89a31a, []int{35, 0} } type ResponseVerifyVoteExtension_Result int32 @@ -188,35 +188,7 @@ func (x ResponseVerifyVoteExtension_Result) String() string { } func (ResponseVerifyVoteExtension_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{33, 0} -} - -type ResponseProcessProposal_Result int32 - -const ( - ResponseProcessProposal_UNKNOWN ResponseProcessProposal_Result = 0 - ResponseProcessProposal_ACCEPT ResponseProcessProposal_Result = 1 - ResponseProcessProposal_REJECT ResponseProcessProposal_Result = 2 -) - -var ResponseProcessProposal_Result_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ACCEPT", - 2: "REJECT", -} - -var ResponseProcessProposal_Result_value = map[string]int32{ - "UNKNOWN": 0, - "ACCEPT": 1, - "REJECT": 2, -} - -func (x ResponseProcessProposal_Result) String() string { - return proto.EnumName(ResponseProcessProposal_Result_name, int32(x)) -} - -func (ResponseProcessProposal_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{34, 0} + return fileDescriptor_252557cfdd89a31a, []int{38, 0} } type Request struct { @@ -226,7 +198,10 @@ type Request struct { // *Request_Info // *Request_InitChain // *Request_Query + // *Request_BeginBlock // *Request_CheckTx + // *Request_DeliverTx + // *Request_EndBlock // *Request_Commit // *Request_ListSnapshots // *Request_OfferSnapshot @@ -294,9 +269,18 @@ type Request_InitChain struct { type Request_Query struct { Query *RequestQuery `protobuf:"bytes,5,opt,name=query,proto3,oneof" json:"query,omitempty"` } +type Request_BeginBlock struct { + BeginBlock *RequestBeginBlock `protobuf:"bytes,6,opt,name=begin_block,json=beginBlock,proto3,oneof" json:"begin_block,omitempty"` +} type Request_CheckTx struct { CheckTx *RequestCheckTx `protobuf:"bytes,7,opt,name=check_tx,json=checkTx,proto3,oneof" json:"check_tx,omitempty"` } +type Request_DeliverTx struct { + DeliverTx *RequestDeliverTx `protobuf:"bytes,8,opt,name=deliver_tx,json=deliverTx,proto3,oneof" json:"deliver_tx,omitempty"` +} +type Request_EndBlock struct { + EndBlock *RequestEndBlock `protobuf:"bytes,9,opt,name=end_block,json=endBlock,proto3,oneof" json:"end_block,omitempty"` +} type Request_Commit struct { Commit *RequestCommit `protobuf:"bytes,10,opt,name=commit,proto3,oneof" json:"commit,omitempty"` } @@ -333,7 +317,10 @@ func (*Request_Flush) isRequest_Value() {} func (*Request_Info) isRequest_Value() {} func (*Request_InitChain) isRequest_Value() {} func (*Request_Query) isRequest_Value() {} +func (*Request_BeginBlock) isRequest_Value() {} func (*Request_CheckTx) isRequest_Value() {} +func (*Request_DeliverTx) isRequest_Value() {} +func (*Request_EndBlock) isRequest_Value() {} func (*Request_Commit) isRequest_Value() {} func (*Request_ListSnapshots) isRequest_Value() {} func (*Request_OfferSnapshot) isRequest_Value() {} @@ -387,6 +374,13 @@ func (m *Request) GetQuery() *RequestQuery { return nil } +func (m *Request) GetBeginBlock() *RequestBeginBlock { + if x, ok := m.GetValue().(*Request_BeginBlock); ok { + return x.BeginBlock + } + return nil +} + func (m *Request) GetCheckTx() *RequestCheckTx { if x, ok := m.GetValue().(*Request_CheckTx); ok { return x.CheckTx @@ -394,6 +388,20 @@ func (m *Request) GetCheckTx() *RequestCheckTx { return nil } +func (m *Request) GetDeliverTx() *RequestDeliverTx { + if x, ok := m.GetValue().(*Request_DeliverTx); ok { + return x.DeliverTx + } + return nil +} + +func (m *Request) GetEndBlock() *RequestEndBlock { + if x, ok := m.GetValue().(*Request_EndBlock); ok { + return x.EndBlock + } + return nil +} + func (m *Request) GetCommit() *RequestCommit { if x, ok := m.GetValue().(*Request_Commit); ok { return x.Commit @@ -472,7 +480,10 @@ func (*Request) XXX_OneofWrappers() []interface{} { (*Request_Info)(nil), (*Request_InitChain)(nil), (*Request_Query)(nil), + (*Request_BeginBlock)(nil), (*Request_CheckTx)(nil), + (*Request_DeliverTx)(nil), + (*Request_EndBlock)(nil), (*Request_Commit)(nil), (*Request_ListSnapshots)(nil), (*Request_OfferSnapshot)(nil), @@ -530,6 +541,74 @@ func (m *RequestEcho) GetMessage() string { return "" } +type RequestBeginBlock struct { + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Header types.Header `protobuf:"bytes,2,opt,name=header,proto3" json:"header"` + LastCommitInfo LastCommitInfo `protobuf:"bytes,3,opt,name=last_commit_info,json=lastCommitInfo,proto3" json:"last_commit_info"` + ByzantineValidators []Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators,proto3" json:"byzantine_validators"` +} + +func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} } +func (m *RequestBeginBlock) String() string { return proto.CompactTextString(m) } +func (*RequestBeginBlock) ProtoMessage() {} +func (*RequestBeginBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{2} +} +func (m *RequestBeginBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestBeginBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestBeginBlock.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 *RequestBeginBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestBeginBlock.Merge(m, src) +} +func (m *RequestBeginBlock) XXX_Size() int { + return m.Size() +} +func (m *RequestBeginBlock) XXX_DiscardUnknown() { + xxx_messageInfo_RequestBeginBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestBeginBlock proto.InternalMessageInfo + +func (m *RequestBeginBlock) GetHash() []byte { + if m != nil { + return m.Hash + } + return nil +} + +func (m *RequestBeginBlock) GetHeader() types.Header { + if m != nil { + return m.Header + } + return types.Header{} +} + +func (m *RequestBeginBlock) GetLastCommitInfo() LastCommitInfo { + if m != nil { + return m.LastCommitInfo + } + return LastCommitInfo{} +} + +func (m *RequestBeginBlock) GetByzantineValidators() []Evidence { + if m != nil { + return m.ByzantineValidators + } + return nil +} + type RequestFlush struct { } @@ -537,7 +616,7 @@ func (m *RequestFlush) Reset() { *m = RequestFlush{} } func (m *RequestFlush) String() string { return proto.CompactTextString(m) } func (*RequestFlush) ProtoMessage() {} func (*RequestFlush) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{2} + return fileDescriptor_252557cfdd89a31a, []int{3} } func (m *RequestFlush) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -577,7 +656,7 @@ func (m *RequestInfo) Reset() { *m = RequestInfo{} } func (m *RequestInfo) String() string { return proto.CompactTextString(m) } func (*RequestInfo) ProtoMessage() {} func (*RequestInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{3} + return fileDescriptor_252557cfdd89a31a, []int{4} } func (m *RequestInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -635,19 +714,19 @@ func (m *RequestInfo) GetAbciVersion() string { } type RequestInitChain struct { - Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time"` - ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - ConsensusParams *types1.ConsensusParams `protobuf:"bytes,3,opt,name=consensus_params,json=consensusParams,proto3" json:"consensus_params,omitempty"` - Validators []ValidatorUpdate `protobuf:"bytes,4,rep,name=validators,proto3" json:"validators"` - AppStateBytes []byte `protobuf:"bytes,5,opt,name=app_state_bytes,json=appStateBytes,proto3" json:"app_state_bytes,omitempty"` - InitialHeight int64 `protobuf:"varint,6,opt,name=initial_height,json=initialHeight,proto3" json:"initial_height,omitempty"` + Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ConsensusParams *types.ConsensusParams `protobuf:"bytes,3,opt,name=consensus_params,json=consensusParams,proto3" json:"consensus_params,omitempty"` + Validators []ValidatorUpdate `protobuf:"bytes,4,rep,name=validators,proto3" json:"validators"` + AppStateBytes []byte `protobuf:"bytes,5,opt,name=app_state_bytes,json=appStateBytes,proto3" json:"app_state_bytes,omitempty"` + InitialHeight int64 `protobuf:"varint,6,opt,name=initial_height,json=initialHeight,proto3" json:"initial_height,omitempty"` } func (m *RequestInitChain) Reset() { *m = RequestInitChain{} } func (m *RequestInitChain) String() string { return proto.CompactTextString(m) } func (*RequestInitChain) ProtoMessage() {} func (*RequestInitChain) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{4} + return fileDescriptor_252557cfdd89a31a, []int{5} } func (m *RequestInitChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -690,7 +769,7 @@ func (m *RequestInitChain) GetChainId() string { return "" } -func (m *RequestInitChain) GetConsensusParams() *types1.ConsensusParams { +func (m *RequestInitChain) GetConsensusParams() *types.ConsensusParams { if m != nil { return m.ConsensusParams } @@ -729,7 +808,7 @@ func (m *RequestQuery) Reset() { *m = RequestQuery{} } func (m *RequestQuery) String() string { return proto.CompactTextString(m) } func (*RequestQuery) ProtoMessage() {} func (*RequestQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{5} + return fileDescriptor_252557cfdd89a31a, []int{6} } func (m *RequestQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -786,6 +865,94 @@ func (m *RequestQuery) GetProve() bool { return false } +type RequestDeliverTx struct { + Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` +} + +func (m *RequestDeliverTx) Reset() { *m = RequestDeliverTx{} } +func (m *RequestDeliverTx) String() string { return proto.CompactTextString(m) } +func (*RequestDeliverTx) ProtoMessage() {} +func (*RequestDeliverTx) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{7} +} +func (m *RequestDeliverTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestDeliverTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestDeliverTx.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 *RequestDeliverTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestDeliverTx.Merge(m, src) +} +func (m *RequestDeliverTx) XXX_Size() int { + return m.Size() +} +func (m *RequestDeliverTx) XXX_DiscardUnknown() { + xxx_messageInfo_RequestDeliverTx.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestDeliverTx proto.InternalMessageInfo + +func (m *RequestDeliverTx) GetTx() []byte { + if m != nil { + return m.Tx + } + return nil +} + +type RequestEndBlock struct { + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (m *RequestEndBlock) Reset() { *m = RequestEndBlock{} } +func (m *RequestEndBlock) String() string { return proto.CompactTextString(m) } +func (*RequestEndBlock) ProtoMessage() {} +func (*RequestEndBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{8} +} +func (m *RequestEndBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestEndBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestEndBlock.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 *RequestEndBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestEndBlock.Merge(m, src) +} +func (m *RequestEndBlock) XXX_Size() int { + return m.Size() +} +func (m *RequestEndBlock) XXX_DiscardUnknown() { + xxx_messageInfo_RequestEndBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestEndBlock proto.InternalMessageInfo + +func (m *RequestEndBlock) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + type RequestCheckTx struct { Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` Type CheckTxType `protobuf:"varint,2,opt,name=type,proto3,enum=tendermint.abci.CheckTxType" json:"type,omitempty"` @@ -795,7 +962,7 @@ func (m *RequestCheckTx) Reset() { *m = RequestCheckTx{} } func (m *RequestCheckTx) String() string { return proto.CompactTextString(m) } func (*RequestCheckTx) ProtoMessage() {} func (*RequestCheckTx) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{6} + return fileDescriptor_252557cfdd89a31a, []int{9} } func (m *RequestCheckTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -845,7 +1012,7 @@ func (m *RequestCommit) Reset() { *m = RequestCommit{} } func (m *RequestCommit) String() string { return proto.CompactTextString(m) } func (*RequestCommit) ProtoMessage() {} func (*RequestCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{7} + return fileDescriptor_252557cfdd89a31a, []int{10} } func (m *RequestCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -882,7 +1049,7 @@ func (m *RequestListSnapshots) Reset() { *m = RequestListSnapshots{} } func (m *RequestListSnapshots) String() string { return proto.CompactTextString(m) } func (*RequestListSnapshots) ProtoMessage() {} func (*RequestListSnapshots) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{8} + return fileDescriptor_252557cfdd89a31a, []int{11} } func (m *RequestListSnapshots) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -921,7 +1088,7 @@ func (m *RequestOfferSnapshot) Reset() { *m = RequestOfferSnapshot{} } func (m *RequestOfferSnapshot) String() string { return proto.CompactTextString(m) } func (*RequestOfferSnapshot) ProtoMessage() {} func (*RequestOfferSnapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{9} + return fileDescriptor_252557cfdd89a31a, []int{12} } func (m *RequestOfferSnapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -975,7 +1142,7 @@ func (m *RequestLoadSnapshotChunk) Reset() { *m = RequestLoadSnapshotChu func (m *RequestLoadSnapshotChunk) String() string { return proto.CompactTextString(m) } func (*RequestLoadSnapshotChunk) ProtoMessage() {} func (*RequestLoadSnapshotChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{10} + return fileDescriptor_252557cfdd89a31a, []int{13} } func (m *RequestLoadSnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1036,7 +1203,7 @@ func (m *RequestApplySnapshotChunk) Reset() { *m = RequestApplySnapshotC func (m *RequestApplySnapshotChunk) String() string { return proto.CompactTextString(m) } func (*RequestApplySnapshotChunk) ProtoMessage() {} func (*RequestApplySnapshotChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{11} + return fileDescriptor_252557cfdd89a31a, []int{14} } func (m *RequestApplySnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1095,14 +1262,14 @@ type RequestPrepareProposal struct { BlockDataSize int64 `protobuf:"varint,2,opt,name=block_data_size,json=blockDataSize,proto3" json:"block_data_size,omitempty"` // votes includes all votes from the previous block. This contains vote extension data that can be used in proposal // preparation. The votes here will then form the last commit that gets sent in the proposed block. - Votes []*types1.Vote `protobuf:"bytes,3,rep,name=votes,proto3" json:"votes,omitempty"` + Votes []*types.Vote `protobuf:"bytes,3,rep,name=votes,proto3" json:"votes,omitempty"` } func (m *RequestPrepareProposal) Reset() { *m = RequestPrepareProposal{} } func (m *RequestPrepareProposal) String() string { return proto.CompactTextString(m) } func (*RequestPrepareProposal) ProtoMessage() {} func (*RequestPrepareProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{12} + return fileDescriptor_252557cfdd89a31a, []int{15} } func (m *RequestPrepareProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1145,7 +1312,7 @@ func (m *RequestPrepareProposal) GetBlockDataSize() int64 { return 0 } -func (m *RequestPrepareProposal) GetVotes() []*types1.Vote { +func (m *RequestPrepareProposal) GetVotes() []*types.Vote { if m != nil { return m.Votes } @@ -1154,14 +1321,14 @@ func (m *RequestPrepareProposal) GetVotes() []*types1.Vote { // Extends a vote with application-side injection type RequestExtendVote struct { - Vote *types1.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` + Vote *types.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` } func (m *RequestExtendVote) Reset() { *m = RequestExtendVote{} } func (m *RequestExtendVote) String() string { return proto.CompactTextString(m) } func (*RequestExtendVote) ProtoMessage() {} func (*RequestExtendVote) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{13} + return fileDescriptor_252557cfdd89a31a, []int{16} } func (m *RequestExtendVote) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1190,7 +1357,7 @@ func (m *RequestExtendVote) XXX_DiscardUnknown() { var xxx_messageInfo_RequestExtendVote proto.InternalMessageInfo -func (m *RequestExtendVote) GetVote() *types1.Vote { +func (m *RequestExtendVote) GetVote() *types.Vote { if m != nil { return m.Vote } @@ -1199,14 +1366,14 @@ func (m *RequestExtendVote) GetVote() *types1.Vote { // Verify the vote extension type RequestVerifyVoteExtension struct { - Vote *types1.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` + Vote *types.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` } func (m *RequestVerifyVoteExtension) Reset() { *m = RequestVerifyVoteExtension{} } func (m *RequestVerifyVoteExtension) String() string { return proto.CompactTextString(m) } func (*RequestVerifyVoteExtension) ProtoMessage() {} func (*RequestVerifyVoteExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{14} + return fileDescriptor_252557cfdd89a31a, []int{17} } func (m *RequestVerifyVoteExtension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1235,7 +1402,7 @@ func (m *RequestVerifyVoteExtension) XXX_DiscardUnknown() { var xxx_messageInfo_RequestVerifyVoteExtension proto.InternalMessageInfo -func (m *RequestVerifyVoteExtension) GetVote() *types1.Vote { +func (m *RequestVerifyVoteExtension) GetVote() *types.Vote { if m != nil { return m.Vote } @@ -1243,15 +1410,18 @@ func (m *RequestVerifyVoteExtension) GetVote() *types1.Vote { } type RequestProcessProposal struct { - Header types1.Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header"` - Txs [][]byte `protobuf:"bytes,2,rep,name=txs,proto3" json:"txs,omitempty"` + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Header types.Header `protobuf:"bytes,2,opt,name=header,proto3" json:"header"` + Txs [][]byte `protobuf:"bytes,3,rep,name=txs,proto3" json:"txs,omitempty"` + LastCommitInfo LastCommitInfo `protobuf:"bytes,4,opt,name=last_commit_info,json=lastCommitInfo,proto3" json:"last_commit_info"` + ByzantineValidators []Evidence `protobuf:"bytes,5,rep,name=byzantine_validators,json=byzantineValidators,proto3" json:"byzantine_validators"` } func (m *RequestProcessProposal) Reset() { *m = RequestProcessProposal{} } func (m *RequestProcessProposal) String() string { return proto.CompactTextString(m) } func (*RequestProcessProposal) ProtoMessage() {} func (*RequestProcessProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{15} + return fileDescriptor_252557cfdd89a31a, []int{18} } func (m *RequestProcessProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1280,11 +1450,18 @@ func (m *RequestProcessProposal) XXX_DiscardUnknown() { var xxx_messageInfo_RequestProcessProposal proto.InternalMessageInfo -func (m *RequestProcessProposal) GetHeader() types1.Header { +func (m *RequestProcessProposal) GetHash() []byte { + if m != nil { + return m.Hash + } + return nil +} + +func (m *RequestProcessProposal) GetHeader() types.Header { if m != nil { return m.Header } - return types1.Header{} + return types.Header{} } func (m *RequestProcessProposal) GetTxs() [][]byte { @@ -1294,11 +1471,25 @@ func (m *RequestProcessProposal) GetTxs() [][]byte { return nil } +func (m *RequestProcessProposal) GetLastCommitInfo() LastCommitInfo { + if m != nil { + return m.LastCommitInfo + } + return LastCommitInfo{} +} + +func (m *RequestProcessProposal) GetByzantineValidators() []Evidence { + if m != nil { + return m.ByzantineValidators + } + return nil +} + type RequestFinalizeBlock struct { Txs [][]byte `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` - Header types1.Header `protobuf:"bytes,4,opt,name=header,proto3" json:"header"` + Header types.Header `protobuf:"bytes,4,opt,name=header,proto3" json:"header"` LastCommitInfo LastCommitInfo `protobuf:"bytes,5,opt,name=last_commit_info,json=lastCommitInfo,proto3" json:"last_commit_info"` ByzantineValidators []Evidence `protobuf:"bytes,6,rep,name=byzantine_validators,json=byzantineValidators,proto3" json:"byzantine_validators"` } @@ -1307,7 +1498,7 @@ func (m *RequestFinalizeBlock) Reset() { *m = RequestFinalizeBlock{} } func (m *RequestFinalizeBlock) String() string { return proto.CompactTextString(m) } func (*RequestFinalizeBlock) ProtoMessage() {} func (*RequestFinalizeBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{16} + return fileDescriptor_252557cfdd89a31a, []int{19} } func (m *RequestFinalizeBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,11 +1548,11 @@ func (m *RequestFinalizeBlock) GetHeight() int64 { return 0 } -func (m *RequestFinalizeBlock) GetHeader() types1.Header { +func (m *RequestFinalizeBlock) GetHeader() types.Header { if m != nil { return m.Header } - return types1.Header{} + return types.Header{} } func (m *RequestFinalizeBlock) GetLastCommitInfo() LastCommitInfo { @@ -1386,7 +1577,10 @@ type Response struct { // *Response_Info // *Response_InitChain // *Response_Query + // *Response_BeginBlock // *Response_CheckTx + // *Response_DeliverTx + // *Response_EndBlock // *Response_Commit // *Response_ListSnapshots // *Response_OfferSnapshot @@ -1404,7 +1598,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{17} + return fileDescriptor_252557cfdd89a31a, []int{20} } func (m *Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1457,9 +1651,18 @@ type Response_InitChain struct { type Response_Query struct { Query *ResponseQuery `protobuf:"bytes,6,opt,name=query,proto3,oneof" json:"query,omitempty"` } +type Response_BeginBlock struct { + BeginBlock *ResponseBeginBlock `protobuf:"bytes,7,opt,name=begin_block,json=beginBlock,proto3,oneof" json:"begin_block,omitempty"` +} type Response_CheckTx struct { CheckTx *ResponseCheckTx `protobuf:"bytes,8,opt,name=check_tx,json=checkTx,proto3,oneof" json:"check_tx,omitempty"` } +type Response_DeliverTx struct { + DeliverTx *ResponseDeliverTx `protobuf:"bytes,9,opt,name=deliver_tx,json=deliverTx,proto3,oneof" json:"deliver_tx,omitempty"` +} +type Response_EndBlock struct { + EndBlock *ResponseEndBlock `protobuf:"bytes,10,opt,name=end_block,json=endBlock,proto3,oneof" json:"end_block,omitempty"` +} type Response_Commit struct { Commit *ResponseCommit `protobuf:"bytes,11,opt,name=commit,proto3,oneof" json:"commit,omitempty"` } @@ -1497,7 +1700,10 @@ func (*Response_Flush) isResponse_Value() {} func (*Response_Info) isResponse_Value() {} func (*Response_InitChain) isResponse_Value() {} func (*Response_Query) isResponse_Value() {} +func (*Response_BeginBlock) isResponse_Value() {} func (*Response_CheckTx) isResponse_Value() {} +func (*Response_DeliverTx) isResponse_Value() {} +func (*Response_EndBlock) isResponse_Value() {} func (*Response_Commit) isResponse_Value() {} func (*Response_ListSnapshots) isResponse_Value() {} func (*Response_OfferSnapshot) isResponse_Value() {} @@ -1558,6 +1764,13 @@ func (m *Response) GetQuery() *ResponseQuery { return nil } +func (m *Response) GetBeginBlock() *ResponseBeginBlock { + if x, ok := m.GetValue().(*Response_BeginBlock); ok { + return x.BeginBlock + } + return nil +} + func (m *Response) GetCheckTx() *ResponseCheckTx { if x, ok := m.GetValue().(*Response_CheckTx); ok { return x.CheckTx @@ -1565,6 +1778,20 @@ func (m *Response) GetCheckTx() *ResponseCheckTx { return nil } +func (m *Response) GetDeliverTx() *ResponseDeliverTx { + if x, ok := m.GetValue().(*Response_DeliverTx); ok { + return x.DeliverTx + } + return nil +} + +func (m *Response) GetEndBlock() *ResponseEndBlock { + if x, ok := m.GetValue().(*Response_EndBlock); ok { + return x.EndBlock + } + return nil +} + func (m *Response) GetCommit() *ResponseCommit { if x, ok := m.GetValue().(*Response_Commit); ok { return x.Commit @@ -1644,7 +1871,10 @@ func (*Response) XXX_OneofWrappers() []interface{} { (*Response_Info)(nil), (*Response_InitChain)(nil), (*Response_Query)(nil), + (*Response_BeginBlock)(nil), (*Response_CheckTx)(nil), + (*Response_DeliverTx)(nil), + (*Response_EndBlock)(nil), (*Response_Commit)(nil), (*Response_ListSnapshots)(nil), (*Response_OfferSnapshot)(nil), @@ -1667,7 +1897,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{18} + return fileDescriptor_252557cfdd89a31a, []int{21} } func (m *ResponseException) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1711,7 +1941,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{19} + return fileDescriptor_252557cfdd89a31a, []int{22} } func (m *ResponseEcho) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1754,7 +1984,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{20} + return fileDescriptor_252557cfdd89a31a, []int{23} } func (m *ResponseFlush) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1796,7 +2026,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{21} + return fileDescriptor_252557cfdd89a31a, []int{24} } func (m *ResponseInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1861,16 +2091,16 @@ func (m *ResponseInfo) GetLastBlockAppHash() []byte { } type ResponseInitChain struct { - ConsensusParams *types1.ConsensusParams `protobuf:"bytes,1,opt,name=consensus_params,json=consensusParams,proto3" json:"consensus_params,omitempty"` - Validators []ValidatorUpdate `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators"` - AppHash []byte `protobuf:"bytes,3,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"` + ConsensusParams *types.ConsensusParams `protobuf:"bytes,1,opt,name=consensus_params,json=consensusParams,proto3" json:"consensus_params,omitempty"` + Validators []ValidatorUpdate `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators"` + AppHash []byte `protobuf:"bytes,3,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"` } 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{22} + return fileDescriptor_252557cfdd89a31a, []int{25} } func (m *ResponseInitChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1899,7 +2129,7 @@ func (m *ResponseInitChain) XXX_DiscardUnknown() { var xxx_messageInfo_ResponseInitChain proto.InternalMessageInfo -func (m *ResponseInitChain) GetConsensusParams() *types1.ConsensusParams { +func (m *ResponseInitChain) GetConsensusParams() *types.ConsensusParams { if m != nil { return m.ConsensusParams } @@ -1937,7 +2167,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{23} + return fileDescriptor_252557cfdd89a31a, []int{26} } func (m *ResponseQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2029,6 +2259,50 @@ func (m *ResponseQuery) GetCodespace() string { return "" } +type ResponseBeginBlock struct { + Events []Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` +} + +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{27} +} +func (m *ResponseBeginBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseBeginBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseBeginBlock.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 *ResponseBeginBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseBeginBlock.Merge(m, src) +} +func (m *ResponseBeginBlock) XXX_Size() int { + return m.Size() +} +func (m *ResponseBeginBlock) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseBeginBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseBeginBlock proto.InternalMessageInfo + +func (m *ResponseBeginBlock) GetEvents() []Event { + if m != nil { + return m.Events + } + return nil +} + type ResponseCheckTx struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` @@ -2049,7 +2323,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{24} + return fileDescriptor_252557cfdd89a31a, []int{28} } func (m *ResponseCheckTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2170,7 +2444,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{25} + return fileDescriptor_252557cfdd89a31a, []int{29} } func (m *ResponseDeliverTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2255,24 +2529,84 @@ func (m *ResponseDeliverTx) GetCodespace() string { return "" } -type ResponseCommit struct { - // reserve 1 - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - RetainHeight int64 `protobuf:"varint,3,opt,name=retain_height,json=retainHeight,proto3" json:"retain_height,omitempty"` +type ResponseEndBlock struct { + ValidatorUpdates []ValidatorUpdate `protobuf:"bytes,1,rep,name=validator_updates,json=validatorUpdates,proto3" json:"validator_updates"` + ConsensusParamUpdates *types.ConsensusParams `protobuf:"bytes,2,opt,name=consensus_param_updates,json=consensusParamUpdates,proto3" json:"consensus_param_updates,omitempty"` + Events []Event `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` } -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{26} +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{30} } -func (m *ResponseCommit) XXX_Unmarshal(b []byte) error { +func (m *ResponseEndBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ResponseCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ResponseEndBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ResponseCommit.Marshal(b, m, deterministic) + return xxx_messageInfo_ResponseEndBlock.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 *ResponseEndBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseEndBlock.Merge(m, src) +} +func (m *ResponseEndBlock) XXX_Size() int { + return m.Size() +} +func (m *ResponseEndBlock) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseEndBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseEndBlock proto.InternalMessageInfo + +func (m *ResponseEndBlock) GetValidatorUpdates() []ValidatorUpdate { + if m != nil { + return m.ValidatorUpdates + } + return nil +} + +func (m *ResponseEndBlock) GetConsensusParamUpdates() *types.ConsensusParams { + if m != nil { + return m.ConsensusParamUpdates + } + return nil +} + +func (m *ResponseEndBlock) GetEvents() []Event { + if m != nil { + return m.Events + } + return nil +} + +type ResponseCommit struct { + // reserve 1 + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + RetainHeight int64 `protobuf:"varint,3,opt,name=retain_height,json=retainHeight,proto3" json:"retain_height,omitempty"` +} + +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{31} +} +func (m *ResponseCommit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseCommit.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2316,7 +2650,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{27} + return fileDescriptor_252557cfdd89a31a, []int{32} } func (m *ResponseListSnapshots) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2360,7 +2694,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{28} + return fileDescriptor_252557cfdd89a31a, []int{33} } func (m *ResponseOfferSnapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2404,7 +2738,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{29} + return fileDescriptor_252557cfdd89a31a, []int{34} } func (m *ResponseLoadSnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2450,7 +2784,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{30} + return fileDescriptor_252557cfdd89a31a, []int{35} } func (m *ResponseApplySnapshotChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2508,7 +2842,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{31} + return fileDescriptor_252557cfdd89a31a, []int{36} } func (m *ResponsePrepareProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2545,14 +2879,14 @@ func (m *ResponsePrepareProposal) GetBlockData() [][]byte { } type ResponseExtendVote struct { - VoteExtension *types1.VoteExtension `protobuf:"bytes,1,opt,name=vote_extension,json=voteExtension,proto3" json:"vote_extension,omitempty"` + VoteExtension *types.VoteExtension `protobuf:"bytes,1,opt,name=vote_extension,json=voteExtension,proto3" json:"vote_extension,omitempty"` } func (m *ResponseExtendVote) Reset() { *m = ResponseExtendVote{} } func (m *ResponseExtendVote) String() string { return proto.CompactTextString(m) } func (*ResponseExtendVote) ProtoMessage() {} func (*ResponseExtendVote) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{32} + return fileDescriptor_252557cfdd89a31a, []int{37} } func (m *ResponseExtendVote) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2581,7 +2915,7 @@ func (m *ResponseExtendVote) XXX_DiscardUnknown() { var xxx_messageInfo_ResponseExtendVote proto.InternalMessageInfo -func (m *ResponseExtendVote) GetVoteExtension() *types1.VoteExtension { +func (m *ResponseExtendVote) GetVoteExtension() *types.VoteExtension { if m != nil { return m.VoteExtension } @@ -2596,7 +2930,7 @@ func (m *ResponseVerifyVoteExtension) Reset() { *m = ResponseVerifyVoteE func (m *ResponseVerifyVoteExtension) String() string { return proto.CompactTextString(m) } func (*ResponseVerifyVoteExtension) ProtoMessage() {} func (*ResponseVerifyVoteExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{33} + return fileDescriptor_252557cfdd89a31a, []int{38} } func (m *ResponseVerifyVoteExtension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2633,15 +2967,18 @@ func (m *ResponseVerifyVoteExtension) GetResult() ResponseVerifyVoteExtension_Re } type ResponseProcessProposal struct { - Result ResponseProcessProposal_Result `protobuf:"varint,1,opt,name=result,proto3,enum=tendermint.abci.ResponseProcessProposal_Result" json:"result,omitempty"` - Evidence [][]byte `protobuf:"bytes,2,rep,name=evidence,proto3" json:"evidence,omitempty"` + Accept bool `protobuf:"varint,1,opt,name=accept,proto3" json:"accept,omitempty"` + AppHash []byte `protobuf:"bytes,2,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"` + TxResults []*ExecTxResult `protobuf:"bytes,3,rep,name=tx_results,json=txResults,proto3" json:"tx_results,omitempty"` + ValidatorUpdates []*ValidatorUpdate `protobuf:"bytes,4,rep,name=validator_updates,json=validatorUpdates,proto3" json:"validator_updates,omitempty"` + ConsensusParamUpdates *types.ConsensusParams `protobuf:"bytes,5,opt,name=consensus_param_updates,json=consensusParamUpdates,proto3" json:"consensus_param_updates,omitempty"` } 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{34} + return fileDescriptor_252557cfdd89a31a, []int{39} } func (m *ResponseProcessProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2670,32 +3007,53 @@ func (m *ResponseProcessProposal) XXX_DiscardUnknown() { var xxx_messageInfo_ResponseProcessProposal proto.InternalMessageInfo -func (m *ResponseProcessProposal) GetResult() ResponseProcessProposal_Result { +func (m *ResponseProcessProposal) GetAccept() bool { if m != nil { - return m.Result + return m.Accept + } + return false +} + +func (m *ResponseProcessProposal) GetAppHash() []byte { + if m != nil { + return m.AppHash + } + return nil +} + +func (m *ResponseProcessProposal) GetTxResults() []*ExecTxResult { + if m != nil { + return m.TxResults + } + return nil +} + +func (m *ResponseProcessProposal) GetValidatorUpdates() []*ValidatorUpdate { + if m != nil { + return m.ValidatorUpdates } - return ResponseProcessProposal_UNKNOWN + return nil } -func (m *ResponseProcessProposal) GetEvidence() [][]byte { +func (m *ResponseProcessProposal) GetConsensusParamUpdates() *types.ConsensusParams { if m != nil { - return m.Evidence + return m.ConsensusParamUpdates } return nil } type ResponseFinalizeBlock struct { - Txs []*ResponseDeliverTx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` - ValidatorUpdates []ValidatorUpdate `protobuf:"bytes,2,rep,name=validator_updates,json=validatorUpdates,proto3" json:"validator_updates"` - ConsensusParamUpdates *types1.ConsensusParams `protobuf:"bytes,3,opt,name=consensus_param_updates,json=consensusParamUpdates,proto3" json:"consensus_param_updates,omitempty"` - Events []Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` + Txs []*ResponseDeliverTx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"` + ValidatorUpdates []ValidatorUpdate `protobuf:"bytes,2,rep,name=validator_updates,json=validatorUpdates,proto3" json:"validator_updates"` + ConsensusParamUpdates *types.ConsensusParams `protobuf:"bytes,3,opt,name=consensus_param_updates,json=consensusParamUpdates,proto3" json:"consensus_param_updates,omitempty"` + Events []Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` } func (m *ResponseFinalizeBlock) Reset() { *m = ResponseFinalizeBlock{} } func (m *ResponseFinalizeBlock) String() string { return proto.CompactTextString(m) } func (*ResponseFinalizeBlock) ProtoMessage() {} func (*ResponseFinalizeBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{35} + return fileDescriptor_252557cfdd89a31a, []int{40} } func (m *ResponseFinalizeBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2738,7 +3096,7 @@ func (m *ResponseFinalizeBlock) GetValidatorUpdates() []ValidatorUpdate { return nil } -func (m *ResponseFinalizeBlock) GetConsensusParamUpdates() *types1.ConsensusParams { +func (m *ResponseFinalizeBlock) GetConsensusParamUpdates() *types.ConsensusParams { if m != nil { return m.ConsensusParamUpdates } @@ -2761,7 +3119,7 @@ func (m *LastCommitInfo) Reset() { *m = LastCommitInfo{} } func (m *LastCommitInfo) String() string { return proto.CompactTextString(m) } func (*LastCommitInfo) ProtoMessage() {} func (*LastCommitInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{36} + return fileDescriptor_252557cfdd89a31a, []int{41} } func (m *LastCommitInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2816,7 +3174,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{37} + return fileDescriptor_252557cfdd89a31a, []int{42} } func (m *Event) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2870,7 +3228,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{38} + return fileDescriptor_252557cfdd89a31a, []int{43} } func (m *EventAttribute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2920,6 +3278,109 @@ func (m *EventAttribute) GetIndex() bool { return false } +// ExecTxResult contains results of executing one individual transaction. +// +// * Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted +type ExecTxResult struct { + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + GasWanted int64 `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` + GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + TxEvents []Event `protobuf:"bytes,7,rep,name=tx_events,json=txEvents,proto3" json:"events,omitempty"` + Codespace string `protobuf:"bytes,8,opt,name=codespace,proto3" json:"codespace,omitempty"` +} + +func (m *ExecTxResult) Reset() { *m = ExecTxResult{} } +func (m *ExecTxResult) String() string { return proto.CompactTextString(m) } +func (*ExecTxResult) ProtoMessage() {} +func (*ExecTxResult) Descriptor() ([]byte, []int) { + return fileDescriptor_252557cfdd89a31a, []int{44} +} +func (m *ExecTxResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ExecTxResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ExecTxResult.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 *ExecTxResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExecTxResult.Merge(m, src) +} +func (m *ExecTxResult) XXX_Size() int { + return m.Size() +} +func (m *ExecTxResult) XXX_DiscardUnknown() { + xxx_messageInfo_ExecTxResult.DiscardUnknown(m) +} + +var xxx_messageInfo_ExecTxResult proto.InternalMessageInfo + +func (m *ExecTxResult) GetCode() uint32 { + if m != nil { + return m.Code + } + return 0 +} + +func (m *ExecTxResult) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +func (m *ExecTxResult) GetLog() string { + if m != nil { + return m.Log + } + return "" +} + +func (m *ExecTxResult) GetInfo() string { + if m != nil { + return m.Info + } + return "" +} + +func (m *ExecTxResult) GetGasWanted() int64 { + if m != nil { + return m.GasWanted + } + return 0 +} + +func (m *ExecTxResult) GetGasUsed() int64 { + if m != nil { + return m.GasUsed + } + return 0 +} + +func (m *ExecTxResult) GetTxEvents() []Event { + if m != nil { + return m.TxEvents + } + return nil +} + +func (m *ExecTxResult) GetCodespace() string { + if m != nil { + return m.Codespace + } + return "" +} + // TxResult contains results of executing the transaction. // // One usage is indexing transaction results. @@ -2934,7 +3395,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{39} + return fileDescriptor_252557cfdd89a31a, []int{45} } func (m *TxResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3002,7 +3463,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{40} + return fileDescriptor_252557cfdd89a31a, []int{46} } func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3055,7 +3516,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{41} + return fileDescriptor_252557cfdd89a31a, []int{47} } func (m *ValidatorUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3108,7 +3569,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{42} + return fileDescriptor_252557cfdd89a31a, []int{48} } func (m *VoteInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3169,7 +3630,7 @@ func (m *Evidence) Reset() { *m = Evidence{} } func (m *Evidence) String() string { return proto.CompactTextString(m) } func (*Evidence) ProtoMessage() {} func (*Evidence) Descriptor() ([]byte, []int) { - return fileDescriptor_252557cfdd89a31a, []int{43} + return fileDescriptor_252557cfdd89a31a, []int{49} } func (m *Evidence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3245,7 +3706,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{44} + return fileDescriptor_252557cfdd89a31a, []int{50} } func (m *Snapshot) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3315,13 +3776,15 @@ func init() { proto.RegisterEnum("tendermint.abci.ResponseOfferSnapshot_Result", ResponseOfferSnapshot_Result_name, ResponseOfferSnapshot_Result_value) proto.RegisterEnum("tendermint.abci.ResponseApplySnapshotChunk_Result", ResponseApplySnapshotChunk_Result_name, ResponseApplySnapshotChunk_Result_value) proto.RegisterEnum("tendermint.abci.ResponseVerifyVoteExtension_Result", ResponseVerifyVoteExtension_Result_name, ResponseVerifyVoteExtension_Result_value) - proto.RegisterEnum("tendermint.abci.ResponseProcessProposal_Result", ResponseProcessProposal_Result_name, ResponseProcessProposal_Result_value) proto.RegisterType((*Request)(nil), "tendermint.abci.Request") proto.RegisterType((*RequestEcho)(nil), "tendermint.abci.RequestEcho") + proto.RegisterType((*RequestBeginBlock)(nil), "tendermint.abci.RequestBeginBlock") proto.RegisterType((*RequestFlush)(nil), "tendermint.abci.RequestFlush") proto.RegisterType((*RequestInfo)(nil), "tendermint.abci.RequestInfo") proto.RegisterType((*RequestInitChain)(nil), "tendermint.abci.RequestInitChain") proto.RegisterType((*RequestQuery)(nil), "tendermint.abci.RequestQuery") + proto.RegisterType((*RequestDeliverTx)(nil), "tendermint.abci.RequestDeliverTx") + proto.RegisterType((*RequestEndBlock)(nil), "tendermint.abci.RequestEndBlock") proto.RegisterType((*RequestCheckTx)(nil), "tendermint.abci.RequestCheckTx") proto.RegisterType((*RequestCommit)(nil), "tendermint.abci.RequestCommit") proto.RegisterType((*RequestListSnapshots)(nil), "tendermint.abci.RequestListSnapshots") @@ -3340,8 +3803,10 @@ func init() { proto.RegisterType((*ResponseInfo)(nil), "tendermint.abci.ResponseInfo") proto.RegisterType((*ResponseInitChain)(nil), "tendermint.abci.ResponseInitChain") proto.RegisterType((*ResponseQuery)(nil), "tendermint.abci.ResponseQuery") + proto.RegisterType((*ResponseBeginBlock)(nil), "tendermint.abci.ResponseBeginBlock") proto.RegisterType((*ResponseCheckTx)(nil), "tendermint.abci.ResponseCheckTx") proto.RegisterType((*ResponseDeliverTx)(nil), "tendermint.abci.ResponseDeliverTx") + proto.RegisterType((*ResponseEndBlock)(nil), "tendermint.abci.ResponseEndBlock") proto.RegisterType((*ResponseCommit)(nil), "tendermint.abci.ResponseCommit") proto.RegisterType((*ResponseListSnapshots)(nil), "tendermint.abci.ResponseListSnapshots") proto.RegisterType((*ResponseOfferSnapshot)(nil), "tendermint.abci.ResponseOfferSnapshot") @@ -3355,6 +3820,7 @@ func init() { proto.RegisterType((*LastCommitInfo)(nil), "tendermint.abci.LastCommitInfo") proto.RegisterType((*Event)(nil), "tendermint.abci.Event") proto.RegisterType((*EventAttribute)(nil), "tendermint.abci.EventAttribute") + proto.RegisterType((*ExecTxResult)(nil), "tendermint.abci.ExecTxResult") proto.RegisterType((*TxResult)(nil), "tendermint.abci.TxResult") proto.RegisterType((*Validator)(nil), "tendermint.abci.Validator") proto.RegisterType((*ValidatorUpdate)(nil), "tendermint.abci.ValidatorUpdate") @@ -3366,192 +3832,208 @@ func init() { func init() { proto.RegisterFile("tendermint/abci/types.proto", fileDescriptor_252557cfdd89a31a) } var fileDescriptor_252557cfdd89a31a = []byte{ - // 2958 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x9a, 0xcb, 0x73, 0xe3, 0xc6, - 0xd1, 0xc0, 0x09, 0xbe, 0x44, 0x36, 0x9f, 0x1a, 0xc9, 0x6b, 0x1a, 0xde, 0x95, 0x64, 0xb8, 0x6c, - 0xaf, 0xd7, 0x6b, 0xe9, 0xb3, 0xf6, 0xb3, 0xb3, 0x2e, 0xe7, 0x25, 0x71, 0x29, 0x53, 0x5e, 0x45, - 0x52, 0x46, 0xdc, 0x75, 0x39, 0xb1, 0x0d, 0x83, 0xe4, 0x48, 0x84, 0x97, 0x04, 0x60, 0x00, 0xa4, - 0xa5, 0x3d, 0xa6, 0x2a, 0x17, 0x57, 0xa5, 0xca, 0xc7, 0x5c, 0x7c, 0x4b, 0x55, 0x72, 0xc9, 0x21, - 0xb7, 0x9c, 0x72, 0x4a, 0x55, 0x7c, 0xc8, 0xc1, 0xc7, 0x1c, 0x52, 0x4e, 0xca, 0x7b, 0xcb, 0x3f, - 0x90, 0x4b, 0x52, 0x95, 0x9a, 0x07, 0x5e, 0x24, 0xc1, 0x47, 0x92, 0x5b, 0x6e, 0x98, 0x46, 0x77, - 0x63, 0x30, 0x98, 0xe9, 0xf9, 0x75, 0x63, 0xe0, 0x59, 0x97, 0x18, 0x5d, 0x62, 0x0f, 0x74, 0xc3, - 0xdd, 0xd1, 0xda, 0x1d, 0x7d, 0xc7, 0xbd, 0xb2, 0x88, 0xb3, 0x6d, 0xd9, 0xa6, 0x6b, 0xa2, 0x4a, - 0x70, 0x73, 0x9b, 0xde, 0x94, 0x6f, 0x84, 0xb4, 0x3b, 0xf6, 0x95, 0xe5, 0x9a, 0x3b, 0x96, 0x6d, - 0x9a, 0xe7, 0x5c, 0x5f, 0xbe, 0x1e, 0xba, 0xcd, 0xfc, 0x84, 0xbd, 0x45, 0xee, 0x0a, 0xe3, 0x47, - 0xe4, 0xca, 0xbb, 0x7b, 0x63, 0xc2, 0xd6, 0xd2, 0x6c, 0x6d, 0xe0, 0xdd, 0xde, 0xbc, 0x30, 0xcd, - 0x8b, 0x3e, 0xd9, 0x61, 0xad, 0xf6, 0xf0, 0x7c, 0xc7, 0xd5, 0x07, 0xc4, 0x71, 0xb5, 0x81, 0x25, - 0x14, 0xd6, 0x2f, 0xcc, 0x0b, 0x93, 0x5d, 0xee, 0xd0, 0x2b, 0x2e, 0x55, 0x7e, 0x99, 0x87, 0x15, - 0x4c, 0x3e, 0x19, 0x12, 0xc7, 0x45, 0xbb, 0x90, 0x26, 0x9d, 0x9e, 0x59, 0x93, 0xb6, 0xa4, 0x9b, - 0x85, 0xdd, 0xeb, 0xdb, 0x63, 0x2f, 0xb7, 0x2d, 0xf4, 0x1a, 0x9d, 0x9e, 0xd9, 0x4c, 0x60, 0xa6, - 0x8b, 0x5e, 0x87, 0xcc, 0x79, 0x7f, 0xe8, 0xf4, 0x6a, 0x49, 0x66, 0x74, 0x23, 0xce, 0xe8, 0x80, - 0x2a, 0x35, 0x13, 0x98, 0x6b, 0xd3, 0x47, 0xe9, 0xc6, 0xb9, 0x59, 0x4b, 0xcd, 0x7e, 0xd4, 0xa1, - 0x71, 0xce, 0x1e, 0x45, 0x75, 0xd1, 0x3e, 0x80, 0x6e, 0xe8, 0xae, 0xda, 0xe9, 0x69, 0xba, 0x51, - 0x4b, 0x33, 0xcb, 0xe7, 0xe2, 0x2d, 0x75, 0xb7, 0x4e, 0x15, 0x9b, 0x09, 0x9c, 0xd7, 0xbd, 0x06, - 0xed, 0xee, 0x27, 0x43, 0x62, 0x5f, 0xd5, 0x32, 0xb3, 0xbb, 0xfb, 0x43, 0xaa, 0x44, 0xbb, 0xcb, - 0xb4, 0xd1, 0xb7, 0x21, 0xd7, 0xe9, 0x91, 0xce, 0x23, 0xd5, 0xbd, 0xac, 0xad, 0x30, 0xcb, 0xcd, - 0x38, 0xcb, 0x3a, 0xd5, 0x6b, 0x5d, 0x36, 0x13, 0x78, 0xa5, 0xc3, 0x2f, 0xd1, 0x5d, 0xc8, 0x76, - 0xcc, 0xc1, 0x40, 0x77, 0x6b, 0xc0, 0x6c, 0x37, 0x62, 0x6d, 0x99, 0x56, 0x33, 0x81, 0x85, 0x3e, - 0x3a, 0x86, 0x72, 0x5f, 0x77, 0x5c, 0xd5, 0x31, 0x34, 0xcb, 0xe9, 0x99, 0xae, 0x53, 0x2b, 0x30, - 0x0f, 0x2f, 0xc4, 0x79, 0x38, 0xd2, 0x1d, 0xf7, 0xcc, 0x53, 0x6e, 0x26, 0x70, 0xa9, 0x1f, 0x16, - 0x50, 0x7f, 0xe6, 0xf9, 0x39, 0xb1, 0x7d, 0x87, 0xb5, 0xe2, 0x6c, 0x7f, 0x27, 0x54, 0xdb, 0xb3, - 0xa7, 0xfe, 0xcc, 0xb0, 0x00, 0xfd, 0x18, 0xd6, 0xfa, 0xa6, 0xd6, 0xf5, 0xdd, 0xa9, 0x9d, 0xde, - 0xd0, 0x78, 0x54, 0x2b, 0x31, 0xa7, 0x2f, 0xc7, 0x76, 0xd2, 0xd4, 0xba, 0x9e, 0x8b, 0x3a, 0x35, - 0x68, 0x26, 0xf0, 0x6a, 0x7f, 0x5c, 0x88, 0x3e, 0x84, 0x75, 0xcd, 0xb2, 0xfa, 0x57, 0xe3, 0xde, - 0xcb, 0xcc, 0xfb, 0xad, 0x38, 0xef, 0x7b, 0xd4, 0x66, 0xdc, 0x3d, 0xd2, 0x26, 0xa4, 0xa8, 0x05, - 0x55, 0xcb, 0x26, 0x96, 0x66, 0x13, 0xd5, 0xb2, 0x4d, 0xcb, 0x74, 0xb4, 0x7e, 0xad, 0xc2, 0x7c, - 0xbf, 0x14, 0xe7, 0xfb, 0x94, 0xeb, 0x9f, 0x0a, 0xf5, 0x66, 0x02, 0x57, 0xac, 0xa8, 0x88, 0x7b, - 0x35, 0x3b, 0xc4, 0x71, 0x02, 0xaf, 0xd5, 0x79, 0x5e, 0x99, 0x7e, 0xd4, 0x6b, 0x44, 0x84, 0x1a, - 0x50, 0x20, 0x97, 0xd4, 0x5c, 0x1d, 0x99, 0x2e, 0xa9, 0xad, 0x32, 0x87, 0x4a, 0xec, 0x0a, 0x65, - 0xaa, 0x0f, 0x4d, 0x97, 0x34, 0x13, 0x18, 0x88, 0xdf, 0x42, 0x1a, 0x3c, 0x35, 0x22, 0xb6, 0x7e, - 0x7e, 0xc5, 0xdc, 0xa8, 0xec, 0x8e, 0xa3, 0x9b, 0x46, 0x0d, 0x31, 0x87, 0xaf, 0xc4, 0x39, 0x7c, - 0xc8, 0x8c, 0xa8, 0x8b, 0x86, 0x67, 0xd2, 0x4c, 0xe0, 0xb5, 0xd1, 0xa4, 0x98, 0x4e, 0xb1, 0x73, - 0xdd, 0xd0, 0xfa, 0xfa, 0x63, 0xa2, 0xb6, 0xfb, 0x66, 0xe7, 0x51, 0x6d, 0x6d, 0xf6, 0x14, 0x3b, - 0x10, 0xda, 0xfb, 0x54, 0x99, 0x4e, 0xb1, 0xf3, 0xb0, 0x60, 0x7f, 0x05, 0x32, 0x23, 0xad, 0x3f, - 0x24, 0xca, 0x4b, 0x50, 0x08, 0x05, 0x20, 0x54, 0x83, 0x95, 0x01, 0x71, 0x1c, 0xed, 0x82, 0xb0, - 0x78, 0x95, 0xc7, 0x5e, 0x53, 0x29, 0x43, 0x31, 0x1c, 0x74, 0x94, 0xcf, 0x25, 0xdf, 0x92, 0xc6, - 0x13, 0x6a, 0x39, 0x22, 0x36, 0x7b, 0x6d, 0x61, 0x29, 0x9a, 0xe8, 0x79, 0x28, 0xb1, 0x2e, 0xab, - 0xde, 0x7d, 0x1a, 0xd4, 0xd2, 0xb8, 0xc8, 0x84, 0x0f, 0x85, 0xd2, 0x26, 0x14, 0xac, 0x5d, 0xcb, - 0x57, 0x49, 0x31, 0x15, 0xb0, 0x76, 0x2d, 0x4f, 0xe1, 0x39, 0x28, 0xd2, 0xf7, 0xf3, 0x35, 0xd2, - 0xec, 0x21, 0x05, 0x2a, 0x13, 0x2a, 0xca, 0x1f, 0x93, 0x50, 0x1d, 0x0f, 0x54, 0xe8, 0x2e, 0xa4, - 0x69, 0xcc, 0x16, 0xe1, 0x57, 0xde, 0xe6, 0x01, 0x7d, 0xdb, 0x0b, 0xe8, 0xdb, 0x2d, 0x2f, 0xa0, - 0xef, 0xe7, 0xbe, 0xfc, 0x7a, 0x33, 0xf1, 0xf9, 0x5f, 0x36, 0x25, 0xcc, 0x2c, 0xd0, 0x33, 0x34, - 0x3c, 0x69, 0xba, 0xa1, 0xea, 0x5d, 0xd6, 0xe5, 0x3c, 0x8d, 0x3d, 0x9a, 0x6e, 0x1c, 0x76, 0xd1, - 0x11, 0x54, 0x3b, 0xa6, 0xe1, 0x10, 0xc3, 0x19, 0x3a, 0x2a, 0xdf, 0x30, 0x44, 0xd0, 0x8d, 0x84, - 0x4e, 0xbe, 0x0d, 0xd5, 0x3d, 0xcd, 0x53, 0xa6, 0x88, 0x2b, 0x9d, 0xa8, 0x00, 0x1d, 0x00, 0x8c, - 0xb4, 0xbe, 0xde, 0xd5, 0x5c, 0xd3, 0x76, 0x6a, 0xe9, 0xad, 0xd4, 0xcd, 0xc2, 0xee, 0xd6, 0xc4, - 0x87, 0x7d, 0xe8, 0xa9, 0x3c, 0xb0, 0xba, 0x9a, 0x4b, 0xf6, 0xd3, 0xb4, 0xbb, 0x38, 0x64, 0x89, - 0x5e, 0x84, 0x8a, 0x66, 0x59, 0xaa, 0xe3, 0x6a, 0x2e, 0x51, 0xdb, 0x57, 0x2e, 0x71, 0x58, 0x40, - 0x2e, 0xe2, 0x92, 0x66, 0x59, 0x67, 0x54, 0xba, 0x4f, 0x85, 0xe8, 0x05, 0x28, 0xd3, 0xd8, 0xad, - 0x6b, 0x7d, 0xb5, 0x47, 0xf4, 0x8b, 0x9e, 0x5b, 0xcb, 0x6e, 0x49, 0x37, 0x53, 0xb8, 0x24, 0xa4, - 0x4d, 0x26, 0x54, 0xba, 0xfe, 0x17, 0x67, 0x71, 0x1b, 0x21, 0x48, 0x77, 0x35, 0x57, 0x63, 0x23, - 0x59, 0xc4, 0xec, 0x9a, 0xca, 0x2c, 0xcd, 0xed, 0x89, 0xf1, 0x61, 0xd7, 0xe8, 0x1a, 0x64, 0x85, - 0xdb, 0x14, 0x73, 0x2b, 0x5a, 0x68, 0x1d, 0x32, 0x96, 0x6d, 0x8e, 0x08, 0xfb, 0x74, 0x39, 0xcc, - 0x1b, 0x0a, 0x86, 0x72, 0x34, 0xc6, 0xa3, 0x32, 0x24, 0xdd, 0x4b, 0xf1, 0x94, 0xa4, 0x7b, 0x89, - 0xfe, 0x0f, 0xd2, 0x74, 0x20, 0xd9, 0x33, 0xca, 0x53, 0x76, 0x35, 0x61, 0xd7, 0xba, 0xb2, 0x08, - 0x66, 0x9a, 0x4a, 0x05, 0x4a, 0x91, 0xd8, 0xaf, 0x5c, 0x83, 0xf5, 0x69, 0xa1, 0x5c, 0xe9, 0xf9, - 0xf2, 0x48, 0x48, 0x46, 0xaf, 0x43, 0xce, 0x8f, 0xe5, 0x7c, 0xe2, 0x3c, 0x33, 0xf1, 0x58, 0x4f, - 0x19, 0xfb, 0xaa, 0x74, 0xc6, 0xd0, 0x0f, 0xd0, 0xd3, 0xc4, 0xce, 0x5d, 0xc4, 0x2b, 0x9a, 0x65, - 0x35, 0x35, 0xa7, 0xa7, 0x7c, 0x04, 0xb5, 0xb8, 0x38, 0x1d, 0x1a, 0x30, 0x89, 0x4d, 0x7b, 0x6f, - 0xc0, 0xae, 0x41, 0xf6, 0xdc, 0xb4, 0x07, 0x9a, 0xcb, 0x9c, 0x95, 0xb0, 0x68, 0xd1, 0x81, 0xe4, - 0x31, 0x3b, 0xc5, 0xc4, 0xbc, 0xa1, 0xa8, 0xf0, 0x4c, 0x6c, 0xac, 0xa6, 0x26, 0xba, 0xd1, 0x25, - 0x7c, 0x58, 0x4b, 0x98, 0x37, 0x02, 0x47, 0xbc, 0xb3, 0xbc, 0x41, 0x1f, 0xeb, 0xb0, 0x77, 0x65, - 0xfe, 0xf3, 0x58, 0xb4, 0x94, 0x9f, 0x49, 0x70, 0x6d, 0x7a, 0xc4, 0x46, 0x37, 0x00, 0xf8, 0x12, - 0x17, 0x13, 0x24, 0x75, 0xb3, 0x88, 0xf3, 0x4c, 0x72, 0x8f, 0xce, 0x92, 0x17, 0xa1, 0x12, 0xdc, - 0x56, 0x1d, 0xfd, 0x31, 0xff, 0x98, 0x29, 0x5c, 0xf2, 0x75, 0xce, 0xf4, 0xc7, 0x04, 0xdd, 0x86, - 0x0c, 0x8d, 0xa0, 0x74, 0x2d, 0xd1, 0x35, 0x70, 0x6d, 0x72, 0x2d, 0xd1, 0xa8, 0x88, 0xb9, 0x92, - 0xf2, 0x3d, 0x58, 0x9d, 0x88, 0xcc, 0xe8, 0x16, 0xa4, 0x59, 0x2c, 0xe7, 0x5f, 0x2d, 0xce, 0x03, - 0xd3, 0x51, 0x9a, 0x20, 0xc7, 0x47, 0xe2, 0xa5, 0x3c, 0xb5, 0x43, 0x23, 0x13, 0xdd, 0x62, 0xde, - 0xa0, 0xdf, 0x56, 0xa3, 0x83, 0xc9, 0xfd, 0xd4, 0x26, 0xfd, 0x34, 0xd9, 0x7d, 0xb1, 0x9e, 0x85, - 0x36, 0xaa, 0x42, 0xca, 0xbd, 0x74, 0x6a, 0x49, 0x36, 0x94, 0xf4, 0x52, 0xf9, 0x4d, 0xd2, 0x9f, - 0xac, 0x91, 0xe0, 0xee, 0xa9, 0x4a, 0xbe, 0x2a, 0x5d, 0x95, 0xa1, 0x39, 0xc8, 0xae, 0x63, 0x57, - 0x65, 0xd0, 0xc1, 0xf4, 0x52, 0x1d, 0x3c, 0x81, 0x6a, 0x5f, 0x73, 0x5c, 0x95, 0x33, 0x95, 0xca, - 0xb8, 0x33, 0x13, 0x03, 0x71, 0x47, 0x9a, 0xb7, 0x12, 0xe9, 0x56, 0x21, 0x1c, 0x95, 0xfb, 0x11, - 0x29, 0xc2, 0xb0, 0xde, 0xbe, 0x7a, 0xac, 0x19, 0xae, 0x6e, 0x10, 0x35, 0x14, 0x0f, 0xb3, 0x6c, - 0x2e, 0x4c, 0xae, 0xbf, 0xc6, 0x48, 0xef, 0x12, 0xa3, 0xe3, 0x05, 0xc2, 0x35, 0xdf, 0xd8, 0x0f, - 0x94, 0x8e, 0xf2, 0x8f, 0x3c, 0xe4, 0x30, 0x71, 0x2c, 0x1a, 0x70, 0xd1, 0x3e, 0xe4, 0xc9, 0x65, - 0x87, 0x58, 0xae, 0xb7, 0x47, 0x4d, 0xdf, 0xeb, 0xb9, 0x76, 0xc3, 0xd3, 0xa4, 0xa4, 0xeb, 0x9b, - 0xa1, 0x3b, 0x02, 0xe6, 0xe3, 0xb9, 0x5c, 0x98, 0x87, 0x69, 0xfe, 0x0d, 0x8f, 0xe6, 0x53, 0xb1, - 0xa0, 0xca, 0xad, 0xc6, 0x70, 0xfe, 0x8e, 0xc0, 0xf9, 0xf4, 0x9c, 0x87, 0x45, 0x78, 0xbe, 0x1e, - 0xe1, 0xf9, 0xcc, 0x9c, 0xd7, 0x8c, 0x01, 0xfa, 0x37, 0x3c, 0xa0, 0xcf, 0xce, 0xe9, 0xf1, 0x18, - 0xd1, 0x7f, 0x27, 0x44, 0xf4, 0x39, 0x66, 0xba, 0x15, 0x6b, 0x3a, 0x05, 0xe9, 0xdf, 0xf4, 0x91, - 0xbe, 0x10, 0x9b, 0x0e, 0x08, 0xe3, 0x71, 0xa6, 0x3f, 0x99, 0x60, 0x7a, 0xce, 0xe0, 0x2f, 0xc6, - 0xba, 0x98, 0x03, 0xf5, 0x27, 0x13, 0x50, 0x5f, 0x9a, 0xe3, 0x70, 0x0e, 0xd5, 0xbf, 0x3f, 0x9d, - 0xea, 0xe3, 0xb9, 0x5b, 0x74, 0x73, 0x31, 0xac, 0x57, 0x63, 0xb0, 0xbe, 0x12, 0x8b, 0xa0, 0xdc, - 0xfd, 0xc2, 0x5c, 0xff, 0x60, 0x0a, 0xd7, 0x73, 0x02, 0xbf, 0x19, 0xeb, 0x7c, 0x01, 0xb0, 0x7f, - 0x30, 0x05, 0xec, 0x57, 0xe7, 0xba, 0x9d, 0x4b, 0xf6, 0x07, 0x51, 0xb2, 0xe7, 0x20, 0xfe, 0xfc, - 0x8c, 0xd5, 0x1e, 0x83, 0xf6, 0xed, 0x38, 0xb4, 0xe7, 0xf8, 0x7d, 0x3b, 0xd6, 0xe3, 0x12, 0x6c, - 0x7f, 0x32, 0xc1, 0xf6, 0xeb, 0x73, 0x66, 0xda, 0xa2, 0x70, 0xff, 0x32, 0xdd, 0x21, 0xc7, 0xe2, - 0x19, 0xdd, 0xf4, 0x89, 0x6d, 0x9b, 0xb6, 0xc0, 0x74, 0xde, 0x50, 0x6e, 0x52, 0xd8, 0x0b, 0x62, - 0xd7, 0x8c, 0x44, 0x80, 0xc1, 0x55, 0x28, 0x5e, 0x29, 0xbf, 0x95, 0x02, 0x5b, 0x16, 0xc9, 0xc3, - 0xa0, 0x98, 0x17, 0xa0, 0x18, 0x4a, 0x0f, 0x92, 0xd1, 0xf4, 0x60, 0x13, 0x0a, 0x14, 0x9a, 0xc6, - 0xc8, 0x5f, 0xb3, 0x7c, 0xf2, 0xbf, 0x05, 0xab, 0x6c, 0xa7, 0xe1, 0x08, 0x21, 0x36, 0xb1, 0x34, - 0xdb, 0xc4, 0x2a, 0xf4, 0x06, 0x1f, 0x05, 0xbe, 0x9b, 0xbd, 0x0a, 0x6b, 0x21, 0x5d, 0x1f, 0xc6, - 0x38, 0x06, 0x57, 0x7d, 0xed, 0x3d, 0x41, 0x65, 0xbf, 0x97, 0x82, 0x11, 0x0a, 0x52, 0x86, 0x69, - 0x74, 0x2f, 0xfd, 0x97, 0xe8, 0x3e, 0xf9, 0x6f, 0xd3, 0x7d, 0x18, 0x2e, 0x53, 0x51, 0xb8, 0xfc, - 0xbb, 0x14, 0x7c, 0x13, 0x9f, 0xd5, 0x3b, 0x66, 0x97, 0x08, 0xdc, 0x63, 0xd7, 0x94, 0x13, 0xfa, - 0xe6, 0x85, 0x80, 0x3a, 0x7a, 0x49, 0xb5, 0xfc, 0x0d, 0x26, 0x2f, 0xf6, 0x0f, 0x9f, 0x14, 0x33, - 0x6c, 0x84, 0x05, 0x29, 0x56, 0x21, 0xf5, 0x88, 0xf0, 0xed, 0xa0, 0x88, 0xe9, 0x25, 0xd5, 0x63, - 0x93, 0x8c, 0x55, 0x6e, 0x8a, 0x98, 0x37, 0xd0, 0x5d, 0xc8, 0xb3, 0xca, 0x9c, 0x6a, 0x5a, 0x8e, - 0xd8, 0x01, 0x9e, 0x0d, 0xbf, 0x2b, 0x2f, 0xc0, 0x6d, 0x9f, 0x52, 0x9d, 0x13, 0xcb, 0xc1, 0x39, - 0x4b, 0x5c, 0x85, 0xf8, 0x24, 0x1f, 0xe1, 0x93, 0xeb, 0x90, 0xa7, 0xbd, 0x77, 0x2c, 0xad, 0x43, - 0x58, 0xa5, 0x27, 0x8f, 0x03, 0x81, 0xf2, 0xe7, 0x24, 0x54, 0xc6, 0x36, 0x94, 0xa9, 0xef, 0xee, - 0x4d, 0xc9, 0x64, 0x28, 0x77, 0x59, 0x6c, 0x3c, 0x36, 0x00, 0x2e, 0x34, 0x47, 0xfd, 0x54, 0x33, - 0x5c, 0xd2, 0x15, 0x83, 0x12, 0x92, 0x20, 0x19, 0x72, 0xb4, 0x35, 0x74, 0x48, 0x57, 0xa4, 0x51, - 0x7e, 0x1b, 0x35, 0x21, 0x4b, 0x46, 0xc4, 0x70, 0x9d, 0xda, 0xca, 0x24, 0xd0, 0x0a, 0x88, 0x21, - 0x86, 0xbb, 0x5f, 0xa3, 0x1f, 0xfb, 0x6f, 0x5f, 0x6f, 0x56, 0xb9, 0xf6, 0x6d, 0x73, 0xa0, 0xbb, - 0x64, 0x60, 0xb9, 0x57, 0x58, 0xd8, 0x47, 0x47, 0x21, 0x37, 0x36, 0x0a, 0x21, 0x62, 0xcf, 0x87, - 0x89, 0x9d, 0xf6, 0xcd, 0xb2, 0x75, 0xd3, 0xd6, 0xdd, 0x2b, 0x36, 0x74, 0x29, 0xec, 0xb7, 0x69, - 0x56, 0x3e, 0x20, 0x03, 0xcb, 0x34, 0xfb, 0x2a, 0x0f, 0x07, 0x05, 0x66, 0x5a, 0x14, 0xc2, 0x06, - 0x8b, 0x0a, 0x3f, 0x4d, 0x06, 0xeb, 0xe3, 0x1e, 0xe9, 0xeb, 0x23, 0x62, 0xff, 0x2f, 0x0e, 0xb0, - 0x72, 0x48, 0x93, 0xd4, 0x30, 0x79, 0x4c, 0x7d, 0xdf, 0xe7, 0xa1, 0x64, 0x13, 0x57, 0xd3, 0x0d, - 0x35, 0x42, 0xda, 0x45, 0x2e, 0x14, 0x59, 0xf5, 0x29, 0x3c, 0x35, 0x95, 0x40, 0xd0, 0xb7, 0x20, - 0x1f, 0xc0, 0x8b, 0x14, 0x03, 0xbd, 0x7e, 0xd2, 0x19, 0xe8, 0x2a, 0xbf, 0x93, 0x02, 0x97, 0xd1, - 0x34, 0xb6, 0x01, 0x59, 0x9b, 0x38, 0xc3, 0x3e, 0x4f, 0x2c, 0xcb, 0xbb, 0xaf, 0x2e, 0xc6, 0x2e, - 0x54, 0x3a, 0xec, 0xbb, 0x58, 0x18, 0x2b, 0x1f, 0x42, 0x96, 0x4b, 0x50, 0x01, 0x56, 0x1e, 0x1c, - 0xdf, 0x3f, 0x3e, 0x79, 0xf7, 0xb8, 0x9a, 0x40, 0x00, 0xd9, 0xbd, 0x7a, 0xbd, 0x71, 0xda, 0xaa, - 0x4a, 0x28, 0x0f, 0x99, 0xbd, 0xfd, 0x13, 0xdc, 0xaa, 0x26, 0xa9, 0x18, 0x37, 0xde, 0x69, 0xd4, - 0x5b, 0xd5, 0x14, 0x5a, 0x85, 0x12, 0xbf, 0x56, 0x0f, 0x4e, 0xf0, 0x0f, 0xf6, 0x5a, 0xd5, 0x74, - 0x48, 0x74, 0xd6, 0x38, 0xbe, 0xd7, 0xc0, 0xd5, 0x8c, 0xf2, 0x1a, 0xcd, 0x5c, 0x63, 0x68, 0x27, - 0xc8, 0x51, 0xa5, 0x50, 0x8e, 0xaa, 0xfc, 0x3c, 0x49, 0x73, 0xb7, 0x38, 0x84, 0x41, 0xef, 0x8c, - 0xbd, 0xf8, 0xee, 0x12, 0xfc, 0x33, 0xf6, 0xf6, 0xe8, 0x05, 0x28, 0xdb, 0xe4, 0x9c, 0xb8, 0x9d, - 0x1e, 0x47, 0x2a, 0x1e, 0xc3, 0x4b, 0xb8, 0x24, 0xa4, 0xcc, 0xc8, 0xe1, 0x6a, 0x1f, 0x93, 0x8e, - 0xab, 0xf2, 0xc5, 0xc7, 0x93, 0xd8, 0x3c, 0x55, 0xa3, 0xd2, 0x33, 0x2e, 0x54, 0x3e, 0x5a, 0x6a, - 0x2c, 0xf3, 0x90, 0xc1, 0x8d, 0x16, 0x7e, 0xaf, 0x9a, 0x42, 0x08, 0xca, 0xec, 0x52, 0x3d, 0x3b, - 0xde, 0x3b, 0x3d, 0x6b, 0x9e, 0xd0, 0xb1, 0x5c, 0x83, 0x8a, 0x37, 0x96, 0x9e, 0x30, 0xa3, 0xdc, - 0x85, 0xa7, 0x63, 0xf8, 0x6b, 0x4e, 0x9a, 0xae, 0xbc, 0x0f, 0x68, 0x12, 0x88, 0xd0, 0x01, 0x94, - 0xc7, 0xd8, 0x47, 0x9a, 0x84, 0xf3, 0x20, 0x23, 0xf6, 0xb9, 0x06, 0x97, 0x46, 0xe1, 0xa6, 0xf2, - 0x0b, 0x09, 0x9e, 0x9d, 0x41, 0x47, 0xe8, 0xfe, 0xd8, 0x37, 0xbb, 0xb3, 0x0c, 0x5b, 0x8d, 0x4f, - 0xd9, 0xbb, 0x0b, 0x0d, 0xf3, 0xd9, 0xd1, 0xde, 0x59, 0x33, 0x3a, 0x65, 0x95, 0x5f, 0x4b, 0xe1, - 0xf1, 0x8b, 0x52, 0xe5, 0xdb, 0x63, 0x5d, 0xdc, 0x59, 0x14, 0x51, 0xc7, 0xe7, 0x94, 0x0c, 0x39, - 0x22, 0xd2, 0x57, 0x91, 0xe2, 0xfb, 0x6d, 0xe5, 0xd5, 0xf9, 0x5d, 0x0f, 0xfa, 0x9b, 0x54, 0xfe, - 0x90, 0x0c, 0x56, 0x7f, 0xb4, 0x2e, 0xf0, 0xff, 0x41, 0x5d, 0x60, 0x56, 0x0a, 0xe8, 0xc7, 0x75, - 0x5e, 0x3b, 0x38, 0x83, 0x55, 0x1f, 0x3a, 0xd4, 0x21, 0x83, 0x91, 0x65, 0xa9, 0xa5, 0x3a, 0x8a, - 0x8a, 0x1d, 0xf4, 0x1e, 0x3c, 0x3d, 0x46, 0x54, 0xbe, 0xeb, 0x85, 0xcb, 0xa6, 0x4f, 0x45, 0xc1, - 0xca, 0x73, 0x1d, 0x6c, 0x01, 0xe9, 0xff, 0x6c, 0x0b, 0x50, 0x3e, 0x80, 0x72, 0xb4, 0x50, 0x41, - 0x63, 0x8f, 0x6d, 0x0e, 0x8d, 0x2e, 0xfb, 0xdc, 0x19, 0xcc, 0x1b, 0xe8, 0x75, 0xaf, 0x4a, 0x95, - 0x8c, 0x09, 0xd2, 0x74, 0x66, 0x86, 0x0a, 0x1d, 0xa2, 0x5c, 0xf5, 0x18, 0x32, 0xac, 0x27, 0x74, - 0xeb, 0x60, 0xf5, 0x4c, 0x81, 0xc7, 0xf4, 0x1a, 0x7d, 0x00, 0xa0, 0xb9, 0xae, 0xad, 0xb7, 0x87, - 0x81, 0xe3, 0xcd, 0xe9, 0x6f, 0xb2, 0xe7, 0xe9, 0xed, 0x5f, 0x17, 0xaf, 0xb4, 0x1e, 0x98, 0x86, - 0x5e, 0x2b, 0xe4, 0x50, 0x39, 0x86, 0x72, 0xd4, 0xd6, 0x03, 0x3a, 0xde, 0x87, 0x28, 0xd0, 0x71, - 0x3e, 0x17, 0x40, 0xe7, 0xe3, 0x60, 0x8a, 0x17, 0x6d, 0x59, 0x43, 0xf9, 0x4c, 0x82, 0x5c, 0xeb, - 0x52, 0x4c, 0xd3, 0x68, 0xf9, 0x32, 0x52, 0xef, 0xe5, 0xa6, 0xc9, 0x70, 0xcd, 0x91, 0x57, 0x77, - 0x53, 0x7e, 0x75, 0xf7, 0xfb, 0xfe, 0x9a, 0x4a, 0xcf, 0xa9, 0x55, 0xf8, 0x13, 0xd5, 0xab, 0x44, - 0x89, 0xb5, 0xfe, 0x16, 0xe4, 0xfd, 0x79, 0x48, 0xf3, 0x0c, 0xad, 0xdb, 0xb5, 0x89, 0xe3, 0x88, - 0x0d, 0xc3, 0x6b, 0xb2, 0xf2, 0xb3, 0xf9, 0xa9, 0xa8, 0x6a, 0xa6, 0x30, 0x6f, 0x28, 0x5d, 0xa8, - 0x8c, 0x4d, 0x62, 0xf4, 0x16, 0xac, 0x58, 0xc3, 0xb6, 0xea, 0x0d, 0xcf, 0xd8, 0x8f, 0x54, 0x8f, - 0x60, 0x87, 0xed, 0xbe, 0xde, 0xb9, 0x4f, 0xae, 0xbc, 0xce, 0x58, 0xc3, 0xf6, 0x7d, 0x3e, 0x8a, - 0xfc, 0x29, 0xc9, 0xf0, 0x53, 0x46, 0x90, 0xf3, 0x26, 0x05, 0xfa, 0x2e, 0xe4, 0xfd, 0xf5, 0xe1, - 0xff, 0x95, 0x88, 0x5d, 0x58, 0xc2, 0x7d, 0x60, 0x42, 0xd3, 0x21, 0x47, 0xbf, 0x30, 0x48, 0x57, - 0x0d, 0x32, 0x1d, 0xf6, 0xb4, 0x1c, 0xae, 0xf0, 0x1b, 0x47, 0x5e, 0x9a, 0xa3, 0xfc, 0x53, 0x82, - 0x9c, 0x57, 0x27, 0x43, 0xaf, 0x85, 0xe6, 0x5d, 0x79, 0x4a, 0x39, 0xc9, 0x53, 0x0c, 0x0a, 0xe9, - 0xd1, 0xbe, 0x26, 0x97, 0xef, 0x6b, 0x5c, 0xd1, 0xd1, 0xfb, 0x29, 0x93, 0x5e, 0xfa, 0xa7, 0xcc, - 0x6d, 0x40, 0xae, 0xe9, 0x6a, 0x7d, 0x9a, 0x8f, 0xeb, 0xc6, 0x85, 0xca, 0x07, 0x9b, 0x53, 0x63, - 0x95, 0xdd, 0x79, 0xc8, 0x6e, 0x9c, 0xb2, 0x71, 0xff, 0x89, 0x04, 0x39, 0x9f, 0x86, 0x96, 0x2d, - 0xb3, 0x5f, 0x83, 0xac, 0xd8, 0xf0, 0x79, 0x9d, 0x5d, 0xb4, 0xfc, 0xea, 0x6a, 0x3a, 0x54, 0x5d, - 0x95, 0x21, 0x37, 0x20, 0xae, 0xc6, 0xf6, 0x55, 0x9e, 0x6c, 0xfa, 0xed, 0x5b, 0x6f, 0x42, 0x21, - 0xf4, 0x8b, 0x82, 0xae, 0xbc, 0xe3, 0xc6, 0xbb, 0xd5, 0x84, 0xbc, 0xf2, 0xd9, 0x17, 0x5b, 0xa9, - 0x63, 0xf2, 0x29, 0x9d, 0xb3, 0xb8, 0x51, 0x6f, 0x36, 0xea, 0xf7, 0xab, 0x92, 0x5c, 0xf8, 0xec, - 0x8b, 0xad, 0x15, 0x4c, 0x58, 0x49, 0xec, 0x56, 0x13, 0x8a, 0xe1, 0xaf, 0x12, 0xdd, 0x11, 0x10, - 0x94, 0xef, 0x3d, 0x38, 0x3d, 0x3a, 0xac, 0xef, 0xb5, 0x1a, 0xea, 0xc3, 0x93, 0x56, 0xa3, 0x2a, - 0xa1, 0xa7, 0x61, 0xed, 0xe8, 0xf0, 0xed, 0x66, 0x4b, 0xad, 0x1f, 0x1d, 0x36, 0x8e, 0x5b, 0xea, - 0x5e, 0xab, 0xb5, 0x57, 0xbf, 0x5f, 0x4d, 0xee, 0xfe, 0xaa, 0x00, 0x95, 0xbd, 0xfd, 0xfa, 0x21, - 0xe5, 0x1d, 0xbd, 0xa3, 0xb1, 0x4a, 0x40, 0x1d, 0xd2, 0x2c, 0xd7, 0x9f, 0x79, 0x26, 0x41, 0x9e, - 0x5d, 0xe4, 0x44, 0x07, 0x90, 0x61, 0x65, 0x00, 0x34, 0xfb, 0x90, 0x82, 0x3c, 0xa7, 0xea, 0x49, - 0x3b, 0xc3, 0x96, 0xc7, 0xcc, 0x53, 0x0b, 0xf2, 0xec, 0x22, 0x28, 0x3a, 0x82, 0x15, 0x2f, 0x0b, - 0x9c, 0x77, 0x94, 0x40, 0x9e, 0x5b, 0x99, 0xa4, 0xaf, 0xc6, 0xb3, 0xe9, 0xd9, 0x07, 0x1a, 0xe4, - 0x39, 0xe5, 0x51, 0x74, 0x08, 0x59, 0x91, 0x35, 0xcc, 0x39, 0xa3, 0x20, 0xcf, 0x2b, 0x78, 0x22, - 0x0c, 0xf9, 0xa0, 0x4e, 0x31, 0xff, 0x98, 0x86, 0xbc, 0x40, 0xe5, 0x17, 0x7d, 0x08, 0xa5, 0x68, - 0x26, 0xb2, 0xd8, 0x39, 0x08, 0x79, 0xc1, 0xd2, 0x2a, 0xf5, 0x1f, 0x4d, 0x4b, 0x16, 0x3b, 0x17, - 0x21, 0x2f, 0x58, 0x69, 0x45, 0x1f, 0xc3, 0xea, 0x64, 0xda, 0xb0, 0xf8, 0x31, 0x09, 0x79, 0x89, - 0xda, 0x2b, 0x1a, 0x00, 0x9a, 0x92, 0x6e, 0x2c, 0x71, 0x6a, 0x42, 0x5e, 0xa6, 0x14, 0x8b, 0xba, - 0x50, 0x19, 0x67, 0xf8, 0x45, 0x4f, 0x51, 0xc8, 0x0b, 0x97, 0x65, 0xf9, 0x53, 0xa2, 0xa4, 0xbb, - 0xe8, 0xa9, 0x0a, 0x79, 0xe1, 0x2a, 0x2d, 0x7a, 0x00, 0x10, 0xca, 0x2a, 0x16, 0x38, 0x65, 0x21, - 0x2f, 0x52, 0xaf, 0x45, 0x16, 0xac, 0x4d, 0xcb, 0x26, 0x96, 0x39, 0x74, 0x21, 0x2f, 0x55, 0xc6, - 0xa5, 0xf3, 0x39, 0x0a, 0xda, 0x8b, 0x1d, 0xc2, 0x90, 0x17, 0xac, 0xe7, 0xee, 0x37, 0xbe, 0xfc, - 0x66, 0x43, 0xfa, 0xea, 0x9b, 0x0d, 0xe9, 0xaf, 0xdf, 0x6c, 0x48, 0x9f, 0x3f, 0xd9, 0x48, 0x7c, - 0xf5, 0x64, 0x23, 0xf1, 0xa7, 0x27, 0x1b, 0x89, 0x1f, 0xbd, 0x72, 0xa1, 0xbb, 0xbd, 0x61, 0x7b, - 0xbb, 0x63, 0x0e, 0x76, 0xc2, 0xe7, 0xd6, 0xa6, 0x9d, 0xa5, 0x6b, 0x67, 0xd9, 0x6e, 0x7a, 0xe7, - 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x59, 0x1d, 0x83, 0x17, 0x6b, 0x27, 0x00, 0x00, + // 3208 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0x4d, 0x6c, 0x1b, 0xc7, + 0x15, 0xe6, 0xff, 0xcf, 0xe3, 0xaf, 0x46, 0x8e, 0x43, 0x33, 0xb6, 0xe4, 0xac, 0x91, 0xc4, 0x71, + 0x1c, 0xb9, 0x91, 0x9b, 0xd4, 0x41, 0xd2, 0x26, 0x12, 0x4d, 0x95, 0x8a, 0x15, 0x49, 0x1d, 0x51, + 0x0e, 0xd2, 0x26, 0xde, 0x2c, 0xc9, 0x11, 0xb9, 0x31, 0xb9, 0xbb, 0xd9, 0x5d, 0x32, 0x92, 0x8f, + 0xfd, 0xb9, 0x04, 0x2d, 0x90, 0x63, 0x81, 0x22, 0xb7, 0x1e, 0x7a, 0x2d, 0xd0, 0x43, 0x4f, 0x3d, + 0x15, 0x68, 0x80, 0xf6, 0x90, 0x63, 0x0f, 0x45, 0x5a, 0x24, 0xb7, 0x5e, 0x7b, 0xe8, 0xa9, 0x40, + 0x31, 0x3f, 0xfb, 0x47, 0x72, 0xf9, 0x53, 0x39, 0xa7, 0xde, 0x66, 0xde, 0xbe, 0xf7, 0x76, 0xe6, + 0xcd, 0xcf, 0x7b, 0xdf, 0x7b, 0x03, 0x4f, 0xd9, 0x44, 0xeb, 0x10, 0x73, 0xa0, 0x6a, 0xf6, 0x2d, + 0xa5, 0xd5, 0x56, 0x6f, 0xd9, 0x67, 0x06, 0xb1, 0x36, 0x0c, 0x53, 0xb7, 0x75, 0x54, 0xf2, 0x3e, + 0x6e, 0xd0, 0x8f, 0xd5, 0x2b, 0x3e, 0xee, 0xb6, 0x79, 0x66, 0xd8, 0xfa, 0x2d, 0xc3, 0xd4, 0xf5, + 0x13, 0xce, 0x5f, 0xbd, 0xec, 0xfb, 0xcc, 0xf4, 0xf8, 0xb5, 0x05, 0xbe, 0x0a, 0xe1, 0x87, 0xe4, + 0xcc, 0xf9, 0x7a, 0x65, 0x42, 0xd6, 0x50, 0x4c, 0x65, 0xe0, 0x7c, 0x5e, 0xef, 0xea, 0x7a, 0xb7, + 0x4f, 0x6e, 0xb1, 0x5e, 0x6b, 0x78, 0x72, 0xcb, 0x56, 0x07, 0xc4, 0xb2, 0x95, 0x81, 0x21, 0x18, + 0x2e, 0x74, 0xf5, 0xae, 0xce, 0x9a, 0xb7, 0x68, 0x8b, 0x53, 0xa5, 0x7f, 0x01, 0xa4, 0x31, 0xf9, + 0x68, 0x48, 0x2c, 0x1b, 0x6d, 0x42, 0x82, 0xb4, 0x7b, 0x7a, 0x25, 0x7a, 0x35, 0x7a, 0x3d, 0xb7, + 0x79, 0x79, 0x63, 0x6c, 0x72, 0x1b, 0x82, 0xaf, 0xde, 0xee, 0xe9, 0x8d, 0x08, 0x66, 0xbc, 0xe8, + 0x65, 0x48, 0x9e, 0xf4, 0x87, 0x56, 0xaf, 0x12, 0x63, 0x42, 0x57, 0xc2, 0x84, 0x76, 0x28, 0x53, + 0x23, 0x82, 0x39, 0x37, 0xfd, 0x95, 0xaa, 0x9d, 0xe8, 0x95, 0xf8, 0xec, 0x5f, 0xed, 0x6a, 0x27, + 0xec, 0x57, 0x94, 0x17, 0x6d, 0x03, 0xa8, 0x9a, 0x6a, 0xcb, 0xed, 0x9e, 0xa2, 0x6a, 0x95, 0x04, + 0x93, 0x7c, 0x3a, 0x5c, 0x52, 0xb5, 0x6b, 0x94, 0xb1, 0x11, 0xc1, 0x59, 0xd5, 0xe9, 0xd0, 0xe1, + 0x7e, 0x34, 0x24, 0xe6, 0x59, 0x25, 0x39, 0x7b, 0xb8, 0x3f, 0xa0, 0x4c, 0x74, 0xb8, 0x8c, 0x1b, + 0xd5, 0x21, 0xd7, 0x22, 0x5d, 0x55, 0x93, 0x5b, 0x7d, 0xbd, 0xfd, 0xb0, 0x92, 0x62, 0xc2, 0x52, + 0x98, 0xf0, 0x36, 0x65, 0xdd, 0xa6, 0x9c, 0x8d, 0x08, 0x86, 0x96, 0xdb, 0x43, 0xaf, 0x43, 0xa6, + 0xdd, 0x23, 0xed, 0x87, 0xb2, 0x7d, 0x5a, 0x49, 0x33, 0x1d, 0xeb, 0x61, 0x3a, 0x6a, 0x94, 0xaf, + 0x79, 0xda, 0x88, 0xe0, 0x74, 0x9b, 0x37, 0xe9, 0xfc, 0x3b, 0xa4, 0xaf, 0x8e, 0x88, 0x49, 0xe5, + 0x33, 0xb3, 0xe7, 0x7f, 0x97, 0x73, 0x32, 0x0d, 0xd9, 0x8e, 0xd3, 0x41, 0x6f, 0x40, 0x96, 0x68, + 0x1d, 0x31, 0x8d, 0x2c, 0x53, 0x71, 0x35, 0x74, 0x9d, 0xb5, 0x8e, 0x33, 0x89, 0x0c, 0x11, 0x6d, + 0x74, 0x07, 0x52, 0x6d, 0x7d, 0x30, 0x50, 0xed, 0x0a, 0x30, 0xe9, 0xb5, 0xd0, 0x09, 0x30, 0xae, + 0x46, 0x04, 0x0b, 0x7e, 0xb4, 0x0f, 0xc5, 0xbe, 0x6a, 0xd9, 0xb2, 0xa5, 0x29, 0x86, 0xd5, 0xd3, + 0x6d, 0xab, 0x92, 0x63, 0x1a, 0x9e, 0x09, 0xd3, 0xb0, 0xa7, 0x5a, 0xf6, 0x91, 0xc3, 0xdc, 0x88, + 0xe0, 0x42, 0xdf, 0x4f, 0xa0, 0xfa, 0xf4, 0x93, 0x13, 0x62, 0xba, 0x0a, 0x2b, 0xf9, 0xd9, 0xfa, + 0x0e, 0x28, 0xb7, 0x23, 0x4f, 0xf5, 0xe9, 0x7e, 0x02, 0xfa, 0x11, 0xac, 0xf6, 0x75, 0xa5, 0xe3, + 0xaa, 0x93, 0xdb, 0xbd, 0xa1, 0xf6, 0xb0, 0x52, 0x60, 0x4a, 0x9f, 0x0f, 0x1d, 0xa4, 0xae, 0x74, + 0x1c, 0x15, 0x35, 0x2a, 0xd0, 0x88, 0xe0, 0x95, 0xfe, 0x38, 0x11, 0x3d, 0x80, 0x0b, 0x8a, 0x61, + 0xf4, 0xcf, 0xc6, 0xb5, 0x17, 0x99, 0xf6, 0x1b, 0x61, 0xda, 0xb7, 0xa8, 0xcc, 0xb8, 0x7a, 0xa4, + 0x4c, 0x50, 0x51, 0x13, 0xca, 0x86, 0x49, 0x0c, 0xc5, 0x24, 0xb2, 0x61, 0xea, 0x86, 0x6e, 0x29, + 0xfd, 0x4a, 0x89, 0xe9, 0x7e, 0x2e, 0x4c, 0xf7, 0x21, 0xe7, 0x3f, 0x14, 0xec, 0x8d, 0x08, 0x2e, + 0x19, 0x41, 0x12, 0xd7, 0xaa, 0xb7, 0x89, 0x65, 0x79, 0x5a, 0xcb, 0xf3, 0xb4, 0x32, 0xfe, 0xa0, + 0xd6, 0x00, 0x89, 0x1e, 0x26, 0x72, 0x4a, 0xc5, 0xe5, 0x91, 0x6e, 0x93, 0xca, 0xca, 0xec, 0xc3, + 0x54, 0x67, 0xac, 0xf7, 0x75, 0x9b, 0xd0, 0xc3, 0x44, 0xdc, 0x1e, 0x52, 0xe0, 0x89, 0x11, 0x31, + 0xd5, 0x93, 0x33, 0xa6, 0x46, 0x66, 0x5f, 0x2c, 0x55, 0xd7, 0x2a, 0x88, 0x29, 0x7c, 0x21, 0x4c, + 0xe1, 0x7d, 0x26, 0x44, 0x55, 0xd4, 0x1d, 0x91, 0x46, 0x04, 0xaf, 0x8e, 0x26, 0xc9, 0x74, 0x8b, + 0x9d, 0xa8, 0x9a, 0xd2, 0x57, 0x1f, 0x11, 0x71, 0x64, 0x56, 0x67, 0x6f, 0xb1, 0x1d, 0xc1, 0xed, + 0x9c, 0x9b, 0xc2, 0x89, 0x9f, 0xb0, 0x9d, 0x86, 0xe4, 0x48, 0xe9, 0x0f, 0x89, 0xf4, 0x1c, 0xe4, + 0x7c, 0x97, 0x29, 0xaa, 0x40, 0x7a, 0x40, 0x2c, 0x4b, 0xe9, 0x12, 0x76, 0xf7, 0x66, 0xb1, 0xd3, + 0x95, 0x7e, 0x1a, 0x83, 0x95, 0x89, 0x5b, 0x05, 0x21, 0x48, 0xf4, 0x14, 0xab, 0xc7, 0x98, 0xf3, + 0x98, 0xb5, 0xd1, 0x2b, 0x90, 0xea, 0x11, 0xa5, 0x43, 0x4c, 0x71, 0x13, 0x57, 0xfc, 0x63, 0xe4, + 0x5e, 0xa6, 0xc1, 0xbe, 0x6f, 0x27, 0x3e, 0xff, 0x72, 0x3d, 0x82, 0x05, 0x37, 0x3a, 0x80, 0x72, + 0x5f, 0xb1, 0x6c, 0x99, 0x9f, 0x52, 0xd9, 0x77, 0x2b, 0x4f, 0xde, 0x4d, 0x7b, 0x8a, 0x73, 0xae, + 0xe9, 0xc5, 0x2c, 0x14, 0x15, 0xfb, 0x01, 0x2a, 0xc2, 0x70, 0xa1, 0x75, 0xf6, 0x48, 0xd1, 0x6c, + 0x55, 0x23, 0xf2, 0x48, 0xe9, 0xab, 0x1d, 0xc5, 0xd6, 0x4d, 0xab, 0x92, 0xb8, 0x1a, 0xbf, 0x9e, + 0xdb, 0xbc, 0x34, 0xa1, 0xb4, 0x3e, 0x52, 0x3b, 0x44, 0x6b, 0x13, 0xa1, 0x6e, 0xd5, 0x15, 0xbe, + 0xef, 0xca, 0x4a, 0x45, 0xc8, 0xfb, 0xfd, 0x88, 0xf4, 0x69, 0xd4, 0x35, 0x20, 0xfb, 0x67, 0x05, + 0xd2, 0x23, 0x62, 0xb2, 0xd5, 0x17, 0x06, 0x14, 0x5d, 0x74, 0x0d, 0x0a, 0x6c, 0xe5, 0x64, 0xe7, + 0x3b, 0xb5, 0x4e, 0x02, 0xe7, 0x19, 0xf1, 0xbe, 0x60, 0x5a, 0x87, 0x9c, 0xb1, 0x69, 0xb8, 0x2c, + 0x71, 0xc6, 0x02, 0xc6, 0xa6, 0xe1, 0x30, 0x3c, 0x0d, 0x79, 0x3a, 0x56, 0x97, 0x23, 0xc1, 0x7e, + 0x92, 0xa3, 0x34, 0xc1, 0x22, 0xfd, 0x25, 0x06, 0xe5, 0x71, 0xdf, 0x83, 0xee, 0x40, 0x82, 0xba, + 0x61, 0xe1, 0x51, 0xab, 0x1b, 0xdc, 0x47, 0x6f, 0x38, 0x3e, 0x7a, 0xa3, 0xe9, 0xf8, 0xe8, 0xed, + 0x0c, 0x9d, 0xfc, 0xa7, 0x7f, 0x5f, 0x8f, 0x62, 0x26, 0x81, 0x2e, 0x51, 0x57, 0xa1, 0xa8, 0x9a, + 0xac, 0x76, 0xd8, 0x90, 0xb3, 0xd4, 0x0f, 0x28, 0xaa, 0xb6, 0xdb, 0x41, 0x7b, 0x50, 0x6e, 0xeb, + 0x9a, 0x45, 0x34, 0x6b, 0x68, 0xc9, 0x3c, 0x06, 0x10, 0x2b, 0xf6, 0xf4, 0xe4, 0x9a, 0xd7, 0x1c, + 0xce, 0x43, 0xc6, 0x88, 0x4b, 0xed, 0x20, 0x01, 0xed, 0x00, 0x4c, 0x2c, 0xd2, 0xa4, 0x4b, 0x70, + 0xd7, 0xe2, 0xd8, 0xe8, 0x28, 0xb6, 0xb3, 0x56, 0x3e, 0x49, 0xf4, 0x2c, 0x94, 0x14, 0xc3, 0x90, + 0x2d, 0x5b, 0xb1, 0x89, 0xdc, 0x3a, 0xb3, 0x89, 0xc5, 0x7c, 0x6c, 0x1e, 0x17, 0x14, 0xc3, 0x38, + 0xa2, 0xd4, 0x6d, 0x4a, 0x44, 0xcf, 0x40, 0x91, 0xba, 0x63, 0x55, 0xe9, 0xcb, 0x3d, 0xa2, 0x76, + 0x7b, 0x36, 0xf3, 0xa6, 0x71, 0x5c, 0x10, 0xd4, 0x06, 0x23, 0x4a, 0x1d, 0x77, 0xc5, 0x99, 0x2b, + 0xa6, 0x5b, 0xbe, 0xa3, 0xd8, 0x8a, 0xb3, 0xe5, 0x69, 0x9b, 0xd2, 0x0c, 0xc5, 0xee, 0x09, 0xfb, + 0xb0, 0x36, 0xba, 0x48, 0x8f, 0x01, 0x53, 0x1b, 0x67, 0x6a, 0x45, 0x0f, 0x5d, 0x80, 0xa4, 0x61, + 0xea, 0x23, 0xc2, 0x96, 0x2e, 0x83, 0x79, 0x47, 0x92, 0xdc, 0x35, 0x73, 0xfd, 0x25, 0x2a, 0x42, + 0xcc, 0x3e, 0x15, 0xff, 0x89, 0xd9, 0xa7, 0xd2, 0xf3, 0x50, 0x1a, 0x73, 0x88, 0xbe, 0x9f, 0x44, + 0xfd, 0x3f, 0x91, 0x30, 0x14, 0x83, 0xee, 0x7b, 0x5c, 0x19, 0xfa, 0x16, 0x24, 0xe8, 0xba, 0xb0, + 0x21, 0x17, 0xa7, 0xc4, 0x3d, 0x42, 0xae, 0x79, 0x66, 0x10, 0xcc, 0x38, 0xa5, 0x12, 0x14, 0x02, + 0x1e, 0x55, 0xba, 0x08, 0x17, 0xa6, 0x39, 0x48, 0xa9, 0xe7, 0xd2, 0x03, 0x8e, 0x0e, 0xbd, 0x0c, + 0x19, 0xd7, 0x43, 0xf2, 0x7d, 0x38, 0x79, 0x06, 0x1d, 0x66, 0xec, 0xb2, 0xd2, 0x0d, 0x48, 0xd7, + 0x93, 0xdd, 0x33, 0x31, 0x36, 0xfe, 0xb4, 0x62, 0x18, 0x0d, 0xc5, 0xea, 0x49, 0x1f, 0x40, 0x25, + 0xcc, 0xfb, 0x8d, 0x99, 0x26, 0xe1, 0xda, 0xff, 0x22, 0xa4, 0x4e, 0x74, 0x73, 0xa0, 0xd8, 0x4c, + 0x59, 0x01, 0x8b, 0x1e, 0x5d, 0x17, 0xee, 0x09, 0xe3, 0x8c, 0xcc, 0x3b, 0x92, 0x0c, 0x97, 0x42, + 0x3d, 0x20, 0x15, 0x51, 0xb5, 0x0e, 0xe1, 0x66, 0x2d, 0x60, 0xde, 0xf1, 0x14, 0xf1, 0xc1, 0xf2, + 0x0e, 0xfd, 0xad, 0xc5, 0xe6, 0xca, 0xf4, 0x67, 0xb1, 0xe8, 0x49, 0xbf, 0x88, 0xc2, 0xc5, 0xe9, + 0x7e, 0x10, 0x5d, 0x01, 0xe0, 0x37, 0x86, 0xd8, 0x6f, 0xf1, 0xeb, 0x79, 0x9c, 0x65, 0x94, 0xbb, + 0x74, 0xd3, 0x3d, 0x0b, 0x25, 0xef, 0xb3, 0x6c, 0xa9, 0x8f, 0xf8, 0x62, 0xc6, 0x71, 0xc1, 0xe5, + 0x39, 0x52, 0x1f, 0x11, 0x74, 0x13, 0x92, 0xd4, 0x2f, 0xd1, 0xa3, 0x49, 0x8f, 0xd4, 0xc5, 0xc9, + 0xa3, 0x49, 0x7d, 0x0d, 0xe6, 0x4c, 0xd2, 0x1b, 0xee, 0x35, 0xef, 0xf9, 0x3b, 0x74, 0x03, 0x12, + 0xcc, 0x43, 0xf2, 0x55, 0x0b, 0xd3, 0xc0, 0x78, 0xa4, 0x06, 0x54, 0xc3, 0xfd, 0xdb, 0x52, 0x9a, + 0x7e, 0x15, 0xf3, 0x99, 0x26, 0xe8, 0xb9, 0x1f, 0xa7, 0xdf, 0x29, 0x43, 0xdc, 0x3e, 0xe5, 0xd6, + 0xc9, 0x63, 0xda, 0x9c, 0xea, 0x89, 0x12, 0xdf, 0x84, 0x27, 0x4a, 0x9e, 0xc3, 0x13, 0xfd, 0x36, + 0xe6, 0x1e, 0xb3, 0x80, 0xb3, 0x77, 0xe6, 0x13, 0xf5, 0xe6, 0xe3, 0x58, 0x2b, 0xe6, 0xb3, 0x56, + 0xd8, 0xf5, 0xe4, 0x59, 0x31, 0x71, 0x6e, 0xef, 0x9d, 0xfc, 0x26, 0x6c, 0x96, 0x3a, 0x87, 0xcd, + 0xfe, 0x9c, 0x83, 0x0c, 0x26, 0x96, 0x41, 0x3d, 0x0f, 0xda, 0x86, 0x2c, 0x39, 0x6d, 0x13, 0xc3, + 0x76, 0x9c, 0xf5, 0xf4, 0xd8, 0x8f, 0x73, 0xd7, 0x1d, 0x4e, 0x8a, 0x62, 0x5c, 0x31, 0x74, 0x5b, + 0x00, 0xd5, 0x70, 0xcc, 0x29, 0xc4, 0xfd, 0x48, 0xf5, 0x15, 0x07, 0xa9, 0xc6, 0x43, 0x81, 0x0b, + 0x97, 0x1a, 0x83, 0xaa, 0xb7, 0x05, 0x54, 0x4d, 0xcc, 0xf9, 0x59, 0x00, 0xab, 0xd6, 0x02, 0x58, + 0x35, 0x39, 0x67, 0x9a, 0x21, 0x60, 0xf5, 0x15, 0x07, 0xac, 0xa6, 0xe6, 0x8c, 0x78, 0x0c, 0xad, + 0xee, 0x04, 0xd1, 0x2a, 0x47, 0x9a, 0xd7, 0x42, 0xa5, 0x43, 0xe1, 0xea, 0x77, 0x7d, 0x70, 0x35, + 0x13, 0x8a, 0x15, 0xb9, 0x92, 0x29, 0x78, 0xb5, 0x16, 0xc0, 0xab, 0xd9, 0x39, 0x36, 0x08, 0x01, + 0xac, 0x6f, 0xfa, 0x01, 0x2b, 0x84, 0x62, 0x5e, 0xb1, 0xde, 0xd3, 0x10, 0xeb, 0xab, 0x2e, 0x62, + 0xcd, 0x85, 0x42, 0x6e, 0x31, 0x87, 0x71, 0xc8, 0x7a, 0x30, 0x01, 0x59, 0x39, 0xc4, 0x7c, 0x36, + 0x54, 0xc5, 0x1c, 0xcc, 0x7a, 0x30, 0x81, 0x59, 0x0b, 0x73, 0x14, 0xce, 0x01, 0xad, 0xef, 0x4d, + 0x07, 0xad, 0xe1, 0xb0, 0x52, 0x0c, 0x73, 0x31, 0xd4, 0x2a, 0x87, 0xa0, 0xd6, 0x52, 0x28, 0xc2, + 0xe2, 0xea, 0x17, 0x86, 0xad, 0xc7, 0x53, 0x60, 0x2b, 0x07, 0x98, 0xd7, 0x43, 0x95, 0x2f, 0x80, + 0x5b, 0x8f, 0xa7, 0xe0, 0xd6, 0x95, 0xb9, 0x6a, 0xe7, 0x02, 0xd7, 0x9d, 0x20, 0x70, 0x45, 0x73, + 0xce, 0x55, 0x28, 0x72, 0x6d, 0x85, 0x21, 0x57, 0x8e, 0x2e, 0x6f, 0x86, 0x6a, 0x5c, 0x02, 0xba, + 0x1e, 0x4c, 0x40, 0xd7, 0x0b, 0x73, 0x76, 0xda, 0xa2, 0xd8, 0xf5, 0x79, 0x1a, 0xaa, 0x8c, 0x5d, + 0xcf, 0x34, 0xfa, 0x22, 0xa6, 0xa9, 0x9b, 0x02, 0x7e, 0xf1, 0x8e, 0x74, 0x9d, 0x06, 0xf1, 0xde, + 0x55, 0x3c, 0x03, 0xe7, 0xb2, 0x28, 0xd7, 0x77, 0xfd, 0x4a, 0xbf, 0x8f, 0x7a, 0xb2, 0xcc, 0x31, + 0xf9, 0x01, 0x40, 0x56, 0x00, 0x00, 0x1f, 0xec, 0x8b, 0x05, 0x61, 0xdf, 0x3a, 0xe4, 0x68, 0xf4, + 0x3a, 0x86, 0xe8, 0x14, 0xc3, 0x45, 0x74, 0x37, 0x60, 0x85, 0x39, 0x4e, 0x1e, 0xcb, 0x09, 0x9f, + 0x9c, 0x60, 0x3e, 0xb9, 0x44, 0x3f, 0x70, 0x2b, 0x70, 0xe7, 0xfc, 0x22, 0xac, 0xfa, 0x78, 0xdd, + 0xa8, 0x98, 0xc3, 0x9b, 0xb2, 0xcb, 0xbd, 0x25, 0xc2, 0xe3, 0x3f, 0x46, 0x3d, 0x0b, 0x79, 0x50, + 0x70, 0x1a, 0x6a, 0x8b, 0x3e, 0x26, 0xd4, 0x16, 0xfb, 0x9f, 0x51, 0x9b, 0x3f, 0xca, 0x8f, 0x07, + 0xa3, 0xfc, 0x7f, 0x47, 0xbd, 0x35, 0x71, 0x31, 0x58, 0x5b, 0xef, 0x10, 0x11, 0x77, 0xb3, 0x36, + 0x0d, 0x7b, 0xfa, 0x7a, 0x57, 0x44, 0xd7, 0xb4, 0x49, 0xb9, 0x5c, 0x7f, 0x99, 0x15, 0xee, 0xd0, + 0x0d, 0xd9, 0x93, 0xcc, 0xc2, 0x22, 0x64, 0x2f, 0x43, 0xfc, 0x21, 0xe1, 0xde, 0x2d, 0x8f, 0x69, + 0x93, 0xf2, 0xb1, 0x4d, 0xc6, 0x7c, 0x56, 0x1e, 0xf3, 0x0e, 0xba, 0x03, 0x59, 0x96, 0x44, 0x97, + 0x75, 0xc3, 0x12, 0x8e, 0xe8, 0x29, 0xff, 0x5c, 0x79, 0xae, 0x7c, 0xe3, 0x90, 0xf2, 0x1c, 0x18, + 0x16, 0xce, 0x18, 0xa2, 0xe5, 0x0b, 0xb7, 0xb2, 0x81, 0x70, 0xeb, 0x32, 0x64, 0xe9, 0xe8, 0x2d, + 0x43, 0x69, 0x13, 0xe6, 0x55, 0xb2, 0xd8, 0x23, 0x48, 0x0f, 0x00, 0x4d, 0xfa, 0x46, 0xd4, 0x80, + 0x14, 0x19, 0x11, 0xcd, 0xe6, 0x31, 0xde, 0x58, 0x14, 0x2d, 0x62, 0x21, 0xa2, 0xd9, 0xdb, 0x15, + 0x6a, 0xe4, 0x7f, 0x7e, 0xb9, 0x5e, 0xe6, 0xdc, 0x37, 0xf5, 0x81, 0x6a, 0x93, 0x81, 0x61, 0x9f, + 0x61, 0x21, 0x2f, 0xfd, 0x2d, 0x46, 0x21, 0x65, 0xc0, 0x6f, 0x4e, 0xb5, 0xad, 0xb3, 0xe5, 0x63, + 0x3e, 0xcc, 0xbb, 0x98, 0xbd, 0xd7, 0x00, 0xba, 0x8a, 0x25, 0x7f, 0xac, 0x68, 0x36, 0xe9, 0x08, + 0xa3, 0xfb, 0x28, 0xa8, 0x0a, 0x19, 0xda, 0x1b, 0x5a, 0xa4, 0x23, 0xe0, 0xb7, 0xdb, 0xf7, 0xcd, + 0x33, 0x7d, 0xbe, 0x79, 0x06, 0xad, 0x9c, 0x19, 0xb3, 0xb2, 0x0f, 0x9a, 0x65, 0xfd, 0xd0, 0x8c, + 0x8e, 0xcd, 0x30, 0x55, 0xdd, 0x54, 0xed, 0x33, 0xb6, 0x34, 0x71, 0xec, 0xf6, 0xd1, 0x35, 0x28, + 0x0c, 0xc8, 0xc0, 0xd0, 0xf5, 0xbe, 0xcc, 0xaf, 0x9b, 0x1c, 0x13, 0xcd, 0x0b, 0x62, 0x9d, 0xdd, + 0x3a, 0x3f, 0x8b, 0x79, 0xe7, 0xcf, 0x83, 0xf5, 0xff, 0x77, 0x06, 0x96, 0x7e, 0xce, 0x32, 0x52, + 0xc1, 0xc8, 0x08, 0x1d, 0xc1, 0x8a, 0x7b, 0xfc, 0xe5, 0x21, 0xbb, 0x16, 0x9c, 0x0d, 0xbd, 0xe8, + 0xfd, 0x51, 0x1e, 0x05, 0xc9, 0x16, 0x7a, 0x17, 0x9e, 0x1c, 0xbb, 0xdb, 0x5c, 0xd5, 0xb1, 0x45, + 0xaf, 0xb8, 0x27, 0x82, 0x57, 0x9c, 0xa3, 0xda, 0x33, 0x56, 0xfc, 0x9c, 0xa7, 0x6e, 0x17, 0x8a, + 0xc1, 0x40, 0x6f, 0xea, 0xf2, 0x5f, 0x83, 0x82, 0x49, 0x6c, 0x45, 0xd5, 0xe4, 0x00, 0x4e, 0xcb, + 0x73, 0xa2, 0x48, 0x4e, 0x1d, 0xc2, 0x13, 0x53, 0x03, 0x3e, 0xf4, 0x1d, 0xc8, 0x7a, 0xb1, 0x62, + 0x34, 0x04, 0x32, 0xb9, 0xc9, 0x16, 0x8f, 0x57, 0xfa, 0x43, 0xd4, 0x53, 0x19, 0x4c, 0xdf, 0xd4, + 0x21, 0x65, 0x12, 0x6b, 0xd8, 0xe7, 0x09, 0x95, 0xe2, 0xe6, 0x8b, 0x8b, 0x85, 0x8a, 0x94, 0x3a, + 0xec, 0xdb, 0x58, 0x08, 0x4b, 0x0f, 0x20, 0xc5, 0x29, 0x28, 0x07, 0xe9, 0xe3, 0xfd, 0x7b, 0xfb, + 0x07, 0xef, 0xec, 0x97, 0x23, 0x08, 0x20, 0xb5, 0x55, 0xab, 0xd5, 0x0f, 0x9b, 0xe5, 0x28, 0xca, + 0x42, 0x72, 0x6b, 0xfb, 0x00, 0x37, 0xcb, 0x31, 0x4a, 0xc6, 0xf5, 0xb7, 0xea, 0xb5, 0x66, 0x39, + 0x8e, 0x56, 0xa0, 0xc0, 0xdb, 0xf2, 0xce, 0x01, 0x7e, 0x7b, 0xab, 0x59, 0x4e, 0xf8, 0x48, 0x47, + 0xf5, 0xfd, 0xbb, 0x75, 0x5c, 0x4e, 0x4a, 0x2f, 0xc1, 0xa5, 0xd0, 0xe0, 0xd2, 0xcb, 0xcd, 0x44, + 0x7d, 0xb9, 0x19, 0xe9, 0x97, 0x31, 0xa8, 0x86, 0x47, 0x8c, 0xe8, 0xad, 0xb1, 0x89, 0x6f, 0x2e, + 0x11, 0x6e, 0x8e, 0xcd, 0x1e, 0x3d, 0x03, 0x45, 0x93, 0x9c, 0x10, 0xbb, 0xdd, 0xe3, 0x11, 0x2c, + 0x77, 0x99, 0x05, 0x5c, 0x10, 0x54, 0x26, 0x64, 0x71, 0xb6, 0x0f, 0x49, 0xdb, 0x96, 0xf9, 0x5d, + 0xc4, 0x37, 0x5d, 0x96, 0xb2, 0x51, 0xea, 0x11, 0x27, 0x4a, 0x1f, 0x2c, 0x65, 0xcb, 0x2c, 0x24, + 0x71, 0xbd, 0x89, 0xdf, 0x2d, 0xc7, 0x11, 0x82, 0x22, 0x6b, 0xca, 0x47, 0xfb, 0x5b, 0x87, 0x47, + 0x8d, 0x03, 0x6a, 0xcb, 0x55, 0x28, 0x39, 0xb6, 0x74, 0x88, 0x49, 0xe9, 0x0e, 0x3c, 0x19, 0x12, + 0xee, 0xce, 0x49, 0x4f, 0x49, 0xef, 0x79, 0xbe, 0xcb, 0x97, 0x49, 0xda, 0x81, 0xe2, 0x58, 0xa8, + 0x19, 0x9d, 0xc4, 0x42, 0x5e, 0x26, 0xc8, 0x0d, 0x23, 0x71, 0x61, 0xe4, 0xef, 0x4a, 0xbf, 0x8e, + 0xc2, 0x53, 0x33, 0x82, 0x51, 0x74, 0x6f, 0x6c, 0xcd, 0x6e, 0x2f, 0x13, 0xca, 0x8e, 0x6f, 0xd9, + 0x3b, 0x0b, 0x99, 0xf9, 0x68, 0x6f, 0xeb, 0xa8, 0x11, 0xdc, 0xb2, 0xd2, 0xef, 0x62, 0x7e, 0xfb, + 0x05, 0x83, 0xf8, 0x8b, 0x90, 0x52, 0xda, 0x34, 0x6c, 0x65, 0x43, 0xcc, 0x60, 0xd1, 0x9b, 0x91, + 0xef, 0x44, 0xaf, 0x03, 0xd8, 0xa7, 0x32, 0x1f, 0x95, 0x73, 0x0f, 0x4d, 0xe6, 0x01, 0xea, 0xa7, + 0xa4, 0xdd, 0x3c, 0x15, 0x73, 0xc8, 0xda, 0xa2, 0x65, 0xa1, 0xb7, 0xa7, 0xdd, 0xb8, 0x0b, 0xe6, + 0xd9, 0x97, 0xbb, 0x6b, 0x93, 0xe7, 0xbb, 0x6b, 0xa5, 0x3f, 0xc5, 0xbc, 0x4b, 0x28, 0x98, 0xdc, + 0xfa, 0xb6, 0x97, 0xdc, 0x5a, 0x08, 0xc3, 0xf3, 0x04, 0xd8, 0x54, 0x5f, 0x13, 0xfb, 0xe6, 0x7c, + 0x4d, 0xfc, 0xb1, 0xf9, 0x9a, 0xc4, 0x39, 0x7d, 0xcd, 0xfb, 0x50, 0x0c, 0x66, 0xdb, 0xe8, 0x15, + 0x68, 0xea, 0x43, 0xad, 0xc3, 0x76, 0x5d, 0x12, 0xf3, 0x0e, 0x7a, 0xd9, 0x49, 0x12, 0xc7, 0x42, + 0x7c, 0x05, 0x3d, 0x20, 0xbe, 0x6c, 0x9d, 0xc8, 0x16, 0x3f, 0x82, 0x24, 0x1b, 0x09, 0xf5, 0x60, + 0xac, 0x9c, 0x20, 0x40, 0x11, 0x6d, 0xa3, 0xf7, 0x01, 0x14, 0xdb, 0x36, 0xd5, 0xd6, 0xd0, 0x53, + 0xbc, 0x3e, 0x7d, 0x26, 0x5b, 0x0e, 0xdf, 0xf6, 0x65, 0x31, 0xa5, 0x0b, 0x9e, 0xa8, 0x6f, 0x5a, + 0x3e, 0x85, 0xd2, 0x3e, 0x14, 0x83, 0xb2, 0x4e, 0x18, 0xcf, 0xc7, 0x10, 0x0c, 0xe3, 0x39, 0x2a, + 0x13, 0x61, 0xbc, 0x0b, 0x02, 0xe2, 0xbc, 0x04, 0xc3, 0x3a, 0xd2, 0x4f, 0x62, 0x90, 0xf7, 0x1f, + 0x9d, 0xc7, 0x1c, 0xa8, 0x5d, 0x99, 0x12, 0xa8, 0x65, 0xbb, 0x8a, 0xf5, 0x0e, 0x8f, 0xd3, 0x2e, + 0x4d, 0xc4, 0x69, 0xe9, 0xae, 0x62, 0x1d, 0xd3, 0x30, 0xed, 0x6d, 0xc8, 0xda, 0xa7, 0xf2, 0x39, + 0x23, 0xb5, 0x8c, 0x7d, 0x5a, 0x5f, 0x24, 0x56, 0xfb, 0x24, 0x0a, 0x19, 0xd7, 0x02, 0x21, 0xe5, + 0x25, 0xcf, 0x80, 0x31, 0x7f, 0xe1, 0x83, 0x97, 0x98, 0xe2, 0x6e, 0x89, 0xe9, 0x4d, 0xf7, 0x0e, + 0x4e, 0x2c, 0x9a, 0x72, 0x73, 0x92, 0xca, 0xe2, 0xe2, 0x7d, 0x0d, 0xb2, 0xee, 0x69, 0xa4, 0x18, + 0x5b, 0xe9, 0x74, 0x4c, 0x62, 0x59, 0xc2, 0x7b, 0x3b, 0x5d, 0x56, 0x52, 0xd3, 0x3f, 0x16, 0xa5, + 0x95, 0x38, 0xe6, 0x1d, 0xa9, 0x03, 0xa5, 0xb1, 0xa3, 0x8c, 0x5e, 0x83, 0xb4, 0x31, 0x6c, 0xc9, + 0xce, 0x26, 0x19, 0x7b, 0xef, 0xe3, 0xa0, 0xb7, 0x61, 0xab, 0xaf, 0xb6, 0xef, 0x91, 0x33, 0x67, + 0x30, 0xc6, 0xb0, 0x75, 0x8f, 0xef, 0x25, 0xfe, 0x97, 0x98, 0xff, 0x2f, 0x23, 0xc8, 0x38, 0x47, + 0x03, 0x7d, 0x0f, 0xb2, 0xee, 0x2d, 0xe1, 0x56, 0x5a, 0x43, 0xaf, 0x17, 0xa1, 0xde, 0x13, 0x41, + 0x37, 0x60, 0xc5, 0x52, 0xbb, 0x1a, 0xe9, 0xc8, 0x1e, 0xca, 0x67, 0x7f, 0xcb, 0xe0, 0x12, 0xff, + 0xb0, 0xe7, 0x40, 0x7c, 0xe9, 0x3f, 0x51, 0xc8, 0x38, 0x29, 0x6f, 0xf4, 0x92, 0xef, 0xf4, 0x15, + 0xa7, 0x79, 0x04, 0xc1, 0xe8, 0x55, 0xf3, 0x82, 0x63, 0x8d, 0x2d, 0x3f, 0xd6, 0xb0, 0xfa, 0x81, + 0x53, 0x68, 0x4e, 0x2c, 0x5d, 0x68, 0xbe, 0x09, 0xc8, 0xd6, 0x6d, 0xa5, 0x2f, 0x8f, 0x74, 0x5b, + 0xd5, 0xba, 0x32, 0x37, 0x36, 0x3f, 0x28, 0x65, 0xf6, 0xe5, 0x3e, 0xfb, 0x70, 0xc8, 0xec, 0xfe, + 0xe3, 0x28, 0x64, 0xdc, 0xd0, 0x74, 0xd9, 0x5a, 0xdf, 0x45, 0x48, 0x89, 0xe8, 0x8b, 0x17, 0xfb, + 0x44, 0xcf, 0x2d, 0x94, 0x24, 0x7c, 0x85, 0x92, 0x2a, 0x64, 0x06, 0xc4, 0x56, 0xd8, 0xa9, 0xe7, + 0x89, 0x16, 0xb7, 0x7f, 0xe3, 0x55, 0xc8, 0xf9, 0xea, 0xa4, 0xf4, 0x22, 0xd8, 0xaf, 0xbf, 0x53, + 0x8e, 0x54, 0xd3, 0x9f, 0x7c, 0x76, 0x35, 0xbe, 0x4f, 0x3e, 0xa6, 0x7b, 0x16, 0xd7, 0x6b, 0x8d, + 0x7a, 0xed, 0x5e, 0x39, 0x5a, 0xcd, 0x7d, 0xf2, 0xd9, 0xd5, 0x34, 0x26, 0x2c, 0x2b, 0x7d, 0xa3, + 0x01, 0x79, 0xff, 0xaa, 0x04, 0x23, 0x0b, 0x04, 0xc5, 0xbb, 0xc7, 0x87, 0x7b, 0xbb, 0xb5, 0xad, + 0x66, 0x5d, 0xbe, 0x7f, 0xd0, 0xac, 0x97, 0xa3, 0xe8, 0x49, 0x58, 0xdd, 0xdb, 0xfd, 0x7e, 0xa3, + 0x29, 0xd7, 0xf6, 0x76, 0xeb, 0xfb, 0x4d, 0x79, 0xab, 0xd9, 0xdc, 0xaa, 0xdd, 0x2b, 0xc7, 0x36, + 0x7f, 0x93, 0x83, 0xd2, 0xd6, 0x76, 0x6d, 0x97, 0x06, 0x9f, 0x6a, 0x5b, 0x61, 0x59, 0xb0, 0x1a, + 0x24, 0x58, 0x9e, 0x6b, 0xe6, 0xd3, 0xb9, 0xea, 0xec, 0x7a, 0x05, 0xda, 0x81, 0x24, 0x4b, 0x81, + 0xa1, 0xd9, 0x6f, 0xe9, 0xaa, 0x73, 0x0a, 0x18, 0x74, 0x30, 0xec, 0x78, 0xcc, 0x7c, 0x5c, 0x57, + 0x9d, 0x5d, 0xcf, 0x40, 0x7b, 0x90, 0x76, 0x32, 0x14, 0xf3, 0x9e, 0xaa, 0x55, 0xe7, 0x16, 0x07, + 0xe8, 0xd4, 0x78, 0x26, 0x69, 0xf6, 0xbb, 0xbb, 0xea, 0x9c, 0x4a, 0x07, 0xda, 0x85, 0x94, 0x80, + 0x70, 0x73, 0x9e, 0x9f, 0x55, 0xe7, 0x25, 0xfb, 0x11, 0x86, 0xac, 0x97, 0xa3, 0x9b, 0xff, 0x9a, + 0xb0, 0xba, 0x40, 0x11, 0x07, 0x3d, 0x80, 0x42, 0x10, 0x16, 0x2e, 0xf6, 0xc4, 0xad, 0xba, 0x60, + 0x59, 0x81, 0xea, 0x0f, 0x62, 0xc4, 0xc5, 0x9e, 0xbc, 0x55, 0x17, 0xac, 0x32, 0xa0, 0x0f, 0x61, + 0x65, 0x12, 0xc3, 0x2d, 0xfe, 0x02, 0xae, 0xba, 0x44, 0xdd, 0x01, 0x0d, 0x00, 0x4d, 0xc1, 0x7e, + 0x4b, 0x3c, 0x88, 0xab, 0x2e, 0x53, 0x86, 0x40, 0x1d, 0x28, 0x8d, 0x03, 0xaa, 0x45, 0x1f, 0xc8, + 0x55, 0x17, 0x2e, 0x49, 0xf0, 0xbf, 0x04, 0x61, 0xc7, 0xa2, 0x0f, 0xe6, 0xaa, 0x0b, 0x57, 0x28, + 0xe8, 0x36, 0x08, 0x46, 0xe9, 0x8b, 0x3d, 0x4b, 0xab, 0x2e, 0x58, 0x02, 0x40, 0xc7, 0x00, 0x3e, + 0x08, 0xb9, 0xc0, 0x03, 0xbd, 0xea, 0x22, 0xb5, 0x10, 0x64, 0xc0, 0xea, 0x34, 0xe8, 0xb8, 0xcc, + 0x7b, 0xbd, 0xea, 0x52, 0x25, 0x92, 0xed, 0xfa, 0xe7, 0x5f, 0xad, 0x45, 0xbf, 0xf8, 0x6a, 0x2d, + 0xfa, 0x8f, 0xaf, 0xd6, 0xa2, 0x9f, 0x7e, 0xbd, 0x16, 0xf9, 0xe2, 0xeb, 0xb5, 0xc8, 0x5f, 0xbf, + 0x5e, 0x8b, 0xfc, 0xf0, 0x85, 0xae, 0x6a, 0xf7, 0x86, 0xad, 0x8d, 0xb6, 0x3e, 0xb8, 0xe5, 0x7f, + 0x5e, 0x3d, 0xed, 0xc9, 0x77, 0x2b, 0xc5, 0xbc, 0xe9, 0xed, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, + 0x5c, 0xd7, 0x22, 0x06, 0x12, 0x2e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3569,22 +4051,19 @@ type ABCIApplicationClient interface { Echo(ctx context.Context, in *RequestEcho, opts ...grpc.CallOption) (*ResponseEcho, error) Flush(ctx context.Context, in *RequestFlush, opts ...grpc.CallOption) (*ResponseFlush, error) Info(ctx context.Context, in *RequestInfo, opts ...grpc.CallOption) (*ResponseInfo, error) - // rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx); CheckTx(ctx context.Context, in *RequestCheckTx, opts ...grpc.CallOption) (*ResponseCheckTx, error) Query(ctx context.Context, in *RequestQuery, opts ...grpc.CallOption) (*ResponseQuery, error) Commit(ctx context.Context, in *RequestCommit, opts ...grpc.CallOption) (*ResponseCommit, error) InitChain(ctx context.Context, in *RequestInitChain, opts ...grpc.CallOption) (*ResponseInitChain, error) - // rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); - // rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); ListSnapshots(ctx context.Context, in *RequestListSnapshots, opts ...grpc.CallOption) (*ResponseListSnapshots, error) OfferSnapshot(ctx context.Context, in *RequestOfferSnapshot, opts ...grpc.CallOption) (*ResponseOfferSnapshot, error) LoadSnapshotChunk(ctx context.Context, in *RequestLoadSnapshotChunk, opts ...grpc.CallOption) (*ResponseLoadSnapshotChunk, error) ApplySnapshotChunk(ctx context.Context, in *RequestApplySnapshotChunk, opts ...grpc.CallOption) (*ResponseApplySnapshotChunk, error) PrepareProposal(ctx context.Context, in *RequestPrepareProposal, opts ...grpc.CallOption) (*ResponsePrepareProposal, error) ProcessProposal(ctx context.Context, in *RequestProcessProposal, opts ...grpc.CallOption) (*ResponseProcessProposal, error) + FinalizeBlock(ctx context.Context, in *RequestFinalizeBlock, opts ...grpc.CallOption) (*ResponseFinalizeBlock, error) ExtendVote(ctx context.Context, in *RequestExtendVote, opts ...grpc.CallOption) (*ResponseExtendVote, error) VerifyVoteExtension(ctx context.Context, in *RequestVerifyVoteExtension, opts ...grpc.CallOption) (*ResponseVerifyVoteExtension, error) - FinalizeBlock(ctx context.Context, in *RequestFinalizeBlock, opts ...grpc.CallOption) (*ResponseFinalizeBlock, error) } type aBCIApplicationClient struct { @@ -3712,27 +4191,27 @@ func (c *aBCIApplicationClient) ProcessProposal(ctx context.Context, in *Request return out, nil } -func (c *aBCIApplicationClient) ExtendVote(ctx context.Context, in *RequestExtendVote, opts ...grpc.CallOption) (*ResponseExtendVote, error) { - out := new(ResponseExtendVote) - err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/ExtendVote", in, out, opts...) +func (c *aBCIApplicationClient) FinalizeBlock(ctx context.Context, in *RequestFinalizeBlock, opts ...grpc.CallOption) (*ResponseFinalizeBlock, error) { + out := new(ResponseFinalizeBlock) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/FinalizeBlock", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *aBCIApplicationClient) VerifyVoteExtension(ctx context.Context, in *RequestVerifyVoteExtension, opts ...grpc.CallOption) (*ResponseVerifyVoteExtension, error) { - out := new(ResponseVerifyVoteExtension) - err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/VerifyVoteExtension", in, out, opts...) +func (c *aBCIApplicationClient) ExtendVote(ctx context.Context, in *RequestExtendVote, opts ...grpc.CallOption) (*ResponseExtendVote, error) { + out := new(ResponseExtendVote) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/ExtendVote", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *aBCIApplicationClient) FinalizeBlock(ctx context.Context, in *RequestFinalizeBlock, opts ...grpc.CallOption) (*ResponseFinalizeBlock, error) { - out := new(ResponseFinalizeBlock) - err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/FinalizeBlock", in, out, opts...) +func (c *aBCIApplicationClient) VerifyVoteExtension(ctx context.Context, in *RequestVerifyVoteExtension, opts ...grpc.CallOption) (*ResponseVerifyVoteExtension, error) { + out := new(ResponseVerifyVoteExtension) + err := c.cc.Invoke(ctx, "/tendermint.abci.ABCIApplication/VerifyVoteExtension", in, out, opts...) if err != nil { return nil, err } @@ -3744,22 +4223,19 @@ type ABCIApplicationServer interface { Echo(context.Context, *RequestEcho) (*ResponseEcho, error) Flush(context.Context, *RequestFlush) (*ResponseFlush, error) Info(context.Context, *RequestInfo) (*ResponseInfo, error) - // rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx); CheckTx(context.Context, *RequestCheckTx) (*ResponseCheckTx, error) Query(context.Context, *RequestQuery) (*ResponseQuery, error) Commit(context.Context, *RequestCommit) (*ResponseCommit, error) InitChain(context.Context, *RequestInitChain) (*ResponseInitChain, error) - // rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); - // rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); ListSnapshots(context.Context, *RequestListSnapshots) (*ResponseListSnapshots, error) OfferSnapshot(context.Context, *RequestOfferSnapshot) (*ResponseOfferSnapshot, error) LoadSnapshotChunk(context.Context, *RequestLoadSnapshotChunk) (*ResponseLoadSnapshotChunk, error) ApplySnapshotChunk(context.Context, *RequestApplySnapshotChunk) (*ResponseApplySnapshotChunk, error) PrepareProposal(context.Context, *RequestPrepareProposal) (*ResponsePrepareProposal, error) ProcessProposal(context.Context, *RequestProcessProposal) (*ResponseProcessProposal, error) + FinalizeBlock(context.Context, *RequestFinalizeBlock) (*ResponseFinalizeBlock, error) ExtendVote(context.Context, *RequestExtendVote) (*ResponseExtendVote, error) VerifyVoteExtension(context.Context, *RequestVerifyVoteExtension) (*ResponseVerifyVoteExtension, error) - FinalizeBlock(context.Context, *RequestFinalizeBlock) (*ResponseFinalizeBlock, error) } // UnimplementedABCIApplicationServer can be embedded to have forward compatible implementations. @@ -3805,15 +4281,15 @@ func (*UnimplementedABCIApplicationServer) PrepareProposal(ctx context.Context, func (*UnimplementedABCIApplicationServer) ProcessProposal(ctx context.Context, req *RequestProcessProposal) (*ResponseProcessProposal, error) { return nil, status.Errorf(codes.Unimplemented, "method ProcessProposal not implemented") } +func (*UnimplementedABCIApplicationServer) FinalizeBlock(ctx context.Context, req *RequestFinalizeBlock) (*ResponseFinalizeBlock, error) { + return nil, status.Errorf(codes.Unimplemented, "method FinalizeBlock not implemented") +} func (*UnimplementedABCIApplicationServer) ExtendVote(ctx context.Context, req *RequestExtendVote) (*ResponseExtendVote, error) { return nil, status.Errorf(codes.Unimplemented, "method ExtendVote not implemented") } func (*UnimplementedABCIApplicationServer) VerifyVoteExtension(ctx context.Context, req *RequestVerifyVoteExtension) (*ResponseVerifyVoteExtension, error) { return nil, status.Errorf(codes.Unimplemented, "method VerifyVoteExtension not implemented") } -func (*UnimplementedABCIApplicationServer) FinalizeBlock(ctx context.Context, req *RequestFinalizeBlock) (*ResponseFinalizeBlock, error) { - return nil, status.Errorf(codes.Unimplemented, "method FinalizeBlock not implemented") -} func RegisterABCIApplicationServer(s *grpc.Server, srv ABCIApplicationServer) { s.RegisterService(&_ABCIApplication_serviceDesc, srv) @@ -4053,56 +4529,56 @@ func _ABCIApplication_ProcessProposal_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } -func _ABCIApplication_ExtendVote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RequestExtendVote) +func _ABCIApplication_FinalizeBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestFinalizeBlock) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ABCIApplicationServer).ExtendVote(ctx, in) + return srv.(ABCIApplicationServer).FinalizeBlock(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/tendermint.abci.ABCIApplication/ExtendVote", + FullMethod: "/tendermint.abci.ABCIApplication/FinalizeBlock", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ABCIApplicationServer).ExtendVote(ctx, req.(*RequestExtendVote)) + return srv.(ABCIApplicationServer).FinalizeBlock(ctx, req.(*RequestFinalizeBlock)) } return interceptor(ctx, in, info, handler) } -func _ABCIApplication_VerifyVoteExtension_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RequestVerifyVoteExtension) +func _ABCIApplication_ExtendVote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestExtendVote) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ABCIApplicationServer).VerifyVoteExtension(ctx, in) + return srv.(ABCIApplicationServer).ExtendVote(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/tendermint.abci.ABCIApplication/VerifyVoteExtension", + FullMethod: "/tendermint.abci.ABCIApplication/ExtendVote", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ABCIApplicationServer).VerifyVoteExtension(ctx, req.(*RequestVerifyVoteExtension)) + return srv.(ABCIApplicationServer).ExtendVote(ctx, req.(*RequestExtendVote)) } return interceptor(ctx, in, info, handler) } -func _ABCIApplication_FinalizeBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RequestFinalizeBlock) +func _ABCIApplication_VerifyVoteExtension_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestVerifyVoteExtension) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ABCIApplicationServer).FinalizeBlock(ctx, in) + return srv.(ABCIApplicationServer).VerifyVoteExtension(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/tendermint.abci.ABCIApplication/FinalizeBlock", + FullMethod: "/tendermint.abci.ABCIApplication/VerifyVoteExtension", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ABCIApplicationServer).FinalizeBlock(ctx, req.(*RequestFinalizeBlock)) + return srv.(ABCIApplicationServer).VerifyVoteExtension(ctx, req.(*RequestVerifyVoteExtension)) } return interceptor(ctx, in, info, handler) } @@ -4163,6 +4639,10 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{ MethodName: "ProcessProposal", Handler: _ABCIApplication_ProcessProposal_Handler, }, + { + MethodName: "FinalizeBlock", + Handler: _ABCIApplication_FinalizeBlock_Handler, + }, { MethodName: "ExtendVote", Handler: _ABCIApplication_ExtendVote_Handler, @@ -4171,10 +4651,6 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{ MethodName: "VerifyVoteExtension", Handler: _ABCIApplication_VerifyVoteExtension_Handler, }, - { - MethodName: "FinalizeBlock", - Handler: _ABCIApplication_FinalizeBlock_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "tendermint/abci/types.proto", @@ -4317,16 +4793,16 @@ func (m *Request_Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } -func (m *Request_CheckTx) MarshalTo(dAtA []byte) (int, error) { +func (m *Request_BeginBlock) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Request_CheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *Request_BeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) - if m.CheckTx != nil { + if m.BeginBlock != nil { { - size, err := m.CheckTx.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.BeginBlock.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -4334,20 +4810,83 @@ func (m *Request_CheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x3a + dAtA[i] = 0x32 } return len(dAtA) - i, nil } -func (m *Request_Commit) MarshalTo(dAtA []byte) (int, error) { +func (m *Request_CheckTx) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Request_Commit) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *Request_CheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) - if m.Commit != nil { + if m.CheckTx != nil { { - size, err := m.Commit.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.CheckTx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + return len(dAtA) - i, nil +} +func (m *Request_DeliverTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_DeliverTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DeliverTx != nil { + { + size, err := m.DeliverTx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + return len(dAtA) - i, nil +} +func (m *Request_EndBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_EndBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.EndBlock != nil { + { + size, err := m.EndBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + return len(dAtA) - i, nil +} +func (m *Request_Commit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Request_Commit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Commit != nil { + { + size, err := m.Commit.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -4586,6 +5125,70 @@ func (m *RequestEcho) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RequestBeginBlock) 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 *RequestBeginBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestBeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ByzantineValidators) > 0 { + for iNdEx := len(m.ByzantineValidators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ByzantineValidators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + { + size, err := m.LastCommitInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + 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] = 0xa + } + return len(dAtA) - i, nil +} + func (m *RequestFlush) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4721,12 +5324,12 @@ func (m *RequestInitChain) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - n18, err18 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err18 != nil { - return 0, err18 + n23, err23 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err23 != nil { + return 0, err23 } - i -= n18 - i = encodeVarintTypes(dAtA, i, uint64(n18)) + i -= n23 + i = encodeVarintTypes(dAtA, i, uint64(n23)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -4784,6 +5387,64 @@ func (m *RequestQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RequestDeliverTx) 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 *RequestDeliverTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestDeliverTx) 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] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RequestEndBlock) 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 *RequestEndBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RequestEndBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Height != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RequestCheckTx) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5128,13 +5789,37 @@ func (m *RequestProcessProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if len(m.ByzantineValidators) > 0 { + for iNdEx := len(m.ByzantineValidators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ByzantineValidators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + { + size, err := m.LastCommitInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 if len(m.Txs) > 0 { for iNdEx := len(m.Txs) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.Txs[iNdEx]) copy(dAtA[i:], m.Txs[iNdEx]) i = encodeVarintTypes(dAtA, i, uint64(len(m.Txs[iNdEx]))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } } { @@ -5146,7 +5831,14 @@ func (m *RequestProcessProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintTypes(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 + 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] = 0xa + } return len(dAtA) - i, nil } @@ -5386,6 +6078,27 @@ func (m *Response_Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Response_BeginBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Response_BeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.BeginBlock != nil { + { + size, err := m.BeginBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + return len(dAtA) - i, nil +} func (m *Response_CheckTx) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -5407,6 +6120,48 @@ func (m *Response_CheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Response_DeliverTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Response_DeliverTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DeliverTx != nil { + { + size, err := m.DeliverTx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + return len(dAtA) - i, nil +} +func (m *Response_EndBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Response_EndBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.EndBlock != nil { + { + size, err := m.EndBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + return len(dAtA) - i, nil +} func (m *Response_Commit) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -5905,7 +6660,7 @@ func (m *ResponseQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ResponseCheckTx) Marshal() (dAtA []byte, err error) { +func (m *ResponseBeginBlock) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5915,17 +6670,54 @@ func (m *ResponseCheckTx) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ResponseCheckTx) MarshalTo(dAtA []byte) (int, error) { +func (m *ResponseBeginBlock) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ResponseCheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ResponseBeginBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.MempoolError) > 0 { + if len(m.Events) > 0 { + for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ResponseCheckTx) 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 *ResponseCheckTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ResponseCheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.MempoolError) > 0 { i -= len(m.MempoolError) copy(dAtA[i:], m.MempoolError) i = encodeVarintTypes(dAtA, i, uint64(len(m.MempoolError))) @@ -6084,6 +6876,69 @@ func (m *ResponseDeliverTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ResponseEndBlock) 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 *ResponseEndBlock) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ResponseEndBlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Events) > 0 { + for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.ConsensusParamUpdates != nil { + { + size, err := m.ConsensusParamUpdates.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.ValidatorUpdates) > 0 { + for iNdEx := len(m.ValidatorUpdates) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidatorUpdates[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *ResponseCommit) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6244,20 +7099,20 @@ func (m *ResponseApplySnapshotChunk) MarshalToSizedBuffer(dAtA []byte) (int, err } } if len(m.RefetchChunks) > 0 { - dAtA45 := make([]byte, len(m.RefetchChunks)*10) - var j44 int + dAtA55 := make([]byte, len(m.RefetchChunks)*10) + var j54 int for _, num := range m.RefetchChunks { for num >= 1<<7 { - dAtA45[j44] = uint8(uint64(num)&0x7f | 0x80) + dAtA55[j54] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j44++ + j54++ } - dAtA45[j44] = uint8(num) - j44++ + dAtA55[j54] = uint8(num) + j54++ } - i -= j44 - copy(dAtA[i:], dAtA45[:j44]) - i = encodeVarintTypes(dAtA, i, uint64(j44)) + i -= j54 + copy(dAtA[i:], dAtA55[:j54]) + i = encodeVarintTypes(dAtA, i, uint64(j54)) i-- dAtA[i] = 0x12 } @@ -6384,17 +7239,60 @@ func (m *ResponseProcessProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l - if len(m.Evidence) > 0 { - for iNdEx := len(m.Evidence) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Evidence[iNdEx]) - copy(dAtA[i:], m.Evidence[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Evidence[iNdEx]))) + if m.ConsensusParamUpdates != nil { + { + size, err := m.ConsensusParamUpdates.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.ValidatorUpdates) > 0 { + for iNdEx := len(m.ValidatorUpdates) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidatorUpdates[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x22 } } - if m.Result != 0 { - i = encodeVarintTypes(dAtA, i, uint64(m.Result)) + if len(m.TxResults) > 0 { + for iNdEx := len(m.TxResults) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TxResults[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.AppHash) > 0 { + i -= len(m.AppHash) + copy(dAtA[i:], m.AppHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.AppHash))) + i-- + dAtA[i] = 0x12 + } + if m.Accept { + i-- + if m.Accept { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } i-- dAtA[i] = 0x8 } @@ -6611,6 +7509,86 @@ func (m *EventAttribute) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ExecTxResult) 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 *ExecTxResult) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ExecTxResult) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Codespace) > 0 { + i -= len(m.Codespace) + copy(dAtA[i:], m.Codespace) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Codespace))) + i-- + dAtA[i] = 0x42 + } + if len(m.TxEvents) > 0 { + for iNdEx := len(m.TxEvents) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TxEvents[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if m.GasUsed != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.GasUsed)) + i-- + dAtA[i] = 0x30 + } + if m.GasWanted != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.GasWanted)) + i-- + dAtA[i] = 0x28 + } + if len(m.Info) > 0 { + i -= len(m.Info) + copy(dAtA[i:], m.Info) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Info))) + i-- + dAtA[i] = 0x22 + } + if len(m.Log) > 0 { + i -= len(m.Log) + copy(dAtA[i:], m.Log) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Log))) + i-- + dAtA[i] = 0x1a + } + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Data))) + 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 *TxResult) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6802,12 +7780,12 @@ func (m *Evidence) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x28 } - n51, err51 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err51 != nil { - return 0, err51 + n62, err62 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err62 != nil { + return 0, err62 } - i -= n51 - i = encodeVarintTypes(dAtA, i, uint64(n51)) + i -= n62 + i = encodeVarintTypes(dAtA, i, uint64(n62)) i-- dAtA[i] = 0x22 if m.Height != 0 { @@ -6968,6 +7946,18 @@ func (m *Request_Query) Size() (n int) { } return n } +func (m *Request_BeginBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BeginBlock != nil { + l = m.BeginBlock.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *Request_CheckTx) Size() (n int) { if m == nil { return 0 @@ -6980,6 +7970,30 @@ func (m *Request_CheckTx) Size() (n int) { } return n } +func (m *Request_DeliverTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DeliverTx != nil { + l = m.DeliverTx.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} +func (m *Request_EndBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.EndBlock != nil { + l = m.EndBlock.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *Request_Commit) Size() (n int) { if m == nil { return 0 @@ -7113,19 +8127,42 @@ func (m *RequestEcho) Size() (n int) { return n } -func (m *RequestFlush) Size() (n int) { +func (m *RequestBeginBlock) Size() (n int) { if m == nil { return 0 } var l int _ = l - return n -} - -func (m *RequestInfo) Size() (n int) { - if m == nil { - return 0 - } + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = m.Header.Size() + n += 1 + l + sovTypes(uint64(l)) + l = m.LastCommitInfo.Size() + n += 1 + l + sovTypes(uint64(l)) + if len(m.ByzantineValidators) > 0 { + for _, e := range m.ByzantineValidators { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + +func (m *RequestFlush) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RequestInfo) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Version) @@ -7200,6 +8237,31 @@ func (m *RequestQuery) Size() (n int) { return n } +func (m *RequestDeliverTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Tx) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func (m *RequestEndBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovTypes(uint64(m.Height)) + } + return n +} + func (m *RequestCheckTx) Size() (n int) { if m == nil { return 0 @@ -7345,6 +8407,10 @@ func (m *RequestProcessProposal) Size() (n int) { } var l int _ = l + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } l = m.Header.Size() n += 1 + l + sovTypes(uint64(l)) if len(m.Txs) > 0 { @@ -7353,6 +8419,14 @@ func (m *RequestProcessProposal) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + l = m.LastCommitInfo.Size() + n += 1 + l + sovTypes(uint64(l)) + if len(m.ByzantineValidators) > 0 { + for _, e := range m.ByzantineValidators { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } return n } @@ -7472,6 +8546,18 @@ func (m *Response_Query) Size() (n int) { } return n } +func (m *Response_BeginBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BeginBlock != nil { + l = m.BeginBlock.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *Response_CheckTx) Size() (n int) { if m == nil { return 0 @@ -7484,6 +8570,30 @@ func (m *Response_CheckTx) Size() (n int) { } return n } +func (m *Response_DeliverTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DeliverTx != nil { + l = m.DeliverTx.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} +func (m *Response_EndBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.EndBlock != nil { + l = m.EndBlock.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *Response_Commit) Size() (n int) { if m == nil { return 0 @@ -7731,6 +8841,21 @@ func (m *ResponseQuery) Size() (n int) { return n } +func (m *ResponseBeginBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Events) > 0 { + for _, e := range m.Events { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + func (m *ResponseCheckTx) Size() (n int) { if m == nil { return 0 @@ -7822,6 +8947,31 @@ func (m *ResponseDeliverTx) Size() (n int) { return n } +func (m *ResponseEndBlock) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ValidatorUpdates) > 0 { + for _, e := range m.ValidatorUpdates { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if m.ConsensusParamUpdates != nil { + l = m.ConsensusParamUpdates.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if len(m.Events) > 0 { + for _, e := range m.Events { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + func (m *ResponseCommit) Size() (n int) { if m == nil { return 0 @@ -7949,15 +9099,29 @@ func (m *ResponseProcessProposal) Size() (n int) { } var l int _ = l - if m.Result != 0 { - n += 1 + sovTypes(uint64(m.Result)) + if m.Accept { + n += 2 } - if len(m.Evidence) > 0 { - for _, b := range m.Evidence { - l = len(b) + l = len(m.AppHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if len(m.TxResults) > 0 { + for _, e := range m.TxResults { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if len(m.ValidatorUpdates) > 0 { + for _, e := range m.ValidatorUpdates { + l = e.Size() n += 1 + l + sovTypes(uint64(l)) } } + if m.ConsensusParamUpdates != nil { + l = m.ConsensusParamUpdates.Size() + n += 1 + l + sovTypes(uint64(l)) + } return n } @@ -8049,6 +9213,46 @@ func (m *EventAttribute) Size() (n int) { return n } +func (m *ExecTxResult) 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.Data) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Log) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Info) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.GasWanted != 0 { + n += 1 + sovTypes(uint64(m.GasWanted)) + } + if m.GasUsed != 0 { + n += 1 + sovTypes(uint64(m.GasUsed)) + } + if len(m.TxEvents) > 0 { + for _, e := range m.TxEvents { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + l = len(m.Codespace) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + func (m *TxResult) Size() (n int) { if m == nil { return 0 @@ -8372,9 +9576,9 @@ func (m *Request) Unmarshal(dAtA []byte) error { } m.Value = &Request_Query{v} iNdEx = postIndex - case 7: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CheckTx", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BeginBlock", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8401,15 +9605,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestCheckTx{} + v := &RequestBeginBlock{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_CheckTx{v} + m.Value = &Request_BeginBlock{v} iNdEx = postIndex - case 10: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CheckTx", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8436,15 +9640,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestCommit{} + v := &RequestCheckTx{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_Commit{v} + m.Value = &Request_CheckTx{v} iNdEx = postIndex - case 11: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListSnapshots", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DeliverTx", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8471,15 +9675,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestListSnapshots{} + v := &RequestDeliverTx{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_ListSnapshots{v} + m.Value = &Request_DeliverTx{v} iNdEx = postIndex - case 12: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OfferSnapshot", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EndBlock", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8506,15 +9710,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestOfferSnapshot{} + v := &RequestEndBlock{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_OfferSnapshot{v} + m.Value = &Request_EndBlock{v} iNdEx = postIndex - case 13: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoadSnapshotChunk", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8541,15 +9745,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestLoadSnapshotChunk{} + v := &RequestCommit{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_LoadSnapshotChunk{v} + m.Value = &Request_Commit{v} iNdEx = postIndex - case 14: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ApplySnapshotChunk", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListSnapshots", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8576,15 +9780,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestApplySnapshotChunk{} + v := &RequestListSnapshots{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_ApplySnapshotChunk{v} + m.Value = &Request_ListSnapshots{v} iNdEx = postIndex - case 15: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrepareProposal", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OfferSnapshot", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8611,15 +9815,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestPrepareProposal{} + v := &RequestOfferSnapshot{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_PrepareProposal{v} + m.Value = &Request_OfferSnapshot{v} iNdEx = postIndex - case 16: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProcessProposal", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LoadSnapshotChunk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8646,15 +9850,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestProcessProposal{} + v := &RequestLoadSnapshotChunk{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_ProcessProposal{v} + m.Value = &Request_LoadSnapshotChunk{v} iNdEx = postIndex - case 17: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExtendVote", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ApplySnapshotChunk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8681,15 +9885,15 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestExtendVote{} + v := &RequestApplySnapshotChunk{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_ExtendVote{v} + m.Value = &Request_ApplySnapshotChunk{v} iNdEx = postIndex - case 18: + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VerifyVoteExtension", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PrepareProposal", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8716,11 +9920,116 @@ func (m *Request) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RequestVerifyVoteExtension{} + v := &RequestPrepareProposal{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Request_VerifyVoteExtension{v} + m.Value = &Request_PrepareProposal{v} + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProcessProposal", 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 := &RequestProcessProposal{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_ProcessProposal{v} + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendVote", 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 := &RequestExtendVote{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_ExtendVote{v} + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VerifyVoteExtension", 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 := &RequestVerifyVoteExtension{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Request_VerifyVoteExtension{v} iNdEx = postIndex case 19: if wireType != 2 { @@ -8860,6 +10169,190 @@ func (m *RequestEcho) Unmarshal(dAtA []byte) error { } return nil } +func (m *RequestBeginBlock) 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: RequestBeginBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestBeginBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCommitInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastCommitInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ByzantineValidators", 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 + } + m.ByzantineValidators = append(m.ByzantineValidators, Evidence{}) + if err := m.ByzantineValidators[len(m.ByzantineValidators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RequestFlush) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -9186,7 +10679,7 @@ func (m *RequestInitChain) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ConsensusParams == nil { - m.ConsensusParams = &types1.ConsensusParams{} + m.ConsensusParams = &types.ConsensusParams{} } if err := m.ConsensusParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -9390,12 +10883,185 @@ func (m *RequestQuery) Unmarshal(dAtA []byte) error { if postIndex < 0 { return ErrInvalidLengthTypes } - if postIndex > l { + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Prove", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Prove = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := 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 *RequestDeliverTx) 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: RequestDeliverTx: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestDeliverTx: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tx", 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.Tx = append(m.Tx[:0], dAtA[iNdEx:postIndex]...) + if m.Tx == nil { + m.Tx = []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 *RequestEndBlock) 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 } - m.Path = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: + 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: RequestEndBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RequestEndBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) } @@ -9414,26 +11080,6 @@ func (m *RequestQuery) Unmarshal(dAtA []byte) error { break } } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Prove", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Prove = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -10129,7 +11775,7 @@ func (m *RequestPrepareProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Votes = append(m.Votes, &types1.Vote{}) + m.Votes = append(m.Votes, &types.Vote{}) if err := m.Votes[len(m.Votes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -10214,7 +11860,7 @@ func (m *RequestExtendVote) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Vote == nil { - m.Vote = &types1.Vote{} + m.Vote = &types.Vote{} } if err := m.Vote.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -10300,7 +11946,7 @@ func (m *RequestVerifyVoteExtension) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Vote == nil { - m.Vote = &types1.Vote{} + m.Vote = &types.Vote{} } if err := m.Vote.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -10357,6 +12003,40 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + 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 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) } @@ -10389,7 +12069,7 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Txs", wireType) } @@ -10421,6 +12101,73 @@ func (m *RequestProcessProposal) Unmarshal(dAtA []byte) error { m.Txs = append(m.Txs, make([]byte, postIndex-iNdEx)) copy(m.Txs[len(m.Txs)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCommitInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastCommitInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ByzantineValidators", 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 + } + m.ByzantineValidators = append(m.ByzantineValidators, Evidence{}) + if err := m.ByzantineValidators[len(m.ByzantineValidators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -10708,7 +12455,112 @@ func (m *Response) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Exception", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Exception", 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 := &ResponseException{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Response_Exception{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Echo", 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 := &ResponseEcho{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Response_Echo{v} + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flush", 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 := &ResponseFlush{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Value = &Response_Flush{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10735,15 +12587,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseException{} + v := &ResponseInfo{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_Exception{v} + m.Value = &Response_Info{v} iNdEx = postIndex - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Echo", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InitChain", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10770,15 +12622,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseEcho{} + v := &ResponseInitChain{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_Echo{v} + m.Value = &Response_InitChain{v} iNdEx = postIndex - case 3: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Flush", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10805,15 +12657,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseFlush{} + v := &ResponseQuery{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_Flush{v} + m.Value = &Response_Query{v} iNdEx = postIndex - case 4: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BeginBlock", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10840,15 +12692,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseInfo{} + v := &ResponseBeginBlock{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_Info{v} + m.Value = &Response_BeginBlock{v} iNdEx = postIndex - case 5: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InitChain", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CheckTx", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10875,15 +12727,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseInitChain{} + v := &ResponseCheckTx{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_InitChain{v} + m.Value = &Response_CheckTx{v} iNdEx = postIndex - case 6: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DeliverTx", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10910,15 +12762,15 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseQuery{} + v := &ResponseDeliverTx{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_Query{v} + m.Value = &Response_DeliverTx{v} iNdEx = postIndex - case 8: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CheckTx", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EndBlock", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10945,11 +12797,11 @@ func (m *Response) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ResponseCheckTx{} + v := &ResponseEndBlock{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Value = &Response_CheckTx{v} + m.Value = &Response_EndBlock{v} iNdEx = postIndex case 11: if wireType != 2 { @@ -11781,7 +13633,7 @@ func (m *ResponseInitChain) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ConsensusParams == nil { - m.ConsensusParams = &types1.ConsensusParams{} + m.ConsensusParams = &types.ConsensusParams{} } if err := m.ConsensusParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -12183,6 +14035,90 @@ func (m *ResponseQuery) Unmarshal(dAtA []byte) error { } return nil } +func (m *ResponseBeginBlock) 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: ResponseBeginBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResponseBeginBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Events", 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 + } + m.Events = append(m.Events, Event{}) + if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ResponseCheckTx) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -12706,7 +14642,142 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field GasUsed", wireType) } - m.GasUsed = 0 + m.GasUsed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasUsed |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Events", 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 + } + m.Events = append(m.Events, Event{}) + if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Codespace", 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.Codespace = 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 *ResponseEndBlock) 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: ResponseEndBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResponseEndBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorUpdates", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -12716,14 +14787,29 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.GasUsed |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 7: + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorUpdates = append(m.ValidatorUpdates, ValidatorUpdate{}) + if err := m.ValidatorUpdates[len(m.ValidatorUpdates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConsensusParamUpdates", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -12750,16 +14836,18 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Events = append(m.Events, Event{}) - if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ConsensusParamUpdates == nil { + m.ConsensusParamUpdates = &types.ConsensusParams{} + } + if err := m.ConsensusParamUpdates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Codespace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -12769,23 +14857,25 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Codespace = string(dAtA[iNdEx:postIndex]) + m.Events = append(m.Events, Event{}) + if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -13466,7 +15556,7 @@ func (m *ResponseExtendVote) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.VoteExtension == nil { - m.VoteExtension = &types1.VoteExtension{} + m.VoteExtension = &types.VoteExtension{} } if err := m.VoteExtension.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -13593,9 +15683,9 @@ func (m *ResponseProcessProposal) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Accept", wireType) } - m.Result = 0 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -13605,14 +15695,15 @@ func (m *ResponseProcessProposal) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Result |= ResponseProcessProposal_Result(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } + m.Accept = bool(v != 0) case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Evidence", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppHash", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -13639,8 +15730,114 @@ func (m *ResponseProcessProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Evidence = append(m.Evidence, make([]byte, postIndex-iNdEx)) - copy(m.Evidence[len(m.Evidence)-1], dAtA[iNdEx:postIndex]) + m.AppHash = append(m.AppHash[:0], dAtA[iNdEx:postIndex]...) + if m.AppHash == nil { + m.AppHash = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxResults", 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 + } + m.TxResults = append(m.TxResults, &ExecTxResult{}) + if err := m.TxResults[len(m.TxResults)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorUpdates", 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 + } + m.ValidatorUpdates = append(m.ValidatorUpdates, &ValidatorUpdate{}) + if err := m.ValidatorUpdates[len(m.ValidatorUpdates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsensusParamUpdates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConsensusParamUpdates == nil { + m.ConsensusParamUpdates = &types.ConsensusParams{} + } + if err := m.ConsensusParamUpdates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -13790,15 +15987,118 @@ func (m *ResponseFinalizeBlock) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ConsensusParamUpdates == nil { - m.ConsensusParamUpdates = &types1.ConsensusParams{} + m.ConsensusParamUpdates = &types.ConsensusParams{} } if err := m.ConsensusParamUpdates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - iNdEx = postIndex - case 4: + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Events", 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 + } + m.Events = append(m.Events, Event{}) + if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LastCommitInfo) 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: LastCommitInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LastCommitInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Round", wireType) + } + m.Round = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Round |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Votes", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -13825,8 +16125,8 @@ func (m *ResponseFinalizeBlock) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Events = append(m.Events, Event{}) - if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Votes = append(m.Votes, VoteInfo{}) + if err := m.Votes[len(m.Votes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -13851,7 +16151,7 @@ func (m *ResponseFinalizeBlock) Unmarshal(dAtA []byte) error { } return nil } -func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { +func (m *Event) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -13874,17 +16174,17 @@ func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: LastCommitInfo: wiretype end group for non-group") + return fmt.Errorf("proto: Event: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: LastCommitInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Round", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } - m.Round = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -13894,14 +16194,27 @@ func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Round |= int32(b&0x7F) << shift + 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.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Votes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -13928,8 +16241,8 @@ func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Votes = append(m.Votes, VoteInfo{}) - if err := m.Votes[len(m.Votes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Attributes = append(m.Attributes, EventAttribute{}) + if err := m.Attributes[len(m.Attributes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -13954,7 +16267,7 @@ func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *Event) Unmarshal(dAtA []byte) error { +func (m *EventAttribute) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -13977,15 +16290,15 @@ func (m *Event) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Event: wiretype end group for non-group") + return fmt.Errorf("proto: EventAttribute: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventAttribute: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14013,13 +16326,13 @@ func (m *Event) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = string(dAtA[iNdEx:postIndex]) + m.Key = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -14029,26 +16342,44 @@ func (m *Event) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Attributes = append(m.Attributes, EventAttribute{}) - if err := m.Attributes[len(m.Attributes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Index = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -14070,7 +16401,7 @@ func (m *Event) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventAttribute) Unmarshal(dAtA []byte) error { +func (m *ExecTxResult) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14093,15 +16424,68 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventAttribute: wiretype end group for non-group") + return fmt.Errorf("proto: ExecTxResult: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventAttribute: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ExecTxResult: 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 Key", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Data", 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.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Log", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14129,11 +16513,11 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Key = string(dAtA[iNdEx:postIndex]) + m.Log = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14161,13 +16545,13 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = string(dAtA[iNdEx:postIndex]) + m.Info = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GasWanted", wireType) } - var v int + m.GasWanted = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -14177,12 +16561,96 @@ func (m *EventAttribute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.GasWanted |= int64(b&0x7F) << shift if b < 0x80 { break } } - m.Index = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GasUsed", wireType) + } + m.GasUsed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasUsed |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxEvents", 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 + } + m.TxEvents = append(m.TxEvents, Event{}) + if err := m.TxEvents[len(m.TxEvents)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Codespace", 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.Codespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/internal/consensus/common_test.go b/internal/consensus/common_test.go index fd9780a15..10955fc8c 100644 --- a/internal/consensus/common_test.go +++ b/internal/consensus/common_test.go @@ -506,18 +506,41 @@ func loadPrivValidator(t *testing.T, cfg *config.Config) *privval.FilePV { return privValidator } -func makeState(ctx context.Context, t *testing.T, cfg *config.Config, logger log.Logger, nValidators int) (*State, []*validatorStub) { +type makeStateArgs struct { + config *config.Config + logger log.Logger + validators int + application abci.Application +} + +func makeState(ctx context.Context, t *testing.T, args makeStateArgs) (*State, []*validatorStub) { t.Helper() // Get State - state, privVals := makeGenesisState(ctx, t, cfg, genesisStateArgs{ - Validators: nValidators, + validators := 4 + if args.validators != 0 { + validators = args.validators + } + var app abci.Application + app = kvstore.NewApplication() + if args.application != nil { + app = args.application + } + if args.config == nil { + args.config = configSetup(t) + } + if args.logger == nil { + args.logger = log.NewNopLogger() + } + + state, privVals := makeGenesisState(ctx, t, args.config, genesisStateArgs{ + Validators: validators, }) - vss := make([]*validatorStub, nValidators) + vss := make([]*validatorStub, validators) - cs := newState(ctx, t, logger, state, privVals[0], kvstore.NewApplication()) + cs := newState(ctx, t, args.logger, state, privVals[0], app) - for i := 0; i < nValidators; i++ { + for i := 0; i < validators; i++ { vss[i] = newValidatorStub(privVals[i], int32(i)) } // since cs1 starts at 1 diff --git a/internal/consensus/mempool_test.go b/internal/consensus/mempool_test.go index 7f846161e..f0bd18958 100644 --- a/internal/consensus/mempool_test.go +++ b/internal/consensus/mempool_test.go @@ -312,3 +312,8 @@ func (app *CounterApplication) PrepareProposal( req abci.RequestPrepareProposal) abci.ResponsePrepareProposal { return abci.ResponsePrepareProposal{BlockData: req.BlockData} } + +func (app *CounterApplication) ProcessProposal( + req abci.RequestProcessProposal) abci.ResponseProcessProposal { + return abci.ResponseProcessProposal{Accept: true} +} diff --git a/internal/consensus/state.go b/internal/consensus/state.go index 5e54a0720..7f2045dcd 100644 --- a/internal/consensus/state.go +++ b/internal/consensus/state.go @@ -1452,6 +1452,29 @@ func (cs *State) defaultDoPrevote(ctx context.Context, height int64, round int32 return } + /* + The block has now passed Tendermint's validation rules. + Before prevoting the block received from the proposer for the current round and height, + we request the Application, via the ProcessProposal, ABCI call to confirm that the block is + valid. If the Application does not accept the block, Tendermint prevotes nil. + + WARNING: misuse of block rejection by the Application can seriously compromise Tendermint's + liveness properties. Please see PrepareProposal-ProcessProposal coherence and determinism + properties in the ABCI++ specification. + */ + isAppValid, err := cs.blockExec.ProcessProposal(ctx, cs.ProposalBlock, cs.state) + if err != nil { + panic(fmt.Sprintf("ProcessProposal: %v", err)) + } + + // Vote nil if the Application rejected the block + if !isAppValid { + logger.Error("prevote step: state machine rejected a proposed block; this should not happen:"+ + "the proposer may be misbehaving; prevoting nil", "err", err) + cs.signAddVote(ctx, tmproto.PrevoteType, nil, types.PartSetHeader{}) + return + } + /* 22: upon from proposer(h_p, round_p) while step_p = propose do 23: if valid(v) && (lockedRound_p = −1 || lockedValue_p = v) then @@ -1510,30 +1533,6 @@ func (cs *State) defaultDoPrevote(ctx context.Context, height int64, round int32 } } - /* - Before prevoting on the block received from the proposer for the current round and height, - we request the Application, via `ProcessProposal` ABCI call, to confirm that the block is - valid. If the Application does not accept the block, Tendermint prevotes `nil`. - - WARNING: misuse of block rejection by the Application can seriously compromise Tendermint's - liveness properties. Please see `PrepareProosal`-`ProcessProposal` coherence and determinism - properties in the ABCI++ specification. - */ - stateMachineValidBlock, err := cs.blockExec.ProcessProposal(ctx, cs.ProposalBlock) - if err != nil { - panic(fmt.Sprintf( - "state machine returned an error (%v) when calling ProcessProposal", err, - )) - } - - // Vote nil if the Application rejected the block - if !stateMachineValidBlock { - logger.Error("prevote step: state machine rejected a proposed block; this should not happen:"+ - "the proposer may be misbehaving; prevoting nil", "err", err) - cs.signAddVote(ctx, tmproto.PrevoteType, nil, types.PartSetHeader{}) - return - } - logger.Debug("prevote step: ProposalBlock is valid but was not our locked block or " + "did not receive a more recent majority; prevoting nil") cs.signAddVote(ctx, tmproto.PrevoteType, nil, types.PartSetHeader{}) diff --git a/internal/consensus/state_test.go b/internal/consensus/state_test.go index 77573a484..f1cfc225c 100644 --- a/internal/consensus/state_test.go +++ b/internal/consensus/state_test.go @@ -8,14 +8,18 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/abci/example/kvstore" + abcitypes "github.com/tendermint/tendermint/abci/types" + abcimocks "github.com/tendermint/tendermint/abci/types/mocks" "github.com/tendermint/tendermint/crypto/tmhash" cstypes "github.com/tendermint/tendermint/internal/consensus/types" "github.com/tendermint/tendermint/internal/eventbus" tmpubsub "github.com/tendermint/tendermint/internal/pubsub" tmquery "github.com/tendermint/tendermint/internal/pubsub/query" + tmbytes "github.com/tendermint/tendermint/libs/bytes" "github.com/tendermint/tendermint/libs/log" tmrand "github.com/tendermint/tendermint/libs/rand" tmtime "github.com/tendermint/tendermint/libs/time" @@ -68,9 +72,8 @@ func TestStateProposerSelection0(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() config := configSetup(t) - logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) height, round := cs1.Height, cs1.Round newRoundCh := subscribe(ctx, t, cs1.eventBus, types.EventQueryNewRound) @@ -110,11 +113,10 @@ func TestStateProposerSelection0(t *testing.T) { // Now let's do it all again, but starting from round 2 instead of 0 func TestStateProposerSelection2(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) // test needs more work for more than 3 validators + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) // test needs more work for more than 3 validators height := cs1.Height newRoundCh := subscribe(ctx, t, cs1.eventBus, types.EventQueryNewRound) @@ -149,11 +151,10 @@ func TestStateProposerSelection2(t *testing.T) { // a non-validator should timeout into the prevote round func TestStateEnterProposeNoPrivValidator(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs, _ := makeState(ctx, t, config, logger, 1) + cs, _ := makeState(ctx, t, makeStateArgs{config: config, validators: 1}) cs.SetPrivValidator(ctx, nil) height, round := cs.Height, cs.Round @@ -173,11 +174,10 @@ func TestStateEnterProposeNoPrivValidator(t *testing.T) { // a validator should not timeout of the prevote round (TODO: unless the block is really big!) func TestStateEnterProposeYesPrivValidator(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs, _ := makeState(ctx, t, config, logger, 1) + cs, _ := makeState(ctx, t, makeStateArgs{config: config, validators: 1}) height, round := cs.Height, cs.Round // Listen for propose timeout event @@ -208,11 +208,10 @@ func TestStateEnterProposeYesPrivValidator(t *testing.T) { func TestStateBadProposal(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 2) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) height, round := cs1.Height, cs1.Round vs2 := vss[1] @@ -270,11 +269,10 @@ func TestStateBadProposal(t *testing.T) { func TestStateOversizedBlock(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 2) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) cs1.state.ConsensusParams.Block.MaxBytes = 2000 height, round := cs1.Height, cs1.Round vs2 := vss[1] @@ -336,11 +334,10 @@ func TestStateOversizedBlock(t *testing.T) { // propose, prevote, and precommit a block func TestStateFullRound1(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs, vss := makeState(ctx, t, config, logger, 1) + cs, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 1}) height, round := cs.Height, cs.Round voteCh := subscribe(ctx, t, cs.eventBus, types.EventQueryVote) @@ -367,11 +364,10 @@ func TestStateFullRound1(t *testing.T) { // nil is proposed, so prevote and precommit nil func TestStateFullRoundNil(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs, _ := makeState(ctx, t, config, logger, 1) + cs, _ := makeState(ctx, t, makeStateArgs{config: config, validators: 1}) height, round := cs.Height, cs.Round voteCh := subscribe(ctx, t, cs.eventBus, types.EventQueryVote) @@ -387,11 +383,10 @@ func TestStateFullRoundNil(t *testing.T) { // where the first validator has to wait for votes from the second func TestStateFullRound2(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 2) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) vs2 := vss[1] height, round := cs1.Height, cs1.Round @@ -432,11 +427,10 @@ func TestStateFullRound2(t *testing.T) { // two vals take turns proposing. val1 locks on first one, precommits nil on everything else func TestStateLock_NoPOL(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 2) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) vs2 := vss[1] height, round := cs1.Height, cs1.Round @@ -580,7 +574,9 @@ func TestStateLock_NoPOL(t *testing.T) { ensureNewTimeout(t, timeoutWaitCh, height, round, cs1.config.Precommit(round).Nanoseconds()) - cs2, _ := makeState(ctx, t, config, logger, 2) // needed so generated block is different than locked block + // cs1 is locked on a block at this point, so we must generate a new consensus + // state to force a new proposal block to be generated. + cs2, _ := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) // before we time out into new round, set next proposal block prop, propBlock := decideProposal(ctx, t, cs2, vs2, vs2.Height, vs2.Round+1) require.NotNil(t, propBlock, "Failed to create proposal block with vs2") @@ -643,7 +639,7 @@ func TestStateLock_POLUpdateLock(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -751,9 +747,8 @@ func TestStateLock_POLRelock(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() config := configSetup(t) - logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -851,9 +846,8 @@ func TestStateLock_PrevoteNilWhenLockedAndMissProposal(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() config := configSetup(t) - logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -942,7 +936,7 @@ func TestStateLock_PrevoteNilWhenLockedAndDifferentProposal(t *testing.T) { state. */ - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1044,7 +1038,7 @@ func TestStateLock_POLDoesNotUnlock(t *testing.T) { state. */ - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1178,7 +1172,7 @@ func TestStateLock_MissingProposalWhenPOLSeenDoesNotUpdateLock(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1267,9 +1261,8 @@ func TestStateLock_DoesNotLockOnOldProposal(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() config := configSetup(t) - logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1347,7 +1340,7 @@ func TestStateLock_POLSafety1(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1464,11 +1457,10 @@ func TestStateLock_POLSafety1(t *testing.T) { // dont see P0, lock on P1 at R1, dont unlock using P0 at R2 func TestStateLock_POLSafety2(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1564,7 +1556,7 @@ func TestState_PrevotePOLFromPreviousRound(t *testing.T) { config := configSetup(t) logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config, logger: logger}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1702,12 +1694,11 @@ func TestState_PrevotePOLFromPreviousRound(t *testing.T) { // What we want: // P0 proposes B0 at R3. func TestProposeValidBlock(t *testing.T) { - cfg := configSetup(t) - logger := log.NewNopLogger() + config := configSetup(t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, cfg, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1739,14 +1730,14 @@ func TestProposeValidBlock(t *testing.T) { ensurePrevoteMatch(t, voteCh, height, round, blockID.Hash) // the others sign a polka - signAddVotes(ctx, t, cs1, tmproto.PrevoteType, cfg.ChainID(), blockID, vs2, vs3, vs4) + signAddVotes(ctx, t, cs1, tmproto.PrevoteType, config.ChainID(), blockID, vs2, vs3, vs4) ensurePrecommit(t, voteCh, height, round) // we should have precommitted the proposed block in this round. validatePrecommit(ctx, t, cs1, round, round, vss[0], blockID.Hash, blockID.Hash) - signAddVotes(ctx, t, cs1, tmproto.PrecommitType, cfg.ChainID(), types.BlockID{}, vs2, vs3, vs4) + signAddVotes(ctx, t, cs1, tmproto.PrecommitType, config.ChainID(), types.BlockID{}, vs2, vs3, vs4) ensureNewTimeout(t, timeoutWaitCh, height, round, cs1.config.Precommit(round).Nanoseconds()) @@ -1762,7 +1753,7 @@ func TestProposeValidBlock(t *testing.T) { // We did not see a valid proposal within this round, so prevote nil. ensurePrevoteMatch(t, voteCh, height, round, nil) - signAddVotes(ctx, t, cs1, tmproto.PrecommitType, cfg.ChainID(), types.BlockID{}, vs2, vs3, vs4) + signAddVotes(ctx, t, cs1, tmproto.PrecommitType, config.ChainID(), types.BlockID{}, vs2, vs3, vs4) ensurePrecommit(t, voteCh, height, round) // we should have precommitted nil during this round because we received @@ -1772,7 +1763,7 @@ func TestProposeValidBlock(t *testing.T) { incrementRound(vs2, vs3, vs4) incrementRound(vs2, vs3, vs4) - signAddVotes(ctx, t, cs1, tmproto.PrecommitType, cfg.ChainID(), types.BlockID{}, vs2, vs3, vs4) + signAddVotes(ctx, t, cs1, tmproto.PrecommitType, config.ChainID(), types.BlockID{}, vs2, vs3, vs4) round += 2 // increment by multiple rounds @@ -1798,11 +1789,10 @@ func TestProposeValidBlock(t *testing.T) { // P0 miss to lock B but set valid block to B after receiving delayed prevote. func TestSetValidBlockOnDelayedPrevote(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1868,11 +1858,10 @@ func TestSetValidBlockOnDelayedPrevote(t *testing.T) { // receiving delayed Block Proposal. func TestSetValidBlockOnDelayedProposal(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1928,6 +1917,54 @@ func TestSetValidBlockOnDelayedProposal(t *testing.T) { assert.True(t, rs.ValidRound == round) } +func TestProcessProposalAccept(t *testing.T) { + for _, testCase := range []struct { + name string + accept bool + expectedNilPrevote bool + }{ + { + name: "accepted block is prevoted", + accept: true, + expectedNilPrevote: false, + }, + { + name: "rejected block is not prevoted", + accept: false, + expectedNilPrevote: true, + }, + } { + t.Run(testCase.name, func(t *testing.T) { + config := configSetup(t) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + m := abcimocks.NewBaseMock() + m.On("ProcessProposal", mock.Anything).Return(abcitypes.ResponseProcessProposal{Accept: testCase.accept}) + cs1, _ := makeState(ctx, t, makeStateArgs{config: config, application: m}) + height, round := cs1.Height, cs1.Round + + proposalCh := subscribe(ctx, t, cs1.eventBus, types.EventQueryCompleteProposal) + newRoundCh := subscribe(ctx, t, cs1.eventBus, types.EventQueryNewRound) + pv1, err := cs1.privValidator.GetPubKey(ctx) + require.NoError(t, err) + addr := pv1.Address() + voteCh := subscribeToVoter(ctx, t, cs1, addr) + + startTestRound(ctx, cs1, cs1.Height, round) + ensureNewRound(t, newRoundCh, height, round) + + ensureNewProposal(t, proposalCh, height, round) + rs := cs1.GetRoundState() + var prevoteHash tmbytes.HexBytes + if !testCase.expectedNilPrevote { + prevoteHash = rs.ProposalBlock.Hash() + } + ensurePrevoteMatch(t, voteCh, height, round, prevoteHash) + }) + } +} + // 4 vals, 3 Nil Precommits at P0 // What we want: // P0 waits for timeoutPrecommit before starting next round @@ -1935,9 +1972,8 @@ func TestWaitingTimeoutOnNilPolka(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() config := configSetup(t) - logger := log.NewNopLogger() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1959,11 +1995,10 @@ func TestWaitingTimeoutOnNilPolka(t *testing.T) { // P0 waits for timeoutPropose in the next round before entering prevote func TestWaitingTimeoutProposeOnNewRound(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -1999,11 +2034,10 @@ func TestWaitingTimeoutProposeOnNewRound(t *testing.T) { // P0 jump to higher round, precommit and start precommit wait func TestRoundSkipOnNilPolkaFromHigherRound(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -2040,11 +2074,10 @@ func TestRoundSkipOnNilPolkaFromHigherRound(t *testing.T) { // P0 wait for timeoutPropose to expire before sending prevote. func TestWaitTimeoutProposeOnNilPolkaForTheCurrentRound(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, int32(1) @@ -2071,11 +2104,10 @@ func TestWaitTimeoutProposeOnNilPolkaForTheCurrentRound(t *testing.T) { // P0 emit NewValidBlock event upon receiving 2/3+ Precommit for B but hasn't received block B yet func TestEmitNewValidBlockEventOnCommitWithoutBlock(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, int32(1) @@ -2114,11 +2146,10 @@ func TestEmitNewValidBlockEventOnCommitWithoutBlock(t *testing.T) { // After receiving block, it executes block and moves to the next height. func TestCommitFromPreviousRound(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, int32(1) @@ -2176,12 +2207,11 @@ func (n *fakeTxNotifier) Notify() { // start of the next round func TestStartNextHeightCorrectlyAfterTimeout(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() config.Consensus.SkipTimeoutCommit = false - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) cs1.txNotifier = &fakeTxNotifier{ch: make(chan struct{})} vs2, vs3, vs4 := vss[1], vss[2], vss[3] @@ -2243,12 +2273,11 @@ func TestStartNextHeightCorrectlyAfterTimeout(t *testing.T) { func TestResetTimeoutPrecommitUponNewHeight(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() config.Consensus.SkipTimeoutCommit = false - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round @@ -2313,12 +2342,11 @@ func TestResetTimeoutPrecommitUponNewHeight(t *testing.T) { // 4 vals. // we receive a final precommit after going into next round, but others might have gone to commit already! func TestStateHalt1(t *testing.T) { - cfg := configSetup(t) - logger := log.NewNopLogger() + config := configSetup(t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, cfg, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) vs2, vs3, vs4 := vss[1], vss[2], vss[3] height, round := cs1.Height, cs1.Round partSize := types.BlockPartSizeBytes @@ -2348,17 +2376,17 @@ func TestStateHalt1(t *testing.T) { ensurePrevote(t, voteCh, height, round) - signAddVotes(ctx, t, cs1, tmproto.PrevoteType, cfg.ChainID(), blockID, vs2, vs3, vs4) + signAddVotes(ctx, t, cs1, tmproto.PrevoteType, config.ChainID(), blockID, vs2, vs3, vs4) ensurePrecommit(t, voteCh, height, round) // the proposed block should now be locked and our precommit added validatePrecommit(ctx, t, cs1, round, round, vss[0], propBlock.Hash(), propBlock.Hash()) // add precommits from the rest - signAddVotes(ctx, t, cs1, tmproto.PrecommitType, cfg.ChainID(), types.BlockID{}, vs2) // didnt receive proposal - signAddVotes(ctx, t, cs1, tmproto.PrecommitType, cfg.ChainID(), blockID, vs3) + signAddVotes(ctx, t, cs1, tmproto.PrecommitType, config.ChainID(), types.BlockID{}, vs2) // didnt receive proposal + signAddVotes(ctx, t, cs1, tmproto.PrecommitType, config.ChainID(), blockID, vs3) // we receive this later, but vs3 might receive it earlier and with ours will go to commit! - precommit4 := signVote(ctx, t, vs4, tmproto.PrecommitType, cfg.ChainID(), blockID) + precommit4 := signVote(ctx, t, vs4, tmproto.PrecommitType, config.ChainID(), blockID) incrementRound(vs2, vs3, vs4) @@ -2389,12 +2417,11 @@ func TestStateHalt1(t *testing.T) { func TestStateOutputsBlockPartsStats(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() // create dummy peer - cs, _ := makeState(ctx, t, config, logger, 1) + cs, _ := makeState(ctx, t, makeStateArgs{config: config, validators: 1}) peerID, err := types.NewNodeID("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") require.NoError(t, err) @@ -2438,11 +2465,10 @@ func TestStateOutputsBlockPartsStats(t *testing.T) { func TestStateOutputVoteStats(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs, vss := makeState(ctx, t, config, logger, 2) + cs, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) // create dummy peer peerID, err := types.NewNodeID("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") require.NoError(t, err) @@ -2480,11 +2506,10 @@ func TestStateOutputVoteStats(t *testing.T) { func TestSignSameVoteTwice(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - _, vss := makeState(ctx, t, config, logger, 2) + _, vss := makeState(ctx, t, makeStateArgs{config: config, validators: 2}) randBytes := tmrand.Bytes(tmhash.Size) @@ -2521,11 +2546,10 @@ func TestSignSameVoteTwice(t *testing.T) { // corresponding proposal message. func TestStateTimestamp_ProposalNotMatch(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) height, round := cs1.Height, cs1.Round vs2, vs3, vs4 := vss[1], vss[2], vss[3] @@ -2570,11 +2594,10 @@ func TestStateTimestamp_ProposalNotMatch(t *testing.T) { // corresponding proposal message. func TestStateTimestamp_ProposalMatch(t *testing.T) { config := configSetup(t) - logger := log.NewNopLogger() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cs1, vss := makeState(ctx, t, config, logger, 4) + cs1, vss := makeState(ctx, t, makeStateArgs{config: config}) height, round := cs1.Height, cs1.Round vs2, vs3, vs4 := vss[1], vss[2], vss[3] diff --git a/internal/state/execution.go b/internal/state/execution.go index edda788d2..cdd6e009b 100644 --- a/internal/state/execution.go +++ b/internal/state/execution.go @@ -156,10 +156,14 @@ func (blockExec *BlockExecutor) CreateProposalBlock( func (blockExec *BlockExecutor) ProcessProposal( ctx context.Context, block *types.Block, + state State, ) (bool, error) { req := abci.RequestProcessProposal{ - Txs: block.Data.Txs.ToSliceOfBytes(), - Header: *block.Header.ToProto(), + Hash: block.Header.Hash(), + Header: *block.Header.ToProto(), + Txs: block.Data.Txs.ToSliceOfBytes(), + LastCommitInfo: buildLastCommitInfo(block, blockExec.store, state.InitialHeight), + ByzantineValidators: block.Evidence.ToABCI(), } resp, err := blockExec.proxyApp.ProcessProposal(ctx, req) @@ -167,7 +171,7 @@ func (blockExec *BlockExecutor) ProcessProposal( return false, ErrInvalidBlock(err) } - return resp.IsOK(), nil + return resp.Accept, nil } // ValidateBlock validates the given block against the given state. @@ -381,13 +385,6 @@ func execBlockOnProxyApp( dtxs := make([]*abci.ResponseDeliverTx, len(block.Txs)) abciResponses.FinalizeBlock.Txs = dtxs - commitInfo := getBeginBlockValidatorInfo(block, store, initialHeight) - - byzVals := make([]abci.Evidence, 0) - for _, evidence := range block.Evidence { - byzVals = append(byzVals, evidence.ABCI()...) - } - // Begin block var err error pbh := block.Header.ToProto() @@ -398,12 +395,12 @@ func execBlockOnProxyApp( abciResponses.FinalizeBlock, err = proxyAppConn.FinalizeBlock( ctx, abci.RequestFinalizeBlock{ + Txs: block.Txs.ToSliceOfBytes(), Hash: block.Hash(), Header: *pbh, Height: block.Height, - LastCommitInfo: commitInfo, - ByzantineValidators: byzVals, - Txs: block.Txs.ToSliceOfBytes(), + LastCommitInfo: buildLastCommitInfo(block, store, initialHeight), + ByzantineValidators: block.Evidence.ToABCI(), }, ) if err != nil { @@ -414,43 +411,44 @@ func execBlockOnProxyApp( return abciResponses, nil } -func getBeginBlockValidatorInfo(block *types.Block, store Store, - initialHeight int64) abci.LastCommitInfo { - voteInfos := make([]abci.VoteInfo, block.LastCommit.Size()) - // Initial block -> LastCommitInfo.Votes are empty. - // Remember that the first LastCommit is intentionally empty, so it makes - // sense for LastCommitInfo.Votes to also be empty. - if block.Height > initialHeight { - lastValSet, err := store.LoadValidators(block.Height - 1) - if err != nil { - panic(err) - } +func buildLastCommitInfo(block *types.Block, store Store, initialHeight int64) abci.LastCommitInfo { + if block.Height == initialHeight { + // there is no last commmit for the initial height. + // return an empty value. + return abci.LastCommitInfo{} + } - // Sanity check that commit size matches validator set size - only applies - // after first block. - var ( - commitSize = block.LastCommit.Size() - valSetLen = len(lastValSet.Validators) - ) - if commitSize != valSetLen { - panic(fmt.Sprintf( - "commit size (%d) doesn't match valset length (%d) at height %d\n\n%v\n\n%v", - commitSize, valSetLen, block.Height, block.LastCommit.Signatures, lastValSet.Validators, - )) - } + lastValSet, err := store.LoadValidators(block.Height - 1) + if err != nil { + panic(err) + } - for i, val := range lastValSet.Validators { - commitSig := block.LastCommit.Signatures[i] - voteInfos[i] = abci.VoteInfo{ - Validator: types.TM2PB.Validator(val), - SignedLastBlock: !commitSig.Absent(), - } + var ( + commitSize = block.LastCommit.Size() + valSetLen = len(lastValSet.Validators) + ) + + // ensure that the size of the validator set in the last commit matches + // the size of the validator set in the state store. + if commitSize != valSetLen { + panic(fmt.Sprintf( + "commit size (%d) doesn't match validator set length (%d) at height %d\n\n%v\n\n%v", + commitSize, valSetLen, block.Height, block.LastCommit.Signatures, lastValSet.Validators, + )) + } + + votes := make([]abci.VoteInfo, block.LastCommit.Size()) + for i, val := range lastValSet.Validators { + commitSig := block.LastCommit.Signatures[i] + votes[i] = abci.VoteInfo{ + Validator: types.TM2PB.Validator(val), + SignedLastBlock: !commitSig.Absent(), } } return abci.LastCommitInfo{ Round: block.LastCommit.Round, - Votes: voteInfos, + Votes: votes, } } diff --git a/internal/state/execution_test.go b/internal/state/execution_test.go index 56351eba6..636e654e7 100644 --- a/internal/state/execution_test.go +++ b/internal/state/execution_test.go @@ -12,6 +12,7 @@ import ( abciclient "github.com/tendermint/tendermint/abci/client" abci "github.com/tendermint/tendermint/abci/types" + abcimocks "github.com/tendermint/tendermint/abci/types/mocks" "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" "github.com/tendermint/tendermint/crypto/encoding" @@ -241,44 +242,77 @@ func TestBeginBlockByzantineValidators(t *testing.T) { } func TestProcessProposal(t *testing.T) { - height := 1 - runTest := func(txs types.Txs, expectAccept bool) { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - app := &testApp{} - cc := abciclient.NewLocalCreator(app) - logger := log.TestingLogger() - proxyApp := proxy.NewAppConns(cc, logger, proxy.NopMetrics()) - err := proxyApp.Start(ctx) - require.NoError(t, err) + const height = 2 + txs := factory.MakeTenTxs(height) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() - state, stateDB, _ := makeState(t, 1, height) - stateStore := sm.NewStore(stateDB) - blockStore := store.NewBlockStore(dbm.NewMemDB()) - - blockExec := sm.NewBlockExecutor( - stateStore, - logger, - proxyApp.Consensus(), - mmock.Mempool{}, - sm.EmptyEvidencePool{}, - blockStore, - ) + app := abcimocks.NewBaseMock() + cc := abciclient.NewLocalCreator(app) + logger := log.TestingLogger() + proxyApp := proxy.NewAppConns(cc, logger, proxy.NopMetrics()) + err := proxyApp.Start(ctx) + require.NoError(t, err) + + state, stateDB, privVals := makeState(t, 1, height) + stateStore := sm.NewStore(stateDB) + blockStore := store.NewBlockStore(dbm.NewMemDB()) - block, err := sf.MakeBlock(state, int64(height), new(types.Commit)) + blockExec := sm.NewBlockExecutor( + stateStore, + logger, + proxyApp.Consensus(), + mmock.Mempool{}, + sm.EmptyEvidencePool{}, + blockStore, + ) + + block0, err := sf.MakeBlock(state, height-1, new(types.Commit)) + require.NoError(t, err) + lastCommitSig := []types.CommitSig{} + partSet, err := block0.MakePartSet(types.BlockPartSizeBytes) + require.NoError(t, err) + blockID := types.BlockID{Hash: block0.Hash(), PartSetHeader: partSet.Header()} + voteInfos := []abci.VoteInfo{} + for _, privVal := range privVals { + vote, err := factory.MakeVote(ctx, privVal, block0.Header.ChainID, 0, 0, 0, 2, blockID, time.Now()) require.NoError(t, err) - block.Txs = txs - acceptBlock, err := blockExec.ProcessProposal(ctx, block) + pk, err := privVal.GetPubKey(ctx) require.NoError(t, err) - require.Equal(t, expectAccept, acceptBlock) + addr := pk.Address() + voteInfos = append(voteInfos, + abci.VoteInfo{ + SignedLastBlock: true, + Validator: abci.Validator{ + Address: addr, + Power: 1000, + }, + }) + lastCommitSig = append(lastCommitSig, vote.CommitSig()) } - goodTxs := factory.MakeTenTxs(int64(height)) - runTest(goodTxs, true) - // testApp has process proposal fail if any tx is 0-len - badTxs := factory.MakeTenTxs(int64(height)) - badTxs[0] = types.Tx{} - runTest(badTxs, false) + + lastCommit := types.NewCommit(height-1, 0, types.BlockID{}, lastCommitSig) + block1, err := sf.MakeBlock(state, height, lastCommit) + require.NoError(t, err) + block1.Txs = txs + + expectedRpp := abci.RequestProcessProposal{ + Hash: block1.Hash(), + Header: *block1.Header.ToProto(), + Txs: block1.Txs.ToSliceOfBytes(), + ByzantineValidators: block1.Evidence.ToABCI(), + LastCommitInfo: abci.LastCommitInfo{ + Round: 0, + Votes: voteInfos, + }, + } + + app.On("ProcessProposal", mock.Anything).Return(abci.ResponseProcessProposal{Accept: true}) + acceptBlock, err := blockExec.ProcessProposal(ctx, block1, state) + require.NoError(t, err) + require.True(t, acceptBlock) + app.AssertExpectations(t) + app.AssertCalled(t, "ProcessProposal", expectedRpp) } func TestValidateValidatorUpdates(t *testing.T) { diff --git a/internal/state/helpers_test.go b/internal/state/helpers_test.go index ca384ffb9..a5720f183 100644 --- a/internal/state/helpers_test.go +++ b/internal/state/helpers_test.go @@ -335,8 +335,8 @@ func (app *testApp) Query(reqQuery abci.RequestQuery) (resQuery abci.ResponseQue func (app *testApp) ProcessProposal(req abci.RequestProcessProposal) abci.ResponseProcessProposal { for _, tx := range req.Txs { if len(tx) == 0 { - return abci.ResponseProcessProposal{Result: abci.ResponseProcessProposal_REJECT} + return abci.ResponseProcessProposal{Accept: false} } } - return abci.ResponseProcessProposal{Result: abci.ResponseProcessProposal_ACCEPT} + return abci.ResponseProcessProposal{Accept: true} } diff --git a/test/e2e/app/app.go b/test/e2e/app/app.go index 26a511718..c5e328053 100644 --- a/test/e2e/app/app.go +++ b/test/e2e/app/app.go @@ -303,6 +303,18 @@ func (app *Application) PrepareProposal(req abci.RequestPrepareProposal) abci.Re return abci.ResponsePrepareProposal{BlockData: req.BlockData} } +// ProcessProposal implements part of the Application interface. +// It accepts any proposal that does not contain a malformed transaction. +func (app *Application) ProcessProposal(req abci.RequestProcessProposal) abci.ResponseProcessProposal { + for _, tx := range req.Txs { + _, _, err := parseTx(tx) + if err != nil { + return abci.ResponseProcessProposal{Accept: false} + } + } + return abci.ResponseProcessProposal{Accept: true} +} + func (app *Application) Rollback() error { app.mu.Lock() defer app.mu.Unlock() diff --git a/types/evidence.go b/types/evidence.go index 264e0957b..1ea53d9b5 100644 --- a/types/evidence.go +++ b/types/evidence.go @@ -681,6 +681,16 @@ func (evl EvidenceList) Has(evidence Evidence) bool { return false } +// ToABCI converts the evidence list to a slice of the ABCI protobuf messages +// for use when communicating the evidence to an application. +func (evl EvidenceList) ToABCI() []abci.Evidence { + var el []abci.Evidence + for _, e := range evl { + el = append(el, e.ABCI()...) + } + return el +} + //------------------------------------------ PROTO -------------------------------------- // EvidenceToProto is a generalized function for encoding evidence that conforms to the