From 0c7338c5f037fc17621427a778a9bf19b1abb2e4 Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Mon, 30 Jul 2018 19:29:40 +0400 Subject: [PATCH] abci: Change validators to last_commit_info in RequestBeginBlock (#2074) * change validators to last_commit_info in RequestBeginBlock * do not send pubkeys with RequestBeginBlock Refs #1856 --- CHANGELOG_PENDING.md | 1 + abci/types/types.pb.go | 947 +++++++++++++++++++++++-------------- abci/types/types.proto | 12 +- abci/types/typespb_test.go | 124 +++++ docs/app-dev/abci-spec.md | 17 +- state/execution.go | 11 +- state/execution_test.go | 2 +- types/protobuf.go | 9 +- types/protobuf_test.go | 21 + 9 files changed, 783 insertions(+), 361 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 5bb79e4f6..76d06b496 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -7,6 +7,7 @@ BREAKING CHANGES: - [tools] Removed `make ensure_deps` in favor of `make get_vendor_deps` - [p2p] Remove salsa and ripemd primitives, in favor of using chacha as a stream cipher, and hkdf - [abci] Changed time format from int64 to google.protobuf.Timestamp +- [abci] Changed Validators to LastCommitInfo in RequestBeginBlock FEATURES: - [tools] Added `make check_dep` diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 9a2b511b2..ac71d91c8 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -59,7 +59,7 @@ func (m *Request) Reset() { *m = Request{} } func (m *Request) String() string { return proto.CompactTextString(m) } func (*Request) ProtoMessage() {} func (*Request) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{0} + return fileDescriptor_types_d8da2202f45d32c0, []int{0} } func (m *Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -481,7 +481,7 @@ func (m *RequestEcho) Reset() { *m = RequestEcho{} } func (m *RequestEcho) String() string { return proto.CompactTextString(m) } func (*RequestEcho) ProtoMessage() {} func (*RequestEcho) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{1} + return fileDescriptor_types_d8da2202f45d32c0, []int{1} } func (m *RequestEcho) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -527,7 +527,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_types_2c69c6b96b429b1c, []int{2} + return fileDescriptor_types_d8da2202f45d32c0, []int{2} } func (m *RequestFlush) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -567,7 +567,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_types_2c69c6b96b429b1c, []int{3} + return fileDescriptor_types_d8da2202f45d32c0, []int{3} } func (m *RequestInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -616,7 +616,7 @@ func (m *RequestSetOption) Reset() { *m = RequestSetOption{} } func (m *RequestSetOption) String() string { return proto.CompactTextString(m) } func (*RequestSetOption) ProtoMessage() {} func (*RequestSetOption) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{4} + return fileDescriptor_types_d8da2202f45d32c0, []int{4} } func (m *RequestSetOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -674,7 +674,7 @@ 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_types_2c69c6b96b429b1c, []int{5} + return fileDescriptor_types_d8da2202f45d32c0, []int{5} } func (m *RequestInitChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -752,7 +752,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_types_2c69c6b96b429b1c, []int{6} + return fileDescriptor_types_d8da2202f45d32c0, []int{6} } func (m *RequestQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -809,21 +809,22 @@ func (m *RequestQuery) GetProve() bool { return false } +// NOTE: validators here have empty pubkeys. type RequestBeginBlock struct { - Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Header Header `protobuf:"bytes,2,opt,name=header" json:"header"` - Validators []SigningValidator `protobuf:"bytes,3,rep,name=validators" json:"validators"` - ByzantineValidators []Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Header Header `protobuf:"bytes,2,opt,name=header" json:"header"` + LastCommitInfo LastCommitInfo `protobuf:"bytes,3,opt,name=last_commit_info,json=lastCommitInfo" json:"last_commit_info"` + ByzantineValidators []Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } 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_types_2c69c6b96b429b1c, []int{7} + return fileDescriptor_types_d8da2202f45d32c0, []int{7} } func (m *RequestBeginBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -866,11 +867,11 @@ func (m *RequestBeginBlock) GetHeader() Header { return Header{} } -func (m *RequestBeginBlock) GetValidators() []SigningValidator { +func (m *RequestBeginBlock) GetLastCommitInfo() LastCommitInfo { if m != nil { - return m.Validators + return m.LastCommitInfo } - return nil + return LastCommitInfo{} } func (m *RequestBeginBlock) GetByzantineValidators() []Evidence { @@ -891,7 +892,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_types_2c69c6b96b429b1c, []int{8} + return fileDescriptor_types_d8da2202f45d32c0, []int{8} } func (m *RequestCheckTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -938,7 +939,7 @@ 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_types_2c69c6b96b429b1c, []int{9} + return fileDescriptor_types_d8da2202f45d32c0, []int{9} } func (m *RequestDeliverTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -985,7 +986,7 @@ 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_types_2c69c6b96b429b1c, []int{10} + return fileDescriptor_types_d8da2202f45d32c0, []int{10} } func (m *RequestEndBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1031,7 +1032,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_types_2c69c6b96b429b1c, []int{11} + return fileDescriptor_types_d8da2202f45d32c0, []int{11} } func (m *RequestCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1084,7 +1085,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_types_2c69c6b96b429b1c, []int{12} + return fileDescriptor_types_d8da2202f45d32c0, []int{12} } func (m *Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1537,7 +1538,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_types_2c69c6b96b429b1c, []int{13} + return fileDescriptor_types_d8da2202f45d32c0, []int{13} } func (m *ResponseException) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1584,7 +1585,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_types_2c69c6b96b429b1c, []int{14} + return fileDescriptor_types_d8da2202f45d32c0, []int{14} } func (m *ResponseEcho) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1630,7 +1631,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_types_2c69c6b96b429b1c, []int{15} + return fileDescriptor_types_d8da2202f45d32c0, []int{15} } func (m *ResponseFlush) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1673,7 +1674,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_types_2c69c6b96b429b1c, []int{16} + return fileDescriptor_types_d8da2202f45d32c0, []int{16} } func (m *ResponseInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1745,7 +1746,7 @@ func (m *ResponseSetOption) Reset() { *m = ResponseSetOption{} } func (m *ResponseSetOption) String() string { return proto.CompactTextString(m) } func (*ResponseSetOption) ProtoMessage() {} func (*ResponseSetOption) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{17} + return fileDescriptor_types_d8da2202f45d32c0, []int{17} } func (m *ResponseSetOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1807,7 +1808,7 @@ func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} } func (m *ResponseInitChain) String() string { return proto.CompactTextString(m) } func (*ResponseInitChain) ProtoMessage() {} func (*ResponseInitChain) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{18} + return fileDescriptor_types_d8da2202f45d32c0, []int{18} } func (m *ResponseInitChain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1869,7 +1870,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_types_2c69c6b96b429b1c, []int{19} + return fileDescriptor_types_d8da2202f45d32c0, []int{19} } func (m *ResponseQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1965,7 +1966,7 @@ func (m *ResponseBeginBlock) Reset() { *m = ResponseBeginBlock{} } func (m *ResponseBeginBlock) String() string { return proto.CompactTextString(m) } func (*ResponseBeginBlock) ProtoMessage() {} func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{20} + return fileDescriptor_types_d8da2202f45d32c0, []int{20} } func (m *ResponseBeginBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2018,7 +2019,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_types_2c69c6b96b429b1c, []int{21} + return fileDescriptor_types_d8da2202f45d32c0, []int{21} } func (m *ResponseCheckTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2113,7 +2114,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_types_2c69c6b96b429b1c, []int{22} + return fileDescriptor_types_d8da2202f45d32c0, []int{22} } func (m *ResponseDeliverTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2204,7 +2205,7 @@ func (m *ResponseEndBlock) Reset() { *m = ResponseEndBlock{} } func (m *ResponseEndBlock) String() string { return proto.CompactTextString(m) } func (*ResponseEndBlock) ProtoMessage() {} func (*ResponseEndBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{23} + return fileDescriptor_types_d8da2202f45d32c0, []int{23} } func (m *ResponseEndBlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2266,7 +2267,7 @@ func (m *ResponseCommit) Reset() { *m = ResponseCommit{} } func (m *ResponseCommit) String() string { return proto.CompactTextString(m) } func (*ResponseCommit) ProtoMessage() {} func (*ResponseCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{24} + return fileDescriptor_types_d8da2202f45d32c0, []int{24} } func (m *ResponseCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2317,7 +2318,7 @@ func (m *ConsensusParams) Reset() { *m = ConsensusParams{} } func (m *ConsensusParams) String() string { return proto.CompactTextString(m) } func (*ConsensusParams) ProtoMessage() {} func (*ConsensusParams) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{25} + return fileDescriptor_types_d8da2202f45d32c0, []int{25} } func (m *ConsensusParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2367,7 +2368,7 @@ func (m *ConsensusParams) GetBlockGossip() *BlockGossip { return nil } -// BlockSize contain limits on the block size. +// BlockSize contains limits on the block size. type BlockSize struct { MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` MaxTxs int32 `protobuf:"varint,2,opt,name=max_txs,json=maxTxs,proto3" json:"max_txs,omitempty"` @@ -2381,7 +2382,7 @@ func (m *BlockSize) Reset() { *m = BlockSize{} } func (m *BlockSize) String() string { return proto.CompactTextString(m) } func (*BlockSize) ProtoMessage() {} func (*BlockSize) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{26} + return fileDescriptor_types_d8da2202f45d32c0, []int{26} } func (m *BlockSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2431,7 +2432,7 @@ func (m *BlockSize) GetMaxGas() int64 { return 0 } -// TxSize contain limits on the tx size. +// TxSize contains limits on the tx size. type TxSize struct { MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` MaxGas int64 `protobuf:"varint,2,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` @@ -2444,7 +2445,7 @@ func (m *TxSize) Reset() { *m = TxSize{} } func (m *TxSize) String() string { return proto.CompactTextString(m) } func (*TxSize) ProtoMessage() {} func (*TxSize) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{27} + return fileDescriptor_types_d8da2202f45d32c0, []int{27} } func (m *TxSize) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2501,7 +2502,7 @@ func (m *BlockGossip) Reset() { *m = BlockGossip{} } func (m *BlockGossip) String() string { return proto.CompactTextString(m) } func (*BlockGossip) ProtoMessage() {} func (*BlockGossip) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{28} + return fileDescriptor_types_d8da2202f45d32c0, []int{28} } func (m *BlockGossip) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2537,6 +2538,61 @@ func (m *BlockGossip) GetBlockPartSizeBytes() int32 { return 0 } +type LastCommitInfo struct { + CommitRound int32 `protobuf:"varint,1,opt,name=commit_round,json=commitRound,proto3" json:"commit_round,omitempty"` + Validators []SigningValidator `protobuf:"bytes,2,rep,name=validators" json:"validators"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +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_types_d8da2202f45d32c0, []int{29} +} +func (m *LastCommitInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LastCommitInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LastCommitInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *LastCommitInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_LastCommitInfo.Merge(dst, src) +} +func (m *LastCommitInfo) XXX_Size() int { + return m.Size() +} +func (m *LastCommitInfo) XXX_DiscardUnknown() { + xxx_messageInfo_LastCommitInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_LastCommitInfo proto.InternalMessageInfo + +func (m *LastCommitInfo) GetCommitRound() int32 { + if m != nil { + return m.CommitRound + } + return 0 +} + +func (m *LastCommitInfo) GetValidators() []SigningValidator { + if m != nil { + return m.Validators + } + return nil +} + // just the minimum the app might need type Header struct { // basics @@ -2561,7 +2617,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{29} + return fileDescriptor_types_d8da2202f45d32c0, []int{30} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2667,7 +2723,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_types_2c69c6b96b429b1c, []int{30} + return fileDescriptor_types_d8da2202f45d32c0, []int{31} } func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2730,7 +2786,7 @@ func (m *SigningValidator) Reset() { *m = SigningValidator{} } func (m *SigningValidator) String() string { return proto.CompactTextString(m) } func (*SigningValidator) ProtoMessage() {} func (*SigningValidator) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{31} + return fileDescriptor_types_d8da2202f45d32c0, []int{32} } func (m *SigningValidator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2785,7 +2841,7 @@ func (m *PubKey) Reset() { *m = PubKey{} } func (m *PubKey) String() string { return proto.CompactTextString(m) } func (*PubKey) ProtoMessage() {} func (*PubKey) Descriptor() ([]byte, []int) { - return fileDescriptor_types_2c69c6b96b429b1c, []int{32} + return fileDescriptor_types_d8da2202f45d32c0, []int{33} } func (m *PubKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2843,7 +2899,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_types_2c69c6b96b429b1c, []int{33} + return fileDescriptor_types_d8da2202f45d32c0, []int{34} } func (m *Evidence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2966,6 +3022,8 @@ func init() { golang_proto.RegisterType((*TxSize)(nil), "types.TxSize") proto.RegisterType((*BlockGossip)(nil), "types.BlockGossip") golang_proto.RegisterType((*BlockGossip)(nil), "types.BlockGossip") + proto.RegisterType((*LastCommitInfo)(nil), "types.LastCommitInfo") + golang_proto.RegisterType((*LastCommitInfo)(nil), "types.LastCommitInfo") proto.RegisterType((*Header)(nil), "types.Header") golang_proto.RegisterType((*Header)(nil), "types.Header") proto.RegisterType((*Validator)(nil), "types.Validator") @@ -3487,14 +3545,9 @@ func (this *RequestBeginBlock) Equal(that interface{}) bool { if !this.Header.Equal(&that1.Header) { return false } - if len(this.Validators) != len(that1.Validators) { + if !this.LastCommitInfo.Equal(&that1.LastCommitInfo) { return false } - for i := range this.Validators { - if !this.Validators[i].Equal(&that1.Validators[i]) { - return false - } - } if len(this.ByzantineValidators) != len(that1.ByzantineValidators) { return false } @@ -4489,6 +4542,41 @@ func (this *BlockGossip) Equal(that interface{}) bool { } return true } +func (this *LastCommitInfo) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*LastCommitInfo) + if !ok { + that2, ok := that.(LastCommitInfo) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.CommitRound != that1.CommitRound { + return false + } + if len(this.Validators) != len(that1.Validators) { + return false + } + for i := range this.Validators { + if !this.Validators[i].Equal(&that1.Validators[i]) { + return false + } + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} func (this *Header) Equal(that interface{}) bool { if that == nil { return this == nil @@ -5507,18 +5595,14 @@ func (m *RequestBeginBlock) MarshalTo(dAtA []byte) (int, error) { return 0, err } i += n15 - if len(m.Validators) > 0 { - for _, msg := range m.Validators { - dAtA[i] = 0x1a - i++ - i = encodeVarintTypes(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + dAtA[i] = 0x1a + i++ + i = encodeVarintTypes(dAtA, i, uint64(m.LastCommitInfo.Size())) + n16, err := m.LastCommitInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n16 if len(m.ByzantineValidators) > 0 { for _, msg := range m.ByzantineValidators { dAtA[i] = 0x22 @@ -5654,11 +5738,11 @@ func (m *Response) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Value != nil { - nn16, err := m.Value.MarshalTo(dAtA[i:]) + nn17, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn16 + i += nn17 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -5672,11 +5756,11 @@ func (m *Response_Exception) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.Exception.Size())) - n17, err := m.Exception.MarshalTo(dAtA[i:]) + n18, err := m.Exception.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n18 } return i, nil } @@ -5686,11 +5770,11 @@ func (m *Response_Echo) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Echo.Size())) - n18, err := m.Echo.MarshalTo(dAtA[i:]) + n19, err := m.Echo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n19 } return i, nil } @@ -5700,11 +5784,11 @@ func (m *Response_Flush) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Flush.Size())) - n19, err := m.Flush.MarshalTo(dAtA[i:]) + n20, err := m.Flush.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n20 } return i, nil } @@ -5714,11 +5798,11 @@ func (m *Response_Info) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Info.Size())) - n20, err := m.Info.MarshalTo(dAtA[i:]) + n21, err := m.Info.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n21 } return i, nil } @@ -5728,11 +5812,11 @@ func (m *Response_SetOption) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintTypes(dAtA, i, uint64(m.SetOption.Size())) - n21, err := m.SetOption.MarshalTo(dAtA[i:]) + n22, err := m.SetOption.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n22 } return i, nil } @@ -5742,11 +5826,11 @@ func (m *Response_InitChain) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintTypes(dAtA, i, uint64(m.InitChain.Size())) - n22, err := m.InitChain.MarshalTo(dAtA[i:]) + n23, err := m.InitChain.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n23 } return i, nil } @@ -5756,11 +5840,11 @@ func (m *Response_Query) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Query.Size())) - n23, err := m.Query.MarshalTo(dAtA[i:]) + n24, err := m.Query.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n24 } return i, nil } @@ -5770,11 +5854,11 @@ func (m *Response_BeginBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintTypes(dAtA, i, uint64(m.BeginBlock.Size())) - n24, err := m.BeginBlock.MarshalTo(dAtA[i:]) + n25, err := m.BeginBlock.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n25 } return i, nil } @@ -5784,11 +5868,11 @@ func (m *Response_CheckTx) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintTypes(dAtA, i, uint64(m.CheckTx.Size())) - n25, err := m.CheckTx.MarshalTo(dAtA[i:]) + n26, err := m.CheckTx.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n26 } return i, nil } @@ -5798,11 +5882,11 @@ func (m *Response_DeliverTx) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintTypes(dAtA, i, uint64(m.DeliverTx.Size())) - n26, err := m.DeliverTx.MarshalTo(dAtA[i:]) + n27, err := m.DeliverTx.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n27 } return i, nil } @@ -5812,11 +5896,11 @@ func (m *Response_EndBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintTypes(dAtA, i, uint64(m.EndBlock.Size())) - n27, err := m.EndBlock.MarshalTo(dAtA[i:]) + n28, err := m.EndBlock.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n28 } return i, nil } @@ -5826,11 +5910,11 @@ func (m *Response_Commit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x62 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Commit.Size())) - n28, err := m.Commit.MarshalTo(dAtA[i:]) + n29, err := m.Commit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n29 } return i, nil } @@ -6010,11 +6094,11 @@ func (m *ResponseInitChain) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.ConsensusParams.Size())) - n29, err := m.ConsensusParams.MarshalTo(dAtA[i:]) + n30, err := m.ConsensusParams.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n30 } if len(m.Validators) > 0 { for _, msg := range m.Validators { @@ -6296,11 +6380,11 @@ func (m *ResponseEndBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.ConsensusParamUpdates.Size())) - n30, err := m.ConsensusParamUpdates.MarshalTo(dAtA[i:]) + n31, err := m.ConsensusParamUpdates.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n31 } if len(m.Tags) > 0 { for _, msg := range m.Tags { @@ -6366,31 +6450,31 @@ func (m *ConsensusParams) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.BlockSize.Size())) - n31, err := m.BlockSize.MarshalTo(dAtA[i:]) + n32, err := m.BlockSize.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n32 } if m.TxSize != nil { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.TxSize.Size())) - n32, err := m.TxSize.MarshalTo(dAtA[i:]) + n33, err := m.TxSize.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n33 } if m.BlockGossip != nil { dAtA[i] = 0x1a i++ i = encodeVarintTypes(dAtA, i, uint64(m.BlockGossip.Size())) - n33, err := m.BlockGossip.MarshalTo(dAtA[i:]) + n34, err := m.BlockGossip.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n34 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -6491,6 +6575,44 @@ func (m *BlockGossip) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *LastCommitInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LastCommitInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.CommitRound != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintTypes(dAtA, i, uint64(m.CommitRound)) + } + if len(m.Validators) > 0 { + for _, msg := range m.Validators { + dAtA[i] = 0x12 + i++ + i = encodeVarintTypes(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *Header) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6520,11 +6642,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintTypes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.Time))) - n34, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) + n35, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n35 if m.NumTxs != 0 { dAtA[i] = 0x20 i++ @@ -6556,11 +6678,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Proposer.Size())) - n35, err := m.Proposer.MarshalTo(dAtA[i:]) + n36, err := m.Proposer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n36 if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -6591,11 +6713,11 @@ func (m *Validator) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.PubKey.Size())) - n36, err := m.PubKey.MarshalTo(dAtA[i:]) + n37, err := m.PubKey.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n37 if m.Power != 0 { dAtA[i] = 0x18 i++ @@ -6625,11 +6747,11 @@ func (m *SigningValidator) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.Validator.Size())) - n37, err := m.Validator.MarshalTo(dAtA[i:]) + n38, err := m.Validator.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n38 if m.SignedLastBlock { dAtA[i] = 0x10 i++ @@ -6703,11 +6825,11 @@ func (m *Evidence) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Validator.Size())) - n38, err := m.Validator.MarshalTo(dAtA[i:]) + n39, err := m.Validator.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n39 if m.Height != 0 { dAtA[i] = 0x18 i++ @@ -6716,11 +6838,11 @@ func (m *Evidence) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintTypes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.Time))) - n39, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) + n40, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n40 if m.TotalVotingPower != 0 { dAtA[i] = 0x28 i++ @@ -6920,20 +7042,14 @@ func NewPopulatedRequestBeginBlock(r randyTypes, easy bool) *RequestBeginBlock { } v7 := NewPopulatedHeader(r, easy) this.Header = *v7 + v8 := NewPopulatedLastCommitInfo(r, easy) + this.LastCommitInfo = *v8 if r.Intn(10) != 0 { - v8 := r.Intn(5) - this.Validators = make([]SigningValidator, v8) - for i := 0; i < v8; i++ { - v9 := NewPopulatedSigningValidator(r, easy) - this.Validators[i] = *v9 - } - } - if r.Intn(10) != 0 { - v10 := r.Intn(5) - this.ByzantineValidators = make([]Evidence, v10) - for i := 0; i < v10; i++ { - v11 := NewPopulatedEvidence(r, easy) - this.ByzantineValidators[i] = *v11 + v9 := r.Intn(5) + this.ByzantineValidators = make([]Evidence, v9) + for i := 0; i < v9; i++ { + v10 := NewPopulatedEvidence(r, easy) + this.ByzantineValidators[i] = *v10 } } if !easy && r.Intn(10) != 0 { @@ -6944,9 +7060,9 @@ func NewPopulatedRequestBeginBlock(r randyTypes, easy bool) *RequestBeginBlock { func NewPopulatedRequestCheckTx(r randyTypes, easy bool) *RequestCheckTx { this := &RequestCheckTx{} - v12 := r.Intn(100) - this.Tx = make([]byte, v12) - for i := 0; i < v12; i++ { + v11 := r.Intn(100) + this.Tx = make([]byte, v11) + for i := 0; i < v11; i++ { this.Tx[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { @@ -6957,9 +7073,9 @@ func NewPopulatedRequestCheckTx(r randyTypes, easy bool) *RequestCheckTx { func NewPopulatedRequestDeliverTx(r randyTypes, easy bool) *RequestDeliverTx { this := &RequestDeliverTx{} - v13 := r.Intn(100) - this.Tx = make([]byte, v13) - for i := 0; i < v13; i++ { + v12 := r.Intn(100) + this.Tx = make([]byte, v12) + for i := 0; i < v12; i++ { this.Tx[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { @@ -7117,9 +7233,9 @@ func NewPopulatedResponseInfo(r randyTypes, easy bool) *ResponseInfo { if r.Intn(2) == 0 { this.LastBlockHeight *= -1 } - v14 := r.Intn(100) - this.LastBlockAppHash = make([]byte, v14) - for i := 0; i < v14; i++ { + v13 := r.Intn(100) + this.LastBlockAppHash = make([]byte, v13) + for i := 0; i < v13; i++ { this.LastBlockAppHash[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { @@ -7145,11 +7261,11 @@ func NewPopulatedResponseInitChain(r randyTypes, easy bool) *ResponseInitChain { this.ConsensusParams = NewPopulatedConsensusParams(r, easy) } if r.Intn(10) != 0 { - v15 := r.Intn(5) - this.Validators = make([]Validator, v15) - for i := 0; i < v15; i++ { - v16 := NewPopulatedValidator(r, easy) - this.Validators[i] = *v16 + v14 := r.Intn(5) + this.Validators = make([]Validator, v14) + for i := 0; i < v14; i++ { + v15 := NewPopulatedValidator(r, easy) + this.Validators[i] = *v15 } } if !easy && r.Intn(10) != 0 { @@ -7167,19 +7283,19 @@ func NewPopulatedResponseQuery(r randyTypes, easy bool) *ResponseQuery { if r.Intn(2) == 0 { this.Index *= -1 } + v16 := r.Intn(100) + this.Key = make([]byte, v16) + for i := 0; i < v16; i++ { + this.Key[i] = byte(r.Intn(256)) + } v17 := r.Intn(100) - this.Key = make([]byte, v17) + this.Value = make([]byte, v17) for i := 0; i < v17; i++ { - this.Key[i] = byte(r.Intn(256)) + this.Value[i] = byte(r.Intn(256)) } v18 := r.Intn(100) - this.Value = make([]byte, v18) + this.Proof = make([]byte, v18) for i := 0; i < v18; i++ { - this.Value[i] = byte(r.Intn(256)) - } - v19 := r.Intn(100) - this.Proof = make([]byte, v19) - for i := 0; i < v19; i++ { this.Proof[i] = byte(r.Intn(256)) } this.Height = int64(r.Int63()) @@ -7195,11 +7311,11 @@ func NewPopulatedResponseQuery(r randyTypes, easy bool) *ResponseQuery { func NewPopulatedResponseBeginBlock(r randyTypes, easy bool) *ResponseBeginBlock { this := &ResponseBeginBlock{} if r.Intn(10) != 0 { - v20 := r.Intn(5) - this.Tags = make([]common.KVPair, v20) - for i := 0; i < v20; i++ { - v21 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v21 + v19 := r.Intn(5) + this.Tags = make([]common.KVPair, v19) + for i := 0; i < v19; i++ { + v20 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v20 } } if !easy && r.Intn(10) != 0 { @@ -7211,9 +7327,9 @@ func NewPopulatedResponseBeginBlock(r randyTypes, easy bool) *ResponseBeginBlock func NewPopulatedResponseCheckTx(r randyTypes, easy bool) *ResponseCheckTx { this := &ResponseCheckTx{} this.Code = uint32(r.Uint32()) - v22 := r.Intn(100) - this.Data = make([]byte, v22) - for i := 0; i < v22; i++ { + v21 := r.Intn(100) + this.Data = make([]byte, v21) + for i := 0; i < v21; i++ { this.Data[i] = byte(r.Intn(256)) } this.Log = string(randStringTypes(r)) @@ -7227,11 +7343,11 @@ func NewPopulatedResponseCheckTx(r randyTypes, easy bool) *ResponseCheckTx { this.GasUsed *= -1 } if r.Intn(10) != 0 { - v23 := r.Intn(5) - this.Tags = make([]common.KVPair, v23) - for i := 0; i < v23; i++ { - v24 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v24 + v22 := r.Intn(5) + this.Tags = make([]common.KVPair, v22) + for i := 0; i < v22; i++ { + v23 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v23 } } if !easy && r.Intn(10) != 0 { @@ -7243,9 +7359,9 @@ func NewPopulatedResponseCheckTx(r randyTypes, easy bool) *ResponseCheckTx { func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { this := &ResponseDeliverTx{} this.Code = uint32(r.Uint32()) - v25 := r.Intn(100) - this.Data = make([]byte, v25) - for i := 0; i < v25; i++ { + v24 := r.Intn(100) + this.Data = make([]byte, v24) + for i := 0; i < v24; i++ { this.Data[i] = byte(r.Intn(256)) } this.Log = string(randStringTypes(r)) @@ -7259,11 +7375,11 @@ func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { this.GasUsed *= -1 } if r.Intn(10) != 0 { - v26 := r.Intn(5) - this.Tags = make([]common.KVPair, v26) - for i := 0; i < v26; i++ { - v27 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v27 + v25 := r.Intn(5) + this.Tags = make([]common.KVPair, v25) + for i := 0; i < v25; i++ { + v26 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v26 } } if !easy && r.Intn(10) != 0 { @@ -7275,22 +7391,22 @@ func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { func NewPopulatedResponseEndBlock(r randyTypes, easy bool) *ResponseEndBlock { this := &ResponseEndBlock{} if r.Intn(10) != 0 { - v28 := r.Intn(5) - this.ValidatorUpdates = make([]Validator, v28) - for i := 0; i < v28; i++ { - v29 := NewPopulatedValidator(r, easy) - this.ValidatorUpdates[i] = *v29 + v27 := r.Intn(5) + this.ValidatorUpdates = make([]Validator, v27) + for i := 0; i < v27; i++ { + v28 := NewPopulatedValidator(r, easy) + this.ValidatorUpdates[i] = *v28 } } if r.Intn(10) != 0 { this.ConsensusParamUpdates = NewPopulatedConsensusParams(r, easy) } if r.Intn(10) != 0 { - v30 := r.Intn(5) - this.Tags = make([]common.KVPair, v30) - for i := 0; i < v30; i++ { - v31 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v31 + v29 := r.Intn(5) + this.Tags = make([]common.KVPair, v29) + for i := 0; i < v29; i++ { + v30 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v30 } } if !easy && r.Intn(10) != 0 { @@ -7301,9 +7417,9 @@ func NewPopulatedResponseEndBlock(r randyTypes, easy bool) *ResponseEndBlock { func NewPopulatedResponseCommit(r randyTypes, easy bool) *ResponseCommit { this := &ResponseCommit{} - v32 := r.Intn(100) - this.Data = make([]byte, v32) - for i := 0; i < v32; i++ { + v31 := r.Intn(100) + this.Data = make([]byte, v31) + for i := 0; i < v31; i++ { this.Data[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { @@ -7377,6 +7493,26 @@ func NewPopulatedBlockGossip(r randyTypes, easy bool) *BlockGossip { return this } +func NewPopulatedLastCommitInfo(r randyTypes, easy bool) *LastCommitInfo { + this := &LastCommitInfo{} + this.CommitRound = int32(r.Int31()) + if r.Intn(2) == 0 { + this.CommitRound *= -1 + } + if r.Intn(10) != 0 { + v32 := r.Intn(5) + this.Validators = make([]SigningValidator, v32) + for i := 0; i < v32; i++ { + v33 := NewPopulatedSigningValidator(r, easy) + this.Validators[i] = *v33 + } + } + if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) + } + return this +} + func NewPopulatedHeader(r randyTypes, easy bool) *Header { this := &Header{} this.ChainID = string(randStringTypes(r)) @@ -7384,8 +7520,8 @@ func NewPopulatedHeader(r randyTypes, easy bool) *Header { if r.Intn(2) == 0 { this.Height *= -1 } - v33 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) - this.Time = *v33 + v34 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) + this.Time = *v34 this.NumTxs = int32(r.Int31()) if r.Intn(2) == 0 { this.NumTxs *= -1 @@ -7394,23 +7530,23 @@ func NewPopulatedHeader(r randyTypes, easy bool) *Header { if r.Intn(2) == 0 { this.TotalTxs *= -1 } - v34 := r.Intn(100) - this.LastBlockHash = make([]byte, v34) - for i := 0; i < v34; i++ { - this.LastBlockHash[i] = byte(r.Intn(256)) - } v35 := r.Intn(100) - this.ValidatorsHash = make([]byte, v35) + this.LastBlockHash = make([]byte, v35) for i := 0; i < v35; i++ { - this.ValidatorsHash[i] = byte(r.Intn(256)) + this.LastBlockHash[i] = byte(r.Intn(256)) } v36 := r.Intn(100) - this.AppHash = make([]byte, v36) + this.ValidatorsHash = make([]byte, v36) for i := 0; i < v36; i++ { + this.ValidatorsHash[i] = byte(r.Intn(256)) + } + v37 := r.Intn(100) + this.AppHash = make([]byte, v37) + for i := 0; i < v37; i++ { this.AppHash[i] = byte(r.Intn(256)) } - v37 := NewPopulatedValidator(r, easy) - this.Proposer = *v37 + v38 := NewPopulatedValidator(r, easy) + this.Proposer = *v38 if !easy && r.Intn(10) != 0 { this.XXX_unrecognized = randUnrecognizedTypes(r, 10) } @@ -7419,13 +7555,13 @@ func NewPopulatedHeader(r randyTypes, easy bool) *Header { func NewPopulatedValidator(r randyTypes, easy bool) *Validator { this := &Validator{} - v38 := r.Intn(100) - this.Address = make([]byte, v38) - for i := 0; i < v38; i++ { + v39 := r.Intn(100) + this.Address = make([]byte, v39) + for i := 0; i < v39; i++ { this.Address[i] = byte(r.Intn(256)) } - v39 := NewPopulatedPubKey(r, easy) - this.PubKey = *v39 + v40 := NewPopulatedPubKey(r, easy) + this.PubKey = *v40 this.Power = int64(r.Int63()) if r.Intn(2) == 0 { this.Power *= -1 @@ -7438,8 +7574,8 @@ func NewPopulatedValidator(r randyTypes, easy bool) *Validator { func NewPopulatedSigningValidator(r randyTypes, easy bool) *SigningValidator { this := &SigningValidator{} - v40 := NewPopulatedValidator(r, easy) - this.Validator = *v40 + v41 := NewPopulatedValidator(r, easy) + this.Validator = *v41 this.SignedLastBlock = bool(bool(r.Intn(2) == 0)) if !easy && r.Intn(10) != 0 { this.XXX_unrecognized = randUnrecognizedTypes(r, 3) @@ -7450,9 +7586,9 @@ func NewPopulatedSigningValidator(r randyTypes, easy bool) *SigningValidator { func NewPopulatedPubKey(r randyTypes, easy bool) *PubKey { this := &PubKey{} this.Type = string(randStringTypes(r)) - v41 := r.Intn(100) - this.Data = make([]byte, v41) - for i := 0; i < v41; i++ { + v42 := r.Intn(100) + this.Data = make([]byte, v42) + for i := 0; i < v42; i++ { this.Data[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { @@ -7464,14 +7600,14 @@ func NewPopulatedPubKey(r randyTypes, easy bool) *PubKey { func NewPopulatedEvidence(r randyTypes, easy bool) *Evidence { this := &Evidence{} this.Type = string(randStringTypes(r)) - v42 := NewPopulatedValidator(r, easy) - this.Validator = *v42 + v43 := NewPopulatedValidator(r, easy) + this.Validator = *v43 this.Height = int64(r.Int63()) if r.Intn(2) == 0 { this.Height *= -1 } - v43 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) - this.Time = *v43 + v44 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) + this.Time = *v44 this.TotalVotingPower = int64(r.Int63()) if r.Intn(2) == 0 { this.TotalVotingPower *= -1 @@ -7501,9 +7637,9 @@ func randUTF8RuneTypes(r randyTypes) rune { return rune(ru + 61) } func randStringTypes(r randyTypes) string { - v44 := r.Intn(100) - tmps := make([]rune, v44) - for i := 0; i < v44; i++ { + v45 := r.Intn(100) + tmps := make([]rune, v45) + for i := 0; i < v45; i++ { tmps[i] = randUTF8RuneTypes(r) } return string(tmps) @@ -7525,11 +7661,11 @@ func randFieldTypes(dAtA []byte, r randyTypes, fieldNumber int, wire int) []byte switch wire { case 0: dAtA = encodeVarintPopulateTypes(dAtA, uint64(key)) - v45 := r.Int63() + v46 := r.Int63() if r.Intn(2) == 0 { - v45 *= -1 + v46 *= -1 } - dAtA = encodeVarintPopulateTypes(dAtA, uint64(v45)) + dAtA = encodeVarintPopulateTypes(dAtA, uint64(v46)) case 1: dAtA = encodeVarintPopulateTypes(dAtA, uint64(key)) dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256))) @@ -7778,12 +7914,8 @@ func (m *RequestBeginBlock) Size() (n int) { } l = m.Header.Size() n += 1 + l + sovTypes(uint64(l)) - if len(m.Validators) > 0 { - for _, e := range m.Validators { - l = e.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() @@ -8290,6 +8422,24 @@ func (m *BlockGossip) Size() (n int) { return n } +func (m *LastCommitInfo) Size() (n int) { + var l int + _ = l + if m.CommitRound != 0 { + n += 1 + sovTypes(uint64(m.CommitRound)) + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *Header) Size() (n int) { var l int _ = l @@ -9583,7 +9733,7 @@ func (m *RequestBeginBlock) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCommitInfo", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9607,8 +9757,7 @@ func (m *RequestBeginBlock) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Validators = append(m.Validators, SigningValidator{}) - if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCommitInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -12440,6 +12589,107 @@ func (m *BlockGossip) Unmarshal(dAtA []byte) error { } 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 CommitRound", wireType) + } + m.CommitRound = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CommitRound |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 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 > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, SigningValidator{}) + if err := m.Validators[len(m.Validators)-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 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Header) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -13356,131 +13606,134 @@ var ( ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_2c69c6b96b429b1c) } +func init() { proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_d8da2202f45d32c0) } func init() { - golang_proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_2c69c6b96b429b1c) -} - -var fileDescriptor_types_2c69c6b96b429b1c = []byte{ - // 1911 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4b, 0x73, 0x24, 0x47, - 0x11, 0x56, 0xcf, 0xbb, 0x73, 0x24, 0x8d, 0xb6, 0xb4, 0x2b, 0xcd, 0x8e, 0x41, 0xda, 0xe8, 0x20, - 0xd6, 0x5a, 0x2c, 0x8f, 0x40, 0x66, 0x1d, 0x5a, 0x1b, 0x1c, 0x68, 0xe4, 0xc5, 0xa3, 0x30, 0x0f, - 0xd1, 0xbb, 0x5e, 0x22, 0xb8, 0x4c, 0xd4, 0x4c, 0x97, 0x7a, 0x3a, 0x76, 0xfa, 0xe1, 0xae, 0x1a, - 0x79, 0xb4, 0x3f, 0x81, 0x70, 0x10, 0xdc, 0x38, 0x73, 0xe3, 0x0f, 0x10, 0xc1, 0x91, 0x13, 0xe1, - 0x23, 0x07, 0x08, 0xb8, 0xb0, 0x80, 0x7c, 0xe3, 0x17, 0x70, 0x24, 0xb2, 0xaa, 0xdf, 0xea, 0xd9, - 0x90, 0x97, 0x1b, 0x17, 0xa9, 0xb2, 0x33, 0xb3, 0xaa, 0x32, 0x27, 0xf3, 0xcb, 0xcc, 0x82, 0x2d, - 0x3a, 0x9e, 0x38, 0x07, 0xe2, 0x32, 0x60, 0x5c, 0xfd, 0xed, 0x07, 0xa1, 0x2f, 0x7c, 0x52, 0x97, - 0x44, 0xef, 0x6d, 0xdb, 0x11, 0xd3, 0xf9, 0xb8, 0x3f, 0xf1, 0xdd, 0x03, 0xdb, 0xb7, 0xfd, 0x03, - 0xc9, 0x1d, 0xcf, 0xcf, 0x25, 0x25, 0x09, 0xb9, 0x52, 0x5a, 0xbd, 0x5d, 0xdb, 0xf7, 0xed, 0x19, - 0x4b, 0xa5, 0x84, 0xe3, 0x32, 0x2e, 0xa8, 0x1b, 0x44, 0x02, 0x47, 0x99, 0xfd, 0x04, 0xf3, 0x2c, - 0x16, 0xba, 0x8e, 0x27, 0xb2, 0xcb, 0x99, 0x33, 0xe6, 0x07, 0x13, 0xdf, 0x75, 0x7d, 0x2f, 0x7b, - 0x21, 0xe3, 0x8f, 0x35, 0x68, 0x9a, 0xec, 0xd3, 0x39, 0xe3, 0x82, 0xec, 0x41, 0x8d, 0x4d, 0xa6, - 0x7e, 0xb7, 0x72, 0x4f, 0xdb, 0x6b, 0x1f, 0x92, 0xbe, 0x92, 0x8b, 0xb8, 0x8f, 0x27, 0x53, 0x7f, - 0xb8, 0x62, 0x4a, 0x09, 0xf2, 0x16, 0xd4, 0xcf, 0x67, 0x73, 0x3e, 0xed, 0x56, 0xa5, 0xe8, 0x66, - 0x5e, 0xf4, 0x07, 0xc8, 0x1a, 0xae, 0x98, 0x4a, 0x06, 0xb7, 0x75, 0xbc, 0x73, 0xbf, 0x5b, 0x2b, - 0xdb, 0xf6, 0xd4, 0x3b, 0x97, 0xdb, 0xa2, 0x04, 0x39, 0x02, 0xe0, 0x4c, 0x8c, 0xfc, 0x40, 0x38, - 0xbe, 0xd7, 0xad, 0x4b, 0xf9, 0xed, 0xbc, 0xfc, 0x13, 0x26, 0x7e, 0x22, 0xd9, 0xc3, 0x15, 0x53, - 0xe7, 0x31, 0x81, 0x9a, 0x8e, 0xe7, 0x88, 0xd1, 0x64, 0x4a, 0x1d, 0xaf, 0xdb, 0x28, 0xd3, 0x3c, - 0xf5, 0x1c, 0x71, 0x82, 0x6c, 0xd4, 0x74, 0x62, 0x02, 0x4d, 0xf9, 0x74, 0xce, 0xc2, 0xcb, 0x6e, - 0xb3, 0xcc, 0x94, 0x9f, 0x22, 0x0b, 0x4d, 0x91, 0x32, 0xe4, 0x7d, 0x68, 0x8f, 0x99, 0xed, 0x78, - 0xa3, 0xf1, 0xcc, 0x9f, 0x3c, 0xef, 0xb6, 0xa4, 0x4a, 0x37, 0xaf, 0x32, 0x40, 0x81, 0x01, 0xf2, - 0x87, 0x2b, 0x26, 0x8c, 0x13, 0x8a, 0x1c, 0x42, 0x6b, 0x32, 0x65, 0x93, 0xe7, 0x23, 0xb1, 0xe8, - 0xea, 0x52, 0xf3, 0x4e, 0x5e, 0xf3, 0x04, 0xb9, 0x4f, 0x17, 0xc3, 0x15, 0xb3, 0x39, 0x51, 0x4b, - 0xf2, 0x10, 0x74, 0xe6, 0x59, 0xd1, 0x71, 0x6d, 0xa9, 0xb4, 0x55, 0xf8, 0x5d, 0x3c, 0x2b, 0x3e, - 0xac, 0xc5, 0xa2, 0x35, 0xe9, 0x43, 0x03, 0x7f, 0x6b, 0x47, 0x74, 0x57, 0xa5, 0xce, 0xed, 0xc2, - 0x41, 0x92, 0x37, 0x5c, 0x31, 0x23, 0x29, 0x74, 0x9f, 0xc5, 0x66, 0xce, 0x05, 0x0b, 0xf1, 0x72, - 0x9b, 0x65, 0xee, 0xfb, 0x50, 0xf1, 0xe5, 0xf5, 0x74, 0x2b, 0x26, 0x06, 0x4d, 0xa8, 0x5f, 0xd0, - 0xd9, 0x9c, 0x19, 0x6f, 0x42, 0x3b, 0x13, 0x29, 0xa4, 0x0b, 0x4d, 0x97, 0x71, 0x4e, 0x6d, 0xd6, - 0xd5, 0xee, 0x69, 0x7b, 0xba, 0x19, 0x93, 0xc6, 0x3a, 0xac, 0x66, 0xe3, 0x24, 0xa3, 0x88, 0xb1, - 0x80, 0x8a, 0x17, 0x2c, 0xe4, 0x18, 0x00, 0x91, 0x62, 0x44, 0x1a, 0xef, 0xc1, 0x46, 0x31, 0x08, - 0xc8, 0x06, 0x54, 0x9f, 0xb3, 0xcb, 0x48, 0x12, 0x97, 0xe4, 0x76, 0x74, 0x21, 0x19, 0xc5, 0xba, - 0x19, 0xdd, 0xee, 0x17, 0x95, 0x44, 0x39, 0x89, 0x03, 0x72, 0x04, 0x35, 0x4c, 0x24, 0xa9, 0xdd, - 0x3e, 0xec, 0xf5, 0x55, 0x96, 0xf5, 0xe3, 0x2c, 0xeb, 0x3f, 0x8d, 0xb3, 0x6c, 0xd0, 0xfa, 0xe2, - 0xe5, 0xee, 0xca, 0xaf, 0xfe, 0xb1, 0xab, 0x99, 0x52, 0x83, 0xdc, 0xc5, 0x9f, 0x92, 0x3a, 0xde, - 0xc8, 0xb1, 0xa2, 0x73, 0x9a, 0x92, 0x3e, 0xb5, 0xc8, 0x31, 0x6c, 0x4c, 0x7c, 0x8f, 0x33, 0x8f, - 0xcf, 0xf9, 0x28, 0xa0, 0x21, 0x75, 0x79, 0x94, 0x25, 0xf1, 0x0f, 0x77, 0x12, 0xb3, 0xcf, 0x24, - 0xd7, 0xec, 0x4c, 0xf2, 0x1f, 0xc8, 0xbb, 0x00, 0x17, 0x74, 0xe6, 0x58, 0x54, 0xf8, 0x21, 0xef, - 0xd6, 0xee, 0x55, 0xf7, 0xda, 0x87, 0x1b, 0x91, 0xf2, 0xb3, 0x98, 0x31, 0xa8, 0xe1, 0x9d, 0xcc, - 0x8c, 0x24, 0xb9, 0x0f, 0x1d, 0x1a, 0x04, 0x23, 0x2e, 0xa8, 0x60, 0xa3, 0xf1, 0xa5, 0x60, 0x5c, - 0xe6, 0xd0, 0xaa, 0xb9, 0x46, 0x83, 0xe0, 0x09, 0x7e, 0x1d, 0xe0, 0x47, 0xc3, 0x4a, 0x7e, 0x01, - 0x19, 0xde, 0x84, 0x40, 0xcd, 0xa2, 0x82, 0x4a, 0x3f, 0xac, 0x9a, 0x72, 0x8d, 0xdf, 0x02, 0x2a, - 0xa6, 0x91, 0x75, 0x72, 0x4d, 0xb6, 0xa0, 0x31, 0x65, 0x8e, 0x3d, 0x15, 0xd2, 0xa0, 0xaa, 0x19, - 0x51, 0xe8, 0xf2, 0x20, 0xf4, 0x2f, 0x98, 0xcc, 0xf0, 0x96, 0xa9, 0x08, 0xe3, 0xef, 0x1a, 0xdc, - 0xba, 0x96, 0x12, 0xb8, 0xef, 0x94, 0xf2, 0x69, 0x7c, 0x16, 0xae, 0xc9, 0x5b, 0xb8, 0x2f, 0xb5, - 0x58, 0x18, 0x21, 0xcf, 0x5a, 0x64, 0xeb, 0x50, 0x7e, 0x8c, 0x0c, 0x8d, 0x44, 0xc8, 0xf7, 0x72, - 0xce, 0xa9, 0x4a, 0xe7, 0xc4, 0xa1, 0xfa, 0xc4, 0xb1, 0x3d, 0xc7, 0xb3, 0x5f, 0xe5, 0xa3, 0x21, - 0xdc, 0x1e, 0x5f, 0xbe, 0xa0, 0x9e, 0x70, 0x3c, 0x36, 0xba, 0xe6, 0xe5, 0x4e, 0xb4, 0xd1, 0xe3, - 0x0b, 0xc7, 0x62, 0xde, 0x84, 0x45, 0x1b, 0x6c, 0x26, 0x2a, 0xc9, 0xd6, 0xdc, 0xb8, 0x07, 0xeb, - 0xf9, 0xbc, 0x25, 0xeb, 0x50, 0x11, 0x8b, 0xc8, 0xb2, 0x8a, 0x58, 0x18, 0x46, 0x12, 0x73, 0x49, - 0xf2, 0x5c, 0x93, 0x79, 0x00, 0x9d, 0x42, 0x22, 0x67, 0xdc, 0xac, 0x65, 0xdd, 0x6c, 0x74, 0x60, - 0x2d, 0x97, 0xbf, 0xc6, 0xe7, 0x75, 0x68, 0x99, 0x8c, 0x07, 0x18, 0x3e, 0xe4, 0x08, 0x74, 0xb6, - 0x98, 0x30, 0x05, 0x9d, 0x5a, 0x01, 0x98, 0x94, 0xcc, 0xe3, 0x98, 0x8f, 0x29, 0x9c, 0x08, 0x93, - 0x07, 0x39, 0xd8, 0xdf, 0x2c, 0x2a, 0x65, 0x71, 0x7f, 0x3f, 0x8f, 0xfb, 0xb7, 0x0b, 0xb2, 0x05, - 0xe0, 0x7f, 0x90, 0x03, 0xfe, 0xe2, 0xc6, 0x39, 0xe4, 0x7f, 0x54, 0x82, 0xfc, 0xc5, 0xeb, 0x2f, - 0x81, 0xfe, 0x47, 0x25, 0xd0, 0xdf, 0xbd, 0x76, 0x56, 0x29, 0xf6, 0xef, 0xe7, 0xb1, 0xbf, 0x68, - 0x4e, 0x01, 0xfc, 0xbf, 0x5b, 0x06, 0xfe, 0x77, 0x0b, 0x3a, 0x4b, 0xd1, 0xff, 0x9d, 0x6b, 0xe8, - 0xbf, 0x55, 0x50, 0x2d, 0x81, 0xff, 0x47, 0x39, 0x5c, 0x86, 0x52, 0xdb, 0xca, 0x81, 0x99, 0xbc, - 0x7b, 0xbd, 0x72, 0x6c, 0x17, 0x7f, 0xda, 0xb2, 0xd2, 0x71, 0x50, 0x28, 0x1d, 0x77, 0x8a, 0xb7, - 0x2c, 0xd4, 0x8e, 0xb4, 0x02, 0x3c, 0xc0, 0x7c, 0x2f, 0x44, 0x1a, 0x62, 0x03, 0x0b, 0x43, 0x3f, - 0x8c, 0x20, 0x5a, 0x11, 0xc6, 0x1e, 0x22, 0x50, 0x1a, 0x5f, 0xaf, 0xa8, 0x16, 0x32, 0xe8, 0x33, - 0xd1, 0x65, 0xfc, 0x5a, 0x4b, 0x75, 0x65, 0xc1, 0xc8, 0xa2, 0x97, 0x1e, 0xa1, 0x57, 0xa6, 0x88, - 0x54, 0x72, 0x45, 0x84, 0x7c, 0x13, 0x6e, 0xcd, 0x28, 0x17, 0xca, 0x2f, 0xa3, 0x1c, 0x9c, 0x75, - 0x90, 0xa1, 0x1c, 0xa2, 0x70, 0xed, 0x6d, 0xd8, 0xcc, 0xc8, 0x22, 0xb4, 0x4a, 0xe8, 0xaa, 0xc9, - 0xe4, 0xdd, 0x48, 0xa4, 0x8f, 0x83, 0x60, 0x48, 0xf9, 0xd4, 0xf8, 0x51, 0x6a, 0x7f, 0x5a, 0xa0, - 0x08, 0xd4, 0x26, 0xbe, 0xa5, 0xcc, 0x5a, 0x33, 0xe5, 0x1a, 0x8b, 0xd6, 0xcc, 0xb7, 0xe5, 0xa9, - 0xba, 0x89, 0x4b, 0x94, 0x4a, 0x32, 0x45, 0x57, 0x29, 0x61, 0xfc, 0x52, 0x4b, 0xf7, 0x4b, 0x6b, - 0x56, 0x59, 0x79, 0xd1, 0xfe, 0x97, 0xf2, 0x52, 0xb9, 0x69, 0x79, 0x31, 0x7e, 0xa7, 0xa5, 0xbf, - 0x45, 0x52, 0x38, 0x5e, 0xcf, 0x38, 0x0c, 0x0b, 0xc7, 0xb3, 0xd8, 0x42, 0xa6, 0x7a, 0xd5, 0x54, - 0x44, 0x5c, 0xcd, 0x1b, 0xd2, 0xc1, 0xf9, 0x6a, 0xde, 0x94, 0xdf, 0x14, 0x11, 0x15, 0x1c, 0xff, - 0x5c, 0xe6, 0xe0, 0xaa, 0xa9, 0x88, 0x0c, 0x6e, 0xea, 0x39, 0xdc, 0x3c, 0x03, 0x72, 0x3d, 0x3b, - 0xc9, 0x7b, 0x50, 0x13, 0xd4, 0x46, 0xe7, 0xa1, 0xfd, 0xeb, 0x7d, 0xd5, 0x1b, 0xf7, 0x3f, 0x7e, - 0x76, 0x46, 0x9d, 0x70, 0xb0, 0x85, 0xd6, 0xff, 0xfb, 0xe5, 0xee, 0x3a, 0xca, 0xec, 0xfb, 0xae, - 0x23, 0x98, 0x1b, 0x88, 0x4b, 0x53, 0xea, 0x18, 0x7f, 0xd1, 0x10, 0xb5, 0x73, 0x59, 0x5b, 0xea, - 0x8b, 0x38, 0x34, 0x2b, 0x99, 0xc2, 0x7a, 0x33, 0xff, 0x7c, 0x1d, 0xc0, 0xa6, 0x7c, 0xf4, 0x19, - 0xf5, 0x04, 0xb3, 0x22, 0x27, 0xe9, 0x36, 0xe5, 0x3f, 0x93, 0x1f, 0xb0, 0xff, 0x40, 0xf6, 0x9c, - 0x33, 0x4b, 0x7a, 0xab, 0x6a, 0x36, 0x6d, 0xca, 0x3f, 0xe1, 0xcc, 0x4a, 0xec, 0x6a, 0xbe, 0x86, - 0x5d, 0x7f, 0xcd, 0x84, 0x5c, 0x5a, 0xb2, 0xfe, 0x1f, 0x2c, 0xfb, 0x52, 0xc3, 0x5a, 0x9c, 0x87, - 0x3d, 0x72, 0x02, 0xb7, 0x92, 0xf0, 0x1e, 0xcd, 0x03, 0x8b, 0x62, 0xc7, 0xa4, 0xbd, 0x32, 0x1f, - 0x36, 0x12, 0x85, 0x4f, 0x94, 0x3c, 0xf9, 0x31, 0x6c, 0x17, 0x12, 0x32, 0xd9, 0xaa, 0xf2, 0xca, - 0xbc, 0xbc, 0x93, 0xcf, 0xcb, 0x78, 0xbf, 0xd8, 0xca, 0xea, 0x6b, 0x58, 0xf9, 0x0d, 0x6c, 0x49, - 0xb2, 0x30, 0x5d, 0xf6, 0x3b, 0x19, 0xbf, 0xd1, 0xa0, 0x53, 0xb8, 0x0c, 0x39, 0x00, 0x50, 0x28, - 0xc7, 0x9d, 0x17, 0x71, 0x43, 0x1c, 0xfb, 0x40, 0x3a, 0xeb, 0x89, 0xf3, 0x82, 0x99, 0xfa, 0x38, - 0x5e, 0x92, 0xfb, 0xd0, 0x14, 0x0b, 0x25, 0x9d, 0x6f, 0xda, 0x9e, 0x2e, 0xa4, 0x68, 0x43, 0xc8, - 0xff, 0xe4, 0x21, 0xac, 0xaa, 0x8d, 0x6d, 0x9f, 0x73, 0x27, 0x88, 0x1a, 0x07, 0x92, 0xdd, 0xfa, - 0x23, 0xc9, 0x31, 0xdb, 0xe3, 0x94, 0x30, 0x7e, 0x0e, 0x7a, 0x72, 0x2c, 0x79, 0x03, 0x74, 0x97, - 0x2e, 0xa2, 0x8e, 0x16, 0xef, 0x56, 0x37, 0x5b, 0x2e, 0x5d, 0xc8, 0x66, 0x96, 0x6c, 0x43, 0x13, - 0x99, 0x62, 0xa1, 0xfc, 0x5d, 0x37, 0x1b, 0x2e, 0x5d, 0x3c, 0x5d, 0x24, 0x0c, 0x9b, 0xf2, 0xb8, - 0x5d, 0x75, 0xe9, 0xe2, 0x23, 0xca, 0x8d, 0x0f, 0xa0, 0xa1, 0x2e, 0x79, 0xa3, 0x8d, 0x51, 0xbf, - 0x92, 0xd3, 0xff, 0x3e, 0xb4, 0x33, 0xf7, 0x26, 0xdf, 0x86, 0x3b, 0xca, 0xc2, 0x80, 0x86, 0x42, - 0x7a, 0x24, 0xb7, 0x21, 0x91, 0xcc, 0x33, 0x1a, 0x0a, 0x3c, 0x52, 0x35, 0xe0, 0x7f, 0xab, 0x40, - 0x43, 0x35, 0xb7, 0xe4, 0x7e, 0x66, 0x92, 0x90, 0x15, 0x6c, 0xd0, 0xbe, 0x7a, 0xb9, 0xdb, 0x94, - 0x60, 0x7f, 0xfa, 0x61, 0x3a, 0x56, 0xa4, 0xe0, 0x56, 0xc9, 0xf5, 0xde, 0xf1, 0x0c, 0x53, 0xfd, - 0xca, 0x33, 0xcc, 0x36, 0x34, 0xbd, 0xb9, 0x2b, 0x1d, 0x57, 0x53, 0x8e, 0xf3, 0xe6, 0x2e, 0x3a, - 0xee, 0x0d, 0xd0, 0x85, 0x2f, 0xe8, 0x4c, 0xb2, 0x54, 0x82, 0xb6, 0xe4, 0x07, 0x64, 0xde, 0x87, - 0x4e, 0xb6, 0x7e, 0x62, 0x3d, 0x54, 0x70, 0xbd, 0x96, 0x56, 0x4f, 0xec, 0xe9, 0xdf, 0x84, 0x4e, - 0x5a, 0x3a, 0x94, 0x9c, 0x82, 0xf0, 0xf5, 0xf4, 0xb3, 0x14, 0xbc, 0x0b, 0xad, 0xa4, 0xb2, 0x2a, - 0x38, 0x6f, 0x52, 0x55, 0x50, 0x71, 0x60, 0x0e, 0x42, 0x3f, 0xf0, 0x39, 0x0b, 0xa3, 0x96, 0x69, - 0x59, 0x5a, 0x26, 0x72, 0x86, 0x03, 0x7a, 0xc2, 0xc4, 0x36, 0x80, 0x5a, 0x56, 0xc8, 0x38, 0x8f, - 0x3a, 0xee, 0x98, 0x24, 0xfb, 0xd0, 0x0c, 0xe6, 0xe3, 0x11, 0x56, 0x9b, 0x7c, 0xf8, 0x9e, 0xcd, - 0xc7, 0x1f, 0xb3, 0xcb, 0x78, 0xe6, 0x08, 0x24, 0x25, 0xeb, 0x8d, 0xff, 0x19, 0x0b, 0xa3, 0x40, - 0x52, 0x84, 0x21, 0x60, 0xa3, 0x38, 0x70, 0x90, 0xef, 0x80, 0x9e, 0xd8, 0x57, 0x48, 0xa3, 0xe2, - 0x9d, 0x53, 0x41, 0x6c, 0x4a, 0xb8, 0x63, 0x7b, 0xcc, 0x1a, 0xa5, 0xbe, 0x95, 0xf7, 0x6a, 0x99, - 0x1d, 0xc5, 0xf8, 0x61, 0xec, 0x5c, 0xe3, 0x5b, 0xd0, 0x50, 0x77, 0xc4, 0xdc, 0xc6, 0x9d, 0xe3, - 0xc6, 0x07, 0xd7, 0xa5, 0xf9, 0xfe, 0x67, 0x0d, 0x5a, 0xf1, 0x40, 0x53, 0xaa, 0x94, 0xbb, 0x74, - 0xe5, 0xa6, 0x97, 0x5e, 0x36, 0x0d, 0xc6, 0x11, 0x59, 0xfb, 0xca, 0x11, 0xb9, 0x0f, 0x44, 0x05, - 0xde, 0x85, 0x2f, 0x1c, 0xcf, 0x1e, 0x29, 0x9f, 0xab, 0x08, 0xdc, 0x90, 0x9c, 0x67, 0x92, 0x71, - 0x86, 0xdf, 0x0f, 0x3f, 0xaf, 0x43, 0xe7, 0x78, 0x70, 0x72, 0x7a, 0x1c, 0x04, 0x33, 0x67, 0x42, - 0x65, 0xb7, 0x75, 0x00, 0x35, 0xd9, 0x4f, 0x96, 0xbc, 0x5d, 0xf5, 0xca, 0x06, 0x1b, 0x72, 0x08, - 0x75, 0xd9, 0x56, 0x92, 0xb2, 0x27, 0xac, 0x5e, 0xe9, 0x7c, 0x83, 0x87, 0xa8, 0xc6, 0xf3, 0xfa, - 0x4b, 0x56, 0xaf, 0x6c, 0xc8, 0x21, 0x1f, 0x80, 0x9e, 0x36, 0x84, 0xcb, 0xde, 0xb3, 0x7a, 0x4b, - 0xc7, 0x1d, 0xd4, 0x4f, 0xab, 0xf1, 0xb2, 0x67, 0x99, 0xde, 0xd2, 0xb9, 0x80, 0x1c, 0x41, 0x33, - 0xee, 0x52, 0xca, 0x5f, 0x9c, 0x7a, 0x4b, 0x46, 0x11, 0x74, 0x8f, 0xea, 0xf4, 0xca, 0x9e, 0xc5, - 0x7a, 0xa5, 0xf3, 0x12, 0x79, 0x08, 0x8d, 0xa8, 0xf8, 0x94, 0xbe, 0x3a, 0xf5, 0xca, 0x07, 0x0a, - 0x34, 0x32, 0xed, 0x72, 0x97, 0x3d, 0xdd, 0xf5, 0x96, 0x0e, 0x76, 0xe4, 0x18, 0x20, 0xd3, 0xdd, - 0x2d, 0x7d, 0x93, 0xeb, 0x2d, 0x1f, 0xd8, 0xc8, 0xfb, 0xd0, 0x4a, 0x87, 0xf0, 0xf2, 0x57, 0xb6, - 0xde, 0xb2, 0x19, 0x6a, 0xf0, 0xb5, 0xff, 0xfc, 0x6b, 0x47, 0xfb, 0xed, 0xd5, 0x8e, 0xf6, 0xfb, - 0xab, 0x1d, 0xed, 0x8b, 0xab, 0x1d, 0xed, 0x4f, 0x57, 0x3b, 0xda, 0x3f, 0xaf, 0x76, 0xb4, 0x3f, - 0x7c, 0xb9, 0xa3, 0x8d, 0x1b, 0x32, 0xfc, 0xdf, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, - 0x90, 0xd5, 0xfd, 0x18, 0x16, 0x00, 0x00, + golang_proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_d8da2202f45d32c0) +} + +var fileDescriptor_types_d8da2202f45d32c0 = []byte{ + // 1959 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4f, 0x73, 0x1b, 0x49, + 0x15, 0xf7, 0xc8, 0xb2, 0xa4, 0x79, 0xb2, 0x2d, 0xa7, 0x9d, 0xd8, 0x8a, 0x16, 0xec, 0x30, 0x45, + 0x65, 0x1d, 0xd6, 0x2b, 0x83, 0x97, 0x6c, 0x39, 0xbb, 0xb0, 0x85, 0xe5, 0x0d, 0x2b, 0xd7, 0x2e, + 0x60, 0x26, 0xd9, 0x50, 0xc5, 0x45, 0xd5, 0xd2, 0xb4, 0x47, 0x53, 0x91, 0x66, 0x66, 0xa7, 0x5b, + 0x5e, 0x39, 0x1f, 0x81, 0xda, 0xa2, 0xb8, 0x71, 0xe6, 0xc6, 0x17, 0xa0, 0x8a, 0x23, 0x27, 0x6a, + 0x8f, 0x1c, 0xa0, 0xe0, 0x14, 0xc0, 0x5b, 0x5c, 0xf8, 0x04, 0x1c, 0xa9, 0xd7, 0xdd, 0xf3, 0xd7, + 0xa3, 0x54, 0x12, 0x6e, 0x5c, 0xa4, 0xee, 0x7e, 0xef, 0xf5, 0xf4, 0x7b, 0xfd, 0xde, 0xfb, 0xbd, + 0xd7, 0xb0, 0x45, 0x87, 0x23, 0xef, 0x40, 0x5c, 0x86, 0x8c, 0xab, 0xdf, 0x6e, 0x18, 0x05, 0x22, + 0x20, 0x2b, 0x72, 0xd2, 0x79, 0xdb, 0xf5, 0xc4, 0x78, 0x36, 0xec, 0x8e, 0x82, 0xe9, 0x81, 0x1b, + 0xb8, 0xc1, 0x81, 0xa4, 0x0e, 0x67, 0xe7, 0x72, 0x26, 0x27, 0x72, 0xa4, 0xa4, 0x3a, 0xbb, 0x6e, + 0x10, 0xb8, 0x13, 0x96, 0x72, 0x09, 0x6f, 0xca, 0xb8, 0xa0, 0xd3, 0x50, 0x33, 0x1c, 0x65, 0xf6, + 0x13, 0xcc, 0x77, 0x58, 0x34, 0xf5, 0x7c, 0x91, 0x1d, 0x4e, 0xbc, 0x21, 0x3f, 0x18, 0x05, 0xd3, + 0x69, 0xe0, 0x67, 0x0f, 0x64, 0xfd, 0xb1, 0x0a, 0x75, 0x9b, 0x7d, 0x36, 0x63, 0x5c, 0x90, 0x3d, + 0xa8, 0xb2, 0xd1, 0x38, 0x68, 0x57, 0xee, 0x18, 0x7b, 0xcd, 0x43, 0xd2, 0x55, 0x7c, 0x9a, 0xfa, + 0x70, 0x34, 0x0e, 0xfa, 0x4b, 0xb6, 0xe4, 0x20, 0x6f, 0xc1, 0xca, 0xf9, 0x64, 0xc6, 0xc7, 0xed, + 0x65, 0xc9, 0xba, 0x99, 0x67, 0xfd, 0x21, 0x92, 0xfa, 0x4b, 0xb6, 0xe2, 0xc1, 0x6d, 0x3d, 0xff, + 0x3c, 0x68, 0x57, 0xcb, 0xb6, 0x3d, 0xf5, 0xcf, 0xe5, 0xb6, 0xc8, 0x41, 0x8e, 0x00, 0x38, 0x13, + 0x83, 0x20, 0x14, 0x5e, 0xe0, 0xb7, 0x57, 0x24, 0xff, 0x76, 0x9e, 0xff, 0x11, 0x13, 0x3f, 0x91, + 0xe4, 0xfe, 0x92, 0x6d, 0xf2, 0x78, 0x82, 0x92, 0x9e, 0xef, 0x89, 0xc1, 0x68, 0x4c, 0x3d, 0xbf, + 0x5d, 0x2b, 0x93, 0x3c, 0xf5, 0x3d, 0x71, 0x82, 0x64, 0x94, 0xf4, 0xe2, 0x09, 0xaa, 0xf2, 0xd9, + 0x8c, 0x45, 0x97, 0xed, 0x7a, 0x99, 0x2a, 0x3f, 0x45, 0x12, 0xaa, 0x22, 0x79, 0xc8, 0xfb, 0xd0, + 0x1c, 0x32, 0xd7, 0xf3, 0x07, 0xc3, 0x49, 0x30, 0x7a, 0xda, 0x6e, 0x48, 0x91, 0x76, 0x5e, 0xa4, + 0x87, 0x0c, 0x3d, 0xa4, 0xf7, 0x97, 0x6c, 0x18, 0x26, 0x33, 0x72, 0x08, 0x8d, 0xd1, 0x98, 0x8d, + 0x9e, 0x0e, 0xc4, 0xbc, 0x6d, 0x4a, 0xc9, 0x5b, 0x79, 0xc9, 0x13, 0xa4, 0x3e, 0x9e, 0xf7, 0x97, + 0xec, 0xfa, 0x48, 0x0d, 0xc9, 0x7d, 0x30, 0x99, 0xef, 0xe8, 0xcf, 0x35, 0xa5, 0xd0, 0x56, 0xe1, + 0x5e, 0x7c, 0x27, 0xfe, 0x58, 0x83, 0xe9, 0x31, 0xe9, 0x42, 0x0d, 0xef, 0xda, 0x13, 0xed, 0x55, + 0x29, 0x73, 0xb3, 0xf0, 0x21, 0x49, 0xeb, 0x2f, 0xd9, 0x9a, 0x0b, 0xcd, 0xe7, 0xb0, 0x89, 0x77, + 0xc1, 0x22, 0x3c, 0xdc, 0x66, 0x99, 0xf9, 0x3e, 0x54, 0x74, 0x79, 0x3c, 0xd3, 0x89, 0x27, 0xbd, + 0x3a, 0xac, 0x5c, 0xd0, 0xc9, 0x8c, 0x59, 0x6f, 0x42, 0x33, 0xe3, 0x29, 0xa4, 0x0d, 0xf5, 0x29, + 0xe3, 0x9c, 0xba, 0xac, 0x6d, 0xdc, 0x31, 0xf6, 0x4c, 0x3b, 0x9e, 0x5a, 0xeb, 0xb0, 0x9a, 0xf5, + 0x93, 0x8c, 0x20, 0xfa, 0x02, 0x0a, 0x5e, 0xb0, 0x88, 0xa3, 0x03, 0x68, 0x41, 0x3d, 0xb5, 0xde, + 0x83, 0x8d, 0xa2, 0x13, 0x90, 0x0d, 0x58, 0x7e, 0xca, 0x2e, 0x35, 0x27, 0x0e, 0xc9, 0x4d, 0x7d, + 0x20, 0xe9, 0xc5, 0xa6, 0xad, 0x4f, 0xf7, 0x8b, 0x4a, 0x22, 0x9c, 0xf8, 0x01, 0x39, 0x82, 0x2a, + 0x06, 0x92, 0x94, 0x6e, 0x1e, 0x76, 0xba, 0x2a, 0xca, 0xba, 0x71, 0x94, 0x75, 0x1f, 0xc7, 0x51, + 0xd6, 0x6b, 0x7c, 0xf9, 0x7c, 0x77, 0xe9, 0x57, 0x7f, 0xdf, 0x35, 0x6c, 0x29, 0x41, 0x6e, 0xe3, + 0x55, 0x52, 0xcf, 0x1f, 0x78, 0x8e, 0xfe, 0x4e, 0x5d, 0xce, 0x4f, 0x1d, 0x72, 0x0c, 0x1b, 0xa3, + 0xc0, 0xe7, 0xcc, 0xe7, 0x33, 0x3e, 0x08, 0x69, 0x44, 0xa7, 0x5c, 0x47, 0x49, 0x7c, 0x71, 0x27, + 0x31, 0xf9, 0x4c, 0x52, 0xed, 0xd6, 0x28, 0xbf, 0x40, 0xde, 0x05, 0xb8, 0xa0, 0x13, 0xcf, 0xa1, + 0x22, 0x88, 0x78, 0xbb, 0x7a, 0x67, 0x79, 0xaf, 0x79, 0xb8, 0xa1, 0x85, 0x9f, 0xc4, 0x84, 0x5e, + 0x15, 0xcf, 0x64, 0x67, 0x38, 0xc9, 0x5d, 0x68, 0xd1, 0x30, 0x1c, 0x70, 0x41, 0x05, 0x1b, 0x0c, + 0x2f, 0x05, 0xe3, 0x32, 0x86, 0x56, 0xed, 0x35, 0x1a, 0x86, 0x8f, 0x70, 0xb5, 0x87, 0x8b, 0x96, + 0x93, 0xdc, 0x80, 0x74, 0x6f, 0x42, 0xa0, 0xea, 0x50, 0x41, 0xa5, 0x1d, 0x56, 0x6d, 0x39, 0xc6, + 0xb5, 0x90, 0x8a, 0xb1, 0xd6, 0x4e, 0x8e, 0xc9, 0x16, 0xd4, 0xc6, 0xcc, 0x73, 0xc7, 0x42, 0x2a, + 0xb4, 0x6c, 0xeb, 0x19, 0x9a, 0x3c, 0x8c, 0x82, 0x0b, 0x26, 0x23, 0xbc, 0x61, 0xab, 0x89, 0xf5, + 0x2f, 0x03, 0x6e, 0x5c, 0x0b, 0x09, 0xdc, 0x77, 0x4c, 0xf9, 0x38, 0xfe, 0x16, 0x8e, 0xc9, 0x5b, + 0xb8, 0x2f, 0x75, 0x58, 0xa4, 0x33, 0xcf, 0x9a, 0xd6, 0xb5, 0x2f, 0x17, 0xb5, 0xa2, 0x9a, 0x85, + 0x3c, 0x84, 0x8d, 0x09, 0xe5, 0x62, 0xa0, 0x3c, 0x77, 0x20, 0x33, 0xcb, 0x72, 0x2e, 0x9a, 0x3e, + 0xa1, 0xb1, 0x87, 0xa3, 0x43, 0x69, 0xf1, 0xf5, 0x49, 0x6e, 0x95, 0xf4, 0xe1, 0xe6, 0xf0, 0xf2, + 0x19, 0xf5, 0x85, 0xe7, 0xb3, 0xc1, 0x35, 0x6b, 0xb7, 0xf4, 0x56, 0x0f, 0x2f, 0x3c, 0x87, 0xf9, + 0x23, 0xa6, 0x37, 0xd9, 0x4c, 0x44, 0x92, 0x6b, 0xe0, 0xd6, 0x1d, 0x58, 0xcf, 0xc7, 0x2f, 0x59, + 0x87, 0x8a, 0x98, 0x6b, 0x0d, 0x2b, 0x62, 0x6e, 0x59, 0x89, 0xef, 0x25, 0x41, 0x74, 0x8d, 0xe7, + 0x1e, 0xb4, 0x0a, 0x01, 0x9d, 0x31, 0xb7, 0x91, 0x35, 0xb7, 0xd5, 0x82, 0xb5, 0x5c, 0x1c, 0x5b, + 0x5f, 0xac, 0x40, 0xc3, 0x66, 0x3c, 0x44, 0x37, 0x22, 0x47, 0x60, 0xb2, 0xf9, 0x88, 0xa9, 0x14, + 0x6a, 0x14, 0x12, 0x94, 0xe2, 0x79, 0x18, 0xd3, 0x31, 0x94, 0x13, 0x66, 0x72, 0x2f, 0x97, 0xfe, + 0x37, 0x8b, 0x42, 0xd9, 0xfc, 0xbf, 0x9f, 0xcf, 0xff, 0x37, 0x0b, 0xbc, 0x05, 0x00, 0xb8, 0x97, + 0x03, 0x80, 0xe2, 0xc6, 0x39, 0x04, 0x78, 0x50, 0x82, 0x00, 0xc5, 0xe3, 0x2f, 0x80, 0x80, 0x07, + 0x25, 0x10, 0xd0, 0xbe, 0xf6, 0xad, 0x52, 0x0c, 0xd8, 0xcf, 0x63, 0x40, 0x51, 0x9d, 0x02, 0x08, + 0x7c, 0xaf, 0x0c, 0x04, 0x6e, 0x17, 0x64, 0x16, 0xa2, 0xc0, 0x3b, 0xd7, 0x50, 0x60, 0xab, 0x20, + 0x5a, 0x02, 0x03, 0x0f, 0x72, 0xf9, 0x19, 0x4a, 0x75, 0x2b, 0x4f, 0xd0, 0xe4, 0xdd, 0xeb, 0x08, + 0xb2, 0x5d, 0xbc, 0xda, 0x32, 0x08, 0x39, 0x28, 0x40, 0xc8, 0xad, 0xe2, 0x29, 0x0b, 0x18, 0x92, + 0x22, 0xc1, 0x3d, 0x8c, 0xfb, 0x82, 0xa7, 0x61, 0x8e, 0x60, 0x51, 0x14, 0x44, 0x3a, 0x55, 0xab, + 0x89, 0xb5, 0x87, 0x99, 0x28, 0xf5, 0xaf, 0x17, 0xa0, 0x86, 0x74, 0xfa, 0x8c, 0x77, 0x59, 0xbf, + 0x36, 0x52, 0x59, 0x19, 0xd1, 0xd9, 0x2c, 0x66, 0xea, 0x2c, 0x96, 0x01, 0x93, 0x4a, 0x0e, 0x4c, + 0xc8, 0xb7, 0xe0, 0x86, 0x4c, 0x23, 0xd2, 0x2e, 0x83, 0x5c, 0x5a, 0x6b, 0x21, 0x41, 0x19, 0x44, + 0xe5, 0xb7, 0xb7, 0x61, 0x33, 0xc3, 0x8b, 0x29, 0x56, 0xa6, 0xb0, 0xaa, 0x0c, 0xde, 0x8d, 0x84, + 0xfb, 0x38, 0x0c, 0xfb, 0x94, 0x8f, 0xad, 0x1f, 0xa5, 0xfa, 0xa7, 0x40, 0x45, 0xa0, 0x3a, 0x0a, + 0x1c, 0xa5, 0xd6, 0x9a, 0x2d, 0xc7, 0x08, 0x5e, 0x93, 0xc0, 0x95, 0x5f, 0x35, 0x6d, 0x1c, 0x22, + 0x57, 0x12, 0x29, 0xa6, 0x0a, 0x09, 0xeb, 0x97, 0x46, 0xba, 0x5f, 0x8a, 0x5d, 0x65, 0x30, 0x63, + 0xfc, 0x2f, 0x30, 0x53, 0x79, 0x59, 0x98, 0xb1, 0x7e, 0x67, 0xa4, 0x77, 0x91, 0x00, 0xc8, 0xeb, + 0x29, 0x87, 0x6e, 0xe1, 0xf9, 0x0e, 0x9b, 0xcb, 0x50, 0x5f, 0xb6, 0xd5, 0x24, 0x46, 0xf5, 0x9a, + 0x34, 0x70, 0x1e, 0xd5, 0xeb, 0x72, 0x4d, 0x4d, 0x34, 0xf0, 0x04, 0xe7, 0x32, 0x06, 0x57, 0x6d, + 0x35, 0xc9, 0xe4, 0x4d, 0x33, 0x97, 0x37, 0xcf, 0x80, 0x5c, 0x8f, 0x4e, 0xf2, 0x1e, 0x54, 0x05, + 0x75, 0xd1, 0x78, 0xa8, 0xff, 0x7a, 0x57, 0xd5, 0xc8, 0xdd, 0x8f, 0x9f, 0x9c, 0x51, 0x2f, 0xea, + 0x6d, 0xa1, 0xf6, 0xff, 0x7e, 0xbe, 0xbb, 0x8e, 0x3c, 0xfb, 0xc1, 0xd4, 0x13, 0x6c, 0x1a, 0x8a, + 0x4b, 0x5b, 0xca, 0x58, 0x7f, 0x31, 0x30, 0x6b, 0xe7, 0xa2, 0xb6, 0xd4, 0x16, 0xb1, 0x6b, 0x56, + 0x32, 0x00, 0xfb, 0x72, 0xf6, 0xf9, 0x3a, 0x80, 0x4b, 0xf9, 0xe0, 0x73, 0xea, 0x0b, 0xe6, 0x68, + 0x23, 0x99, 0x2e, 0xe5, 0x3f, 0x93, 0x0b, 0x58, 0x87, 0x20, 0x79, 0xc6, 0x99, 0x23, 0xad, 0xb5, + 0x6c, 0xd7, 0x5d, 0xca, 0x3f, 0xe5, 0xcc, 0x49, 0xf4, 0xaa, 0xbf, 0x86, 0x5e, 0x7f, 0xcd, 0xb8, + 0x5c, 0x0a, 0x59, 0xff, 0x0f, 0x9a, 0x7d, 0x65, 0x20, 0x16, 0xe7, 0xd3, 0x1e, 0x39, 0x81, 0x1b, + 0x89, 0x7b, 0x0f, 0x66, 0xa1, 0x43, 0xb1, 0x72, 0x32, 0x5e, 0x18, 0x0f, 0x1b, 0x89, 0xc0, 0xa7, + 0x8a, 0x9f, 0xfc, 0x18, 0xb6, 0x0b, 0x01, 0x99, 0x6c, 0x55, 0x79, 0x61, 0x5c, 0xde, 0xca, 0xc7, + 0x65, 0xbc, 0x5f, 0xac, 0xe5, 0xf2, 0x6b, 0x68, 0xf9, 0x4d, 0x2c, 0x49, 0xb2, 0x69, 0xba, 0xec, + 0x9e, 0xac, 0xdf, 0x18, 0xd0, 0x2a, 0x1c, 0x86, 0x1c, 0x00, 0xa8, 0x2c, 0xc7, 0xbd, 0x67, 0x71, + 0x61, 0x1c, 0xdb, 0x40, 0x1a, 0xeb, 0x91, 0xf7, 0x8c, 0xd9, 0xe6, 0x30, 0x1e, 0x92, 0xbb, 0x50, + 0x17, 0x73, 0xc5, 0x9d, 0x2f, 0xde, 0x1e, 0xcf, 0x25, 0x6b, 0x4d, 0xc8, 0x7f, 0x72, 0x1f, 0x56, + 0xd5, 0xc6, 0x6e, 0xc0, 0xb9, 0x17, 0xea, 0xc2, 0x81, 0x64, 0xb7, 0xfe, 0x48, 0x52, 0xec, 0xe6, + 0x30, 0x9d, 0x58, 0x3f, 0x07, 0x33, 0xf9, 0x2c, 0x79, 0x03, 0xcc, 0x29, 0x9d, 0xeb, 0xca, 0x16, + 0xcf, 0xb6, 0x62, 0x37, 0xa6, 0x74, 0x2e, 0x8b, 0x5a, 0xb2, 0x0d, 0x75, 0x24, 0x8a, 0xb9, 0xb2, + 0xf7, 0x8a, 0x5d, 0x9b, 0xd2, 0xf9, 0xe3, 0x79, 0x42, 0x70, 0x29, 0x8f, 0xcb, 0xd6, 0x29, 0x9d, + 0x7f, 0x44, 0xb9, 0xf5, 0x01, 0xd4, 0xd4, 0x21, 0x5f, 0x6a, 0x63, 0x94, 0xaf, 0xe4, 0xe4, 0x7f, + 0x00, 0xcd, 0xcc, 0xb9, 0xc9, 0x77, 0xe0, 0x96, 0xd2, 0x30, 0xa4, 0x91, 0x90, 0x16, 0xc9, 0x6d, + 0x48, 0x24, 0xf1, 0x8c, 0x46, 0x02, 0x3f, 0xa9, 0x0a, 0xf1, 0x08, 0xd6, 0xf3, 0xc5, 0x2a, 0xf9, + 0x06, 0xac, 0xea, 0xc2, 0x36, 0x0a, 0x66, 0xbe, 0xa3, 0x65, 0x9b, 0x6a, 0xcd, 0xc6, 0x25, 0xf2, + 0xfd, 0x92, 0xb4, 0x1d, 0x23, 0xfa, 0x23, 0xcf, 0xf5, 0x3d, 0xdf, 0x7d, 0x51, 0xf6, 0xfe, 0x5b, + 0x05, 0x6a, 0xaa, 0xb0, 0x26, 0x77, 0x33, 0x5d, 0x8c, 0x44, 0xcd, 0x5e, 0xf3, 0xea, 0xf9, 0x6e, + 0x5d, 0x02, 0xcc, 0xe9, 0x87, 0x69, 0x4b, 0x93, 0x26, 0xd4, 0x4a, 0xae, 0xee, 0x8f, 0xfb, 0xa7, + 0xe5, 0x57, 0xee, 0x9f, 0xb6, 0xa1, 0xee, 0xcf, 0xa6, 0xf2, 0xb2, 0xaa, 0xea, 0xb2, 0xfc, 0xd9, + 0x14, 0x2f, 0xeb, 0x0d, 0x30, 0x45, 0x20, 0xe8, 0x44, 0x92, 0x54, 0x52, 0x68, 0xc8, 0x05, 0x24, + 0xde, 0x85, 0x56, 0x16, 0xb3, 0x11, 0x83, 0x15, 0x44, 0xac, 0xa5, 0x88, 0x8d, 0xfd, 0xc4, 0x9b, + 0xd0, 0x4a, 0x15, 0x56, 0x7c, 0x0a, 0x36, 0xd6, 0xd3, 0x65, 0xc9, 0x78, 0x1b, 0x1a, 0x09, 0x9a, + 0x2b, 0x08, 0xa9, 0x53, 0x05, 0xe2, 0xd8, 0xac, 0x87, 0x51, 0x10, 0x06, 0x9c, 0x45, 0xba, 0x4c, + 0x5b, 0x94, 0x0a, 0x12, 0x3e, 0xcb, 0x03, 0x33, 0x21, 0x62, 0xe9, 0x41, 0x1d, 0x27, 0x62, 0x9c, + 0xeb, 0x2a, 0x3f, 0x9e, 0x92, 0x7d, 0xa8, 0x87, 0xb3, 0xe1, 0x00, 0x11, 0x2e, 0x1f, 0x32, 0x67, + 0xb3, 0xe1, 0xc7, 0xec, 0x32, 0xee, 0x77, 0x42, 0x39, 0x93, 0x18, 0x17, 0x7c, 0xce, 0x22, 0xed, + 0xbc, 0x6a, 0x62, 0x09, 0xd8, 0x28, 0xde, 0x35, 0xf9, 0x2e, 0x98, 0x89, 0x7e, 0x85, 0xd0, 0x2d, + 0x9e, 0x39, 0x65, 0xc4, 0x42, 0x88, 0x7b, 0xae, 0xcf, 0x9c, 0x41, 0x6a, 0x5b, 0x79, 0xae, 0x86, + 0xdd, 0x52, 0x84, 0x4f, 0x62, 0xe3, 0x5a, 0xdf, 0x86, 0x9a, 0x3a, 0x23, 0xe6, 0x13, 0xdc, 0x39, + 0x2e, 0xb6, 0x70, 0x5c, 0x9a, 0x63, 0xfe, 0x6c, 0x40, 0x23, 0x6e, 0xa2, 0x4a, 0x85, 0x72, 0x87, + 0xae, 0xbc, 0xec, 0xa1, 0x17, 0x75, 0xa2, 0xb1, 0x47, 0x56, 0x5f, 0xd9, 0x23, 0xf7, 0x81, 0x28, + 0xc7, 0xbb, 0x08, 0x84, 0xe7, 0xbb, 0x03, 0x65, 0x73, 0xe5, 0x81, 0x1b, 0x92, 0xf2, 0x44, 0x12, + 0xce, 0x70, 0xfd, 0xf0, 0x8b, 0x15, 0x68, 0x1d, 0xf7, 0x4e, 0x4e, 0x8f, 0xc3, 0x70, 0xe2, 0x8d, + 0xa8, 0xac, 0xf0, 0x0e, 0xa0, 0x2a, 0x6b, 0xd8, 0x92, 0x77, 0xb3, 0x4e, 0x59, 0x33, 0x45, 0x0e, + 0x61, 0x45, 0x96, 0xb2, 0xa4, 0xec, 0xf9, 0xac, 0x53, 0xda, 0x53, 0xe1, 0x47, 0x54, 0xb1, 0x7b, + 0xfd, 0x15, 0xad, 0x53, 0xd6, 0x58, 0x91, 0x0f, 0xc0, 0x4c, 0x8b, 0xd0, 0x45, 0x6f, 0x69, 0x9d, + 0x85, 0x2d, 0x16, 0xca, 0xa7, 0x15, 0xc0, 0xa2, 0x27, 0xa1, 0xce, 0xc2, 0x5e, 0x84, 0x1c, 0x41, + 0x3d, 0xae, 0x8c, 0xca, 0x5f, 0xbb, 0x3a, 0x0b, 0xda, 0x1f, 0x34, 0x8f, 0xaa, 0x2e, 0xcb, 0x9e, + 0xe4, 0x3a, 0xa5, 0x3d, 0x1a, 0xb9, 0x0f, 0x35, 0x0d, 0x78, 0xa5, 0x2f, 0x5e, 0x9d, 0xf2, 0x26, + 0x06, 0x95, 0x4c, 0x2b, 0xeb, 0x45, 0xcf, 0x86, 0x9d, 0x85, 0xcd, 0x24, 0x39, 0x06, 0xc8, 0x54, + 0x94, 0x0b, 0xdf, 0x03, 0x3b, 0x8b, 0x9b, 0x44, 0xf2, 0x3e, 0x34, 0xd2, 0xc6, 0xbf, 0xfc, 0x85, + 0xaf, 0xb3, 0xa8, 0x6f, 0xeb, 0x7d, 0xed, 0x3f, 0xff, 0xdc, 0x31, 0x7e, 0x7b, 0xb5, 0x63, 0xfc, + 0xfe, 0x6a, 0xc7, 0xf8, 0xf2, 0x6a, 0xc7, 0xf8, 0xd3, 0xd5, 0x8e, 0xf1, 0x8f, 0xab, 0x1d, 0xe3, + 0x0f, 0x5f, 0xed, 0x18, 0xc3, 0x9a, 0x74, 0xff, 0x77, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xc1, + 0xc2, 0x93, 0xfb, 0x94, 0x16, 0x00, 0x00, } diff --git a/abci/types/types.proto b/abci/types/types.proto index 7f87628e1..6e6b1cd36 100644 --- a/abci/types/types.proto +++ b/abci/types/types.proto @@ -71,10 +71,11 @@ message RequestQuery { bool prove = 4; } +// NOTE: validators here have empty pubkeys. message RequestBeginBlock { bytes hash = 1; Header header = 2 [(gogoproto.nullable)=false]; - repeated SigningValidator validators = 3 [(gogoproto.nullable)=false]; + LastCommitInfo last_commit_info = 3 [(gogoproto.nullable)=false]; repeated Evidence byzantine_validators = 4 [(gogoproto.nullable)=false]; } @@ -203,14 +204,14 @@ message ConsensusParams { BlockGossip block_gossip = 3; } -// BlockSize contain limits on the block size. +// BlockSize contains limits on the block size. message BlockSize { int32 max_bytes = 1; int32 max_txs = 2; int64 max_gas = 3; } -// TxSize contain limits on the tx size. +// TxSize contains limits on the tx size. message TxSize { int32 max_bytes = 1; int64 max_gas = 2; @@ -223,6 +224,11 @@ message BlockGossip { int32 block_part_size_bytes = 1; } +message LastCommitInfo { + int32 commit_round = 1; + repeated SigningValidator validators = 2 [(gogoproto.nullable)=false]; +} + //---------------------------------------- // Blockchain Types diff --git a/abci/types/typespb_test.go b/abci/types/typespb_test.go index db88ed394..33a368af4 100644 --- a/abci/types/typespb_test.go +++ b/abci/types/typespb_test.go @@ -1646,6 +1646,62 @@ func TestBlockGossipMarshalTo(t *testing.T) { } } +func TestLastCommitInfoProto(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, false) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + littlefuzz := make([]byte, len(dAtA)) + copy(littlefuzz, dAtA) + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } + if len(littlefuzz) > 0 { + fuzzamount := 100 + for i := 0; i < fuzzamount; i++ { + littlefuzz[popr.Intn(len(littlefuzz))] = byte(popr.Intn(256)) + littlefuzz = append(littlefuzz, byte(popr.Intn(256))) + } + // shouldn't panic + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) + } +} + +func TestLastCommitInfoMarshalTo(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, false) + size := p.Size() + dAtA := make([]byte, size) + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + _, err := p.MarshalTo(dAtA) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + func TestHeaderProto(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) @@ -2448,6 +2504,24 @@ func TestBlockGossipJSON(t *testing.T) { t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p) } } +func TestLastCommitInfoJSON(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} + jsondata, err := marshaler.MarshalToString(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p) + } +} func TestHeaderJSON(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) @@ -3350,6 +3424,34 @@ func TestBlockGossipProtoCompactText(t *testing.T) { } } +func TestLastCommitInfoProtoText(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + +func TestLastCommitInfoProtoCompactText(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + func TestHeaderProtoText(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) @@ -4128,6 +4230,28 @@ func TestBlockGossipSize(t *testing.T) { } } +func TestLastCommitInfoSize(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + size := p.Size() + if len(dAtA) != size { + t.Errorf("seed = %d, size %v != marshalled size %v", seed, size, len(dAtA)) + } + if size2 != size { + t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) + } + size3 := github_com_gogo_protobuf_proto.Size(p) + if size3 != size { + t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) + } +} + func TestHeaderSize(t *testing.T) { seed := time.Now().UnixNano() popr := math_rand.New(math_rand.NewSource(seed)) diff --git a/docs/app-dev/abci-spec.md b/docs/app-dev/abci-spec.md index 0e5eb0044..770740b86 100644 --- a/docs/app-dev/abci-spec.md +++ b/docs/app-dev/abci-spec.md @@ -160,9 +160,8 @@ See below for more details on the message types and how they are used. - **Request**: - `Hash ([]byte)`: The block's hash. This can be derived from the block header. - - `Header (struct{})`: The block header - - `Validators ([]SigningValidator)`: List of validators in the current validator - set and whether or not they signed a vote in the LastCommit + - `Header (struct{})`: The block header. + - `LastCommitInfo (LastCommitInfo)`: Info about the last commit. - `ByzantineValidators ([]Evidence)`: List of evidence of validators that acted maliciously - **Response**: @@ -171,8 +170,9 @@ See below for more details on the message types and how they are used. - Signals the beginning of a new block. Called prior to any DeliverTxs. - The header is expected to at least contain the Height. - - The `Validators` and `ByzantineValidators` can be used to - determine rewards and punishments for the validators. + - The `LastCommitInfo` and `ByzantineValidators` can be used to determine + rewards and punishments for the validators. NOTE validators here do not + include pubkeys. ### CheckTx @@ -326,3 +326,10 @@ See below for more details on the message types and how they are used. It is the proposer's local time when block was created. - `TotalVotingPower (int64)`: Total voting power of the validator set at height `Height` + +### LastCommitInfo + +- **Fields**: + - `CommitRound (int32)`: Commit round. + - `Validators ([]SigningValidator)`: List of validators in the current + validator set and whether or not they signed a vote. diff --git a/state/execution.go b/state/execution.go index f57b6e4dd..54e1ec73a 100644 --- a/state/execution.go +++ b/state/execution.go @@ -188,9 +188,12 @@ func execBlockOnProxyApp(logger log.Logger, proxyAppConn proxy.AppConnConsensus, // Begin block _, err := proxyAppConn.BeginBlockSync(abci.RequestBeginBlock{ - Hash: block.Hash(), - Header: types.TM2PB.Header(&block.Header), - Validators: signVals, + Hash: block.Hash(), + Header: types.TM2PB.Header(&block.Header), + LastCommitInfo: abci.LastCommitInfo{ + CommitRound: int32(block.LastCommit.Round()), + Validators: signVals, + }, ByzantineValidators: byzVals, }) if err != nil { @@ -245,7 +248,7 @@ func getBeginBlockValidatorInfo(block *types.Block, lastValSet *types.ValidatorS vote = block.LastCommit.Precommits[i] } val := abci.SigningValidator{ - Validator: types.TM2PB.Validator(val), + Validator: types.TM2PB.ValidatorWithoutPubKey(val), SignedLastBlock: vote != nil, } signVals[i] = val diff --git a/state/execution_test.go b/state/execution_test.go index 516ca2ed5..53c5c882b 100644 --- a/state/execution_test.go +++ b/state/execution_test.go @@ -293,7 +293,7 @@ func (app *testApp) Info(req abci.RequestInfo) (resInfo abci.ResponseInfo) { } func (app *testApp) BeginBlock(req abci.RequestBeginBlock) abci.ResponseBeginBlock { - app.Validators = req.Validators + app.Validators = req.LastCommitInfo.Validators app.ByzantineValidators = req.ByzantineValidators return abci.ResponseBeginBlock{} } diff --git a/types/protobuf.go b/types/protobuf.go index 0ed3d0c43..01d4ebf0c 100644 --- a/types/protobuf.go +++ b/types/protobuf.go @@ -50,6 +50,13 @@ func (tm2pb) Header(header *Header) abci.Header { } } +func (tm2pb) ValidatorWithoutPubKey(val *Validator) abci.Validator { + return abci.Validator{ + Address: val.PubKey.Address(), + Power: val.VotingPower, + } +} + // XXX: panics on unknown pubkey type func (tm2pb) Validator(val *Validator) abci.Validator { return abci.Validator{ @@ -129,7 +136,7 @@ func (tm2pb) Evidence(ev Evidence, valSet *ValidatorSet, evTime time.Time) abci. return abci.Evidence{ Type: evType, - Validator: TM2PB.Validator(val), + Validator: TM2PB.ValidatorWithoutPubKey(val), Height: ev.Height(), Time: evTime, TotalVotingPower: valSet.TotalVotingPower(), diff --git a/types/protobuf_test.go b/types/protobuf_test.go index 6ee79b906..8711974e3 100644 --- a/types/protobuf_test.go +++ b/types/protobuf_test.go @@ -102,6 +102,9 @@ func TestABCIEvidence(t *testing.T) { ) assert.Equal(t, "duplicate/vote", abciEv.Type) + + // test we do not send pubkeys + assert.Empty(t, abciEv.Validator.PubKey) } type pubKeyEddie struct{} @@ -120,3 +123,21 @@ func TestABCIValidatorFromPubKeyAndPower(t *testing.T) { assert.Panics(t, func() { TM2PB.ValidatorFromPubKeyAndPower(nil, 10) }) assert.Panics(t, func() { TM2PB.ValidatorFromPubKeyAndPower(pubKeyEddie{}, 10) }) } + +func TestABCIValidatorWithoutPubKey(t *testing.T) { + pkEd := ed25519.GenPrivKey().PubKey() + + abciVal := TM2PB.ValidatorWithoutPubKey(&Validator{ + Address: pkEd.Address(), + PubKey: pkEd, + VotingPower: 10, + }) + + // pubkey must be nil + tmValExpected := abci.Validator{ + Address: pkEd.Address(), + Power: 10, + } + + assert.Equal(t, tmValExpected, abciVal) +}