add version/block/config to Info. add header to BeginBlock

This commit is contained in:
Ethan Buchman 2016-08-22 14:01:26 -04:00
parent eece35eeeb
commit debbf122db
13 changed files with 414 additions and 149 deletions

View File

@ -25,7 +25,7 @@ type Client interface {
FlushSync() error FlushSync() error
EchoSync(msg string) (res types.Result) EchoSync(msg string) (res types.Result)
InfoSync() (res types.Result) InfoSync() (types.Result, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo)
SetOptionSync(key string, value string) (res types.Result) SetOptionSync(key string, value string) (res types.Result)
AppendTxSync(tx []byte) (res types.Result) AppendTxSync(tx []byte) (res types.Result)
CheckTxSync(tx []byte) (res types.Result) CheckTxSync(tx []byte) (res types.Result)
@ -33,11 +33,11 @@ type Client interface {
CommitSync() (res types.Result) CommitSync() (res types.Result)
InitChainAsync(validators []*types.Validator) *ReqRes InitChainAsync(validators []*types.Validator) *ReqRes
BeginBlockAsync(height uint64) *ReqRes BeginBlockAsync(header *types.Header) *ReqRes
EndBlockAsync(height uint64) *ReqRes EndBlockAsync(height uint64) *ReqRes
InitChainSync(validators []*types.Validator) (err error) InitChainSync(validators []*types.Validator) (err error)
BeginBlockSync(height uint64) (err error) BeginBlockSync(header *types.Header) (err error)
EndBlockSync(height uint64) (changedValidators []*types.Validator, err error) EndBlockSync(height uint64) (changedValidators []*types.Validator, err error)
} }

View File

@ -200,8 +200,8 @@ func (cli *grpcClient) InitChainAsync(validators []*types.Validator) *ReqRes {
return cli.finishAsyncCall(req, &types.Response{&types.Response_InitChain{res}}) return cli.finishAsyncCall(req, &types.Response{&types.Response_InitChain{res}})
} }
func (cli *grpcClient) BeginBlockAsync(height uint64) *ReqRes { func (cli *grpcClient) BeginBlockAsync(header *types.Header) *ReqRes {
req := types.ToRequestBeginBlock(height) req := types.ToRequestBeginBlock(header)
res, err := cli.client.BeginBlock(context.Background(), req.GetBeginBlock(), grpc.FailFast(true)) res, err := cli.client.BeginBlock(context.Background(), req.GetBeginBlock(), grpc.FailFast(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
@ -262,13 +262,13 @@ func (cli *grpcClient) FlushSync() error {
return nil return nil
} }
func (cli *grpcClient) InfoSync() (res types.Result) { func (cli *grpcClient) InfoSync() (types.Result, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
reqres := cli.InfoAsync() reqres := cli.InfoAsync()
if res := cli.checkErrGetResult(); res.IsErr() { if res := cli.checkErrGetResult(); res.IsErr() {
return res return res
} }
resp := reqres.Response.GetInfo() resp := reqres.Response.GetInfo()
return types.NewResultOK([]byte(resp.Info), LOG) return types.NewResultOK([]byte(resp.Info), LOG), r.TmspInfo, r.LastBlock, r.Config
} }
func (cli *grpcClient) SetOptionSync(key string, value string) (res types.Result) { func (cli *grpcClient) SetOptionSync(key string, value string) (res types.Result) {
@ -321,8 +321,8 @@ func (cli *grpcClient) InitChainSync(validators []*types.Validator) (err error)
return cli.Error() return cli.Error()
} }
func (cli *grpcClient) BeginBlockSync(height uint64) (err error) { func (cli *grpcClient) BeginBlockSync(header *types.Header) (err error) {
cli.BeginBlockAsync(height) cli.BeginBlockAsync(header)
return cli.Error() return cli.Error()
} }

View File

@ -51,11 +51,11 @@ func (app *localClient) EchoAsync(msg string) *ReqRes {
func (app *localClient) InfoAsync() *ReqRes { func (app *localClient) InfoAsync() *ReqRes {
app.mtx.Lock() app.mtx.Lock()
info := app.Application.Info() info, tmspInfo, blockInfo, configInfo := app.Application.Info()
app.mtx.Unlock() app.mtx.Unlock()
return app.callback( return app.callback(
types.ToRequestInfo(), types.ToRequestInfo(),
types.ToResponseInfo(info), types.ToResponseInfo(info, tmspInfo, blockInfo, configInfo),
) )
} }
@ -122,14 +122,14 @@ func (app *localClient) InitChainAsync(validators []*types.Validator) *ReqRes {
return reqRes return reqRes
} }
func (app *localClient) BeginBlockAsync(height uint64) *ReqRes { func (app *localClient) BeginBlockAsync(header *types.Header) *ReqRes {
app.mtx.Lock() app.mtx.Lock()
if bcApp, ok := app.Application.(types.BlockchainAware); ok { if bcApp, ok := app.Application.(types.BlockchainAware); ok {
bcApp.BeginBlock(height) bcApp.BeginBlock(header)
} }
app.mtx.Unlock() app.mtx.Unlock()
return app.callback( return app.callback(
types.ToRequestBeginBlock(height), types.ToRequestBeginBlock(header),
types.ToResponseBeginBlock(), types.ToResponseBeginBlock(),
) )
} }
@ -157,11 +157,11 @@ func (app *localClient) EchoSync(msg string) (res types.Result) {
return types.OK.SetData([]byte(msg)) return types.OK.SetData([]byte(msg))
} }
func (app *localClient) InfoSync() (res types.Result) { func (app *localClient) InfoSync() (types.Result, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
app.mtx.Lock() app.mtx.Lock()
info := app.Application.Info() defer app.mtx.Unlock()
app.mtx.Unlock() info, tmspInfo, blockInfo, configInfo := app.Application.Info()
return types.OK.SetData([]byte(info)) return types.OK.SetData([]byte(info)), tmspInfo, blockInfo, configInfo
} }
func (app *localClient) SetOptionSync(key string, value string) (res types.Result) { func (app *localClient) SetOptionSync(key string, value string) (res types.Result) {
@ -208,10 +208,10 @@ func (app *localClient) InitChainSync(validators []*types.Validator) (err error)
return nil return nil
} }
func (app *localClient) BeginBlockSync(height uint64) (err error) { func (app *localClient) BeginBlockSync(header *types.Header) (err error) {
app.mtx.Lock() app.mtx.Lock()
if bcApp, ok := app.Application.(types.BlockchainAware); ok { if bcApp, ok := app.Application.(types.BlockchainAware); ok {
bcApp.BeginBlock(height) bcApp.BeginBlock(header)
} }
app.mtx.Unlock() app.mtx.Unlock()
return nil return nil

View File

@ -263,8 +263,8 @@ func (cli *socketClient) InitChainAsync(validators []*types.Validator) *ReqRes {
return cli.queueRequest(types.ToRequestInitChain(validators)) return cli.queueRequest(types.ToRequestInitChain(validators))
} }
func (cli *socketClient) BeginBlockAsync(height uint64) *ReqRes { func (cli *socketClient) BeginBlockAsync(header *types.Header) *ReqRes {
return cli.queueRequest(types.ToRequestBeginBlock(height)) return cli.queueRequest(types.ToRequestBeginBlock(header))
} }
func (cli *socketClient) EndBlockAsync(height uint64) *ReqRes { func (cli *socketClient) EndBlockAsync(height uint64) *ReqRes {
@ -292,14 +292,14 @@ func (cli *socketClient) FlushSync() error {
return cli.Error() return cli.Error()
} }
func (cli *socketClient) InfoSync() (res types.Result) { func (cli *socketClient) InfoSync() (types.Result, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
reqres := cli.queueRequest(types.ToRequestInfo()) reqres := cli.queueRequest(types.ToRequestInfo())
cli.FlushSync() cli.FlushSync()
if err := cli.Error(); err != nil { if err := cli.Error(); err != nil {
return types.ErrInternalError.SetLog(err.Error()) return types.ErrInternalError.SetLog(err.Error()), nil, nil, nil
} }
resp := reqres.Response.GetInfo() resp := reqres.Response.GetInfo()
return types.Result{Code: OK, Data: []byte(resp.Info), Log: LOG} return types.Result{Code: OK, Data: []byte(resp.Info), Log: LOG}, resp.TmspInfo, resp.LastBlock, resp.Config
} }
func (cli *socketClient) SetOptionSync(key string, value string) (res types.Result) { func (cli *socketClient) SetOptionSync(key string, value string) (res types.Result) {
@ -361,8 +361,8 @@ func (cli *socketClient) InitChainSync(validators []*types.Validator) (err error
return nil return nil
} }
func (cli *socketClient) BeginBlockSync(height uint64) (err error) { func (cli *socketClient) BeginBlockSync(header *types.Header) (err error) {
cli.queueRequest(types.ToRequestBeginBlock(height)) cli.queueRequest(types.ToRequestBeginBlock(header))
cli.FlushSync() cli.FlushSync()
if err := cli.Error(); err != nil { if err := cli.Error(); err != nil {
return err return err

View File

@ -191,7 +191,7 @@ func cmdEcho(c *cli.Context) error {
// Get some info from the application // Get some info from the application
func cmdInfo(c *cli.Context) error { func cmdInfo(c *cli.Context) error {
res := client.InfoSync() res, _, _, _ := client.InfoSync()
printResponse(c, res, string(res.Data), false) printResponse(c, res, string(res.Data), false)
return nil return nil
} }

View File

@ -18,8 +18,8 @@ func NewCounterApplication(serial bool) *CounterApplication {
return &CounterApplication{serial: serial} return &CounterApplication{serial: serial}
} }
func (app *CounterApplication) Info() string { func (app *CounterApplication) Info() (string, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
return Fmt("hashes:%v, txs:%v", app.hashCount, app.txCount) return Fmt("hashes:%v, txs:%v", app.hashCount, app.txCount), nil, nil, nil
} }
func (app *CounterApplication) SetOption(key string, value string) (log string) { func (app *CounterApplication) SetOption(key string, value string) (log string) {

View File

@ -20,8 +20,8 @@ func NewDummyApplication() *DummyApplication {
return &DummyApplication{state: state} return &DummyApplication{state: state}
} }
func (app *DummyApplication) Info() string { func (app *DummyApplication) Info() (string, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
return Fmt("size:%v", app.state.Size()) return Fmt("size:%v", app.state.Size()), nil, nil, nil
} }
func (app *DummyApplication) SetOption(key string, value string) (log string) { func (app *DummyApplication) SetOption(key string, value string) (log string) {

View File

@ -11,8 +11,8 @@ func NewNilApplication() *NilApplication {
return &NilApplication{} return &NilApplication{}
} }
func (app *NilApplication) Info() string { func (app *NilApplication) Info() (string, *types.TMSPInfo, *types.LastBlockInfo, *types.ConfigInfo) {
return "nil" return "nil", nil, nil, nil
} }
func (app *NilApplication) SetOption(key string, value string) (log string) { func (app *NilApplication) SetOption(key string, value string) (log string) {

View File

@ -168,8 +168,7 @@ func (s *SocketServer) handleRequest(req *types.Request, responses chan<- *types
case *types.Request_Flush: case *types.Request_Flush:
responses <- types.ToResponseFlush() responses <- types.ToResponseFlush()
case *types.Request_Info: case *types.Request_Info:
data := s.app.Info() responses <- types.ToResponseInfo(s.app.Info())
responses <- types.ToResponseInfo(data)
case *types.Request_SetOption: case *types.Request_SetOption:
so := r.SetOption so := r.SetOption
logStr := s.app.SetOption(so.Key, so.Value) logStr := s.app.SetOption(so.Key, so.Value)
@ -189,17 +188,13 @@ func (s *SocketServer) handleRequest(req *types.Request, responses chan<- *types
case *types.Request_InitChain: case *types.Request_InitChain:
if app, ok := s.app.(types.BlockchainAware); ok { if app, ok := s.app.(types.BlockchainAware); ok {
app.InitChain(r.InitChain.Validators) app.InitChain(r.InitChain.Validators)
responses <- types.ToResponseInitChain()
} else {
responses <- types.ToResponseInitChain()
} }
responses <- types.ToResponseInitChain()
case *types.Request_BeginBlock: case *types.Request_BeginBlock:
if app, ok := s.app.(types.BlockchainAware); ok { if app, ok := s.app.(types.BlockchainAware); ok {
app.BeginBlock(r.BeginBlock.Height) app.BeginBlock(r.BeginBlock.Header)
responses <- types.ToResponseBeginBlock()
} else {
responses <- types.ToResponseBeginBlock()
} }
responses <- types.ToResponseBeginBlock()
case *types.Request_EndBlock: case *types.Request_EndBlock:
if app, ok := s.app.(types.BlockchainAware); ok { if app, ok := s.app.(types.BlockchainAware); ok {
validators := app.EndBlock(r.EndBlock.Height) validators := app.EndBlock(r.EndBlock.Height)

View File

@ -8,7 +8,7 @@ import (
type Application interface { type Application interface {
// Return application info // Return application info
Info() (info string) Info() (string, *TMSPInfo, *LastBlockInfo, *ConfigInfo)
// Set application option (e.g. mode=mempool, mode=consensus) // Set application option (e.g. mode=mempool, mode=consensus)
SetOption(key string, value string) (log string) SetOption(key string, value string) (log string)
@ -34,7 +34,7 @@ type BlockchainAware interface {
InitChain(validators []*Validator) InitChain(validators []*Validator)
// Signals the beginning of a block // Signals the beginning of a block
BeginBlock(height uint64) BeginBlock(header *Header)
// Signals the end of a block // Signals the end of a block
// diffs: changed validators from app to TendermintCore // diffs: changed validators from app to TendermintCore
@ -59,7 +59,8 @@ func (app *GRPCApplication) Flush(ctx context.Context, req *RequestFlush) (*Resp
} }
func (app *GRPCApplication) Info(ctx context.Context, req *RequestInfo) (*ResponseInfo, error) { func (app *GRPCApplication) Info(ctx context.Context, req *RequestInfo) (*ResponseInfo, error) {
return &ResponseInfo{app.app.Info()}, nil info, tmspInfo, blockInfo, configInfo := app.app.Info()
return &ResponseInfo{info, tmspInfo, blockInfo, configInfo}, nil
} }
func (app *GRPCApplication) SetOption(ctx context.Context, req *RequestSetOption) (*ResponseSetOption, error) { func (app *GRPCApplication) SetOption(ctx context.Context, req *RequestSetOption) (*ResponseSetOption, error) {
@ -95,7 +96,7 @@ func (app *GRPCApplication) InitChain(ctx context.Context, req *RequestInitChain
func (app *GRPCApplication) BeginBlock(ctx context.Context, req *RequestBeginBlock) (*ResponseBeginBlock, error) { func (app *GRPCApplication) BeginBlock(ctx context.Context, req *RequestBeginBlock) (*ResponseBeginBlock, error) {
if chainAware, ok := app.app.(BlockchainAware); ok { if chainAware, ok := app.app.(BlockchainAware); ok {
chainAware.BeginBlock(req.Height) chainAware.BeginBlock(req.Header)
} }
return &ResponseBeginBlock{}, nil return &ResponseBeginBlock{}, nil
} }

View File

@ -61,9 +61,9 @@ func ToRequestInitChain(validators []*Validator) *Request {
} }
} }
func ToRequestBeginBlock(height uint64) *Request { func ToRequestBeginBlock(header *Header) *Request {
return &Request{ return &Request{
Value: &Request_BeginBlock{&RequestBeginBlock{height}}, Value: &Request_BeginBlock{&RequestBeginBlock{header}},
} }
} }
@ -93,9 +93,9 @@ func ToResponseFlush() *Response {
} }
} }
func ToResponseInfo(info string) *Response { func ToResponseInfo(info string, tmspInfo *TMSPInfo, blockInfo *LastBlockInfo, configInfo *ConfigInfo) *Response {
return &Response{ return &Response{
Value: &Response_Info{&ResponseInfo{info}}, Value: &Response_Info{&ResponseInfo{info, tmspInfo, blockInfo, configInfo}},
} }
} }

View File

@ -34,6 +34,11 @@ It has these top-level messages:
ResponseInitChain ResponseInitChain
ResponseBeginBlock ResponseBeginBlock
ResponseEndBlock ResponseEndBlock
TMSPInfo
LastBlockInfo
ConfigInfo
Header
PartSetHeader
Validator Validator
*/ */
package types package types
@ -753,7 +758,7 @@ func (m *RequestInitChain) GetValidators() []*Validator {
} }
type RequestBeginBlock struct { type RequestBeginBlock struct {
Height uint64 `protobuf:"varint,1,opt,name=height" json:"height,omitempty"` Header *Header `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
} }
func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} } func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} }
@ -761,11 +766,11 @@ func (m *RequestBeginBlock) String() string { return proto.CompactTex
func (*RequestBeginBlock) ProtoMessage() {} func (*RequestBeginBlock) ProtoMessage() {}
func (*RequestBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (*RequestBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *RequestBeginBlock) GetHeight() uint64 { func (m *RequestBeginBlock) GetHeader() *Header {
if m != nil { if m != nil {
return m.Height return m.Header
} }
return 0 return nil
} }
type RequestEndBlock struct { type RequestEndBlock struct {
@ -1257,6 +1262,9 @@ func (*ResponseFlush) Descriptor() ([]byte, []int) { return fileDescriptor0, []i
type ResponseInfo struct { type ResponseInfo struct {
Info string `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"` Info string `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"`
TmspInfo *TMSPInfo `protobuf:"bytes,2,opt,name=tmsp_info,json=tmspInfo" json:"tmsp_info,omitempty"`
LastBlock *LastBlockInfo `protobuf:"bytes,3,opt,name=last_block,json=lastBlock" json:"last_block,omitempty"`
Config *ConfigInfo `protobuf:"bytes,4,opt,name=config" json:"config,omitempty"`
} }
func (m *ResponseInfo) Reset() { *m = ResponseInfo{} } func (m *ResponseInfo) Reset() { *m = ResponseInfo{} }
@ -1271,6 +1279,27 @@ func (m *ResponseInfo) GetInfo() string {
return "" return ""
} }
func (m *ResponseInfo) GetTmspInfo() *TMSPInfo {
if m != nil {
return m.TmspInfo
}
return nil
}
func (m *ResponseInfo) GetLastBlock() *LastBlockInfo {
if m != nil {
return m.LastBlock
}
return nil
}
func (m *ResponseInfo) GetConfig() *ConfigInfo {
if m != nil {
return m.Config
}
return nil
}
type ResponseSetOption struct { type ResponseSetOption struct {
Log string `protobuf:"bytes,1,opt,name=log" json:"log,omitempty"` Log string `protobuf:"bytes,1,opt,name=log" json:"log,omitempty"`
} }
@ -1447,6 +1476,182 @@ func (m *ResponseEndBlock) GetDiffs() []*Validator {
return nil return nil
} }
type TMSPInfo struct {
Version string `protobuf:"bytes,1,opt,name=Version" json:"Version,omitempty"`
}
func (m *TMSPInfo) Reset() { *m = TMSPInfo{} }
func (m *TMSPInfo) String() string { return proto.CompactTextString(m) }
func (*TMSPInfo) ProtoMessage() {}
func (*TMSPInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *TMSPInfo) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
type LastBlockInfo struct {
BlockHeight uint64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight" json:"block_height,omitempty"`
BlockHash []byte `protobuf:"bytes,2,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`
AppHash []byte `protobuf:"bytes,3,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"`
}
func (m *LastBlockInfo) Reset() { *m = LastBlockInfo{} }
func (m *LastBlockInfo) String() string { return proto.CompactTextString(m) }
func (*LastBlockInfo) ProtoMessage() {}
func (*LastBlockInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (m *LastBlockInfo) GetBlockHeight() uint64 {
if m != nil {
return m.BlockHeight
}
return 0
}
func (m *LastBlockInfo) GetBlockHash() []byte {
if m != nil {
return m.BlockHash
}
return nil
}
func (m *LastBlockInfo) GetAppHash() []byte {
if m != nil {
return m.AppHash
}
return nil
}
type ConfigInfo struct {
MaxBlockSize uint64 `protobuf:"varint,1,opt,name=max_block_size,json=maxBlockSize" json:"max_block_size,omitempty"`
}
func (m *ConfigInfo) Reset() { *m = ConfigInfo{} }
func (m *ConfigInfo) String() string { return proto.CompactTextString(m) }
func (*ConfigInfo) ProtoMessage() {}
func (*ConfigInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (m *ConfigInfo) GetMaxBlockSize() uint64 {
if m != nil {
return m.MaxBlockSize
}
return 0
}
type Header struct {
ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"`
Height uint64 `protobuf:"varint,2,opt,name=height" json:"height,omitempty"`
Time uint64 `protobuf:"varint,3,opt,name=time" json:"time,omitempty"`
NumTxs uint64 `protobuf:"varint,4,opt,name=num_txs,json=numTxs" json:"num_txs,omitempty"`
LastBlockHash []byte `protobuf:"bytes,5,opt,name=last_block_hash,json=lastBlockHash,proto3" json:"last_block_hash,omitempty"`
LastBlockParts *PartSetHeader `protobuf:"bytes,6,opt,name=last_block_parts,json=lastBlockParts" json:"last_block_parts,omitempty"`
LastCommitHash []byte `protobuf:"bytes,7,opt,name=last_commit_hash,json=lastCommitHash,proto3" json:"last_commit_hash,omitempty"`
DataHash []byte `protobuf:"bytes,8,opt,name=data_hash,json=dataHash,proto3" json:"data_hash,omitempty"`
ValidatorsHash []byte `protobuf:"bytes,9,opt,name=validators_hash,json=validatorsHash,proto3" json:"validators_hash,omitempty"`
AppHash []byte `protobuf:"bytes,10,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"`
}
func (m *Header) Reset() { *m = Header{} }
func (m *Header) String() string { return proto.CompactTextString(m) }
func (*Header) ProtoMessage() {}
func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (m *Header) GetChainId() string {
if m != nil {
return m.ChainId
}
return ""
}
func (m *Header) GetHeight() uint64 {
if m != nil {
return m.Height
}
return 0
}
func (m *Header) GetTime() uint64 {
if m != nil {
return m.Time
}
return 0
}
func (m *Header) GetNumTxs() uint64 {
if m != nil {
return m.NumTxs
}
return 0
}
func (m *Header) GetLastBlockHash() []byte {
if m != nil {
return m.LastBlockHash
}
return nil
}
func (m *Header) GetLastBlockParts() *PartSetHeader {
if m != nil {
return m.LastBlockParts
}
return nil
}
func (m *Header) GetLastCommitHash() []byte {
if m != nil {
return m.LastCommitHash
}
return nil
}
func (m *Header) GetDataHash() []byte {
if m != nil {
return m.DataHash
}
return nil
}
func (m *Header) GetValidatorsHash() []byte {
if m != nil {
return m.ValidatorsHash
}
return nil
}
func (m *Header) GetAppHash() []byte {
if m != nil {
return m.AppHash
}
return nil
}
type PartSetHeader struct {
Total uint64 `protobuf:"varint,1,opt,name=total" json:"total,omitempty"`
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
}
func (m *PartSetHeader) Reset() { *m = PartSetHeader{} }
func (m *PartSetHeader) String() string { return proto.CompactTextString(m) }
func (*PartSetHeader) ProtoMessage() {}
func (*PartSetHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
func (m *PartSetHeader) GetTotal() uint64 {
if m != nil {
return m.Total
}
return 0
}
func (m *PartSetHeader) GetHash() []byte {
if m != nil {
return m.Hash
}
return nil
}
type Validator struct { type Validator struct {
PubKey []byte `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"` PubKey []byte `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
Power uint64 `protobuf:"varint,2,opt,name=power" json:"power,omitempty"` Power uint64 `protobuf:"varint,2,opt,name=power" json:"power,omitempty"`
@ -1455,7 +1660,7 @@ type Validator struct {
func (m *Validator) Reset() { *m = Validator{} } func (m *Validator) Reset() { *m = Validator{} }
func (m *Validator) String() string { return proto.CompactTextString(m) } func (m *Validator) String() string { return proto.CompactTextString(m) }
func (*Validator) ProtoMessage() {} func (*Validator) ProtoMessage() {}
func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
func (m *Validator) GetPubKey() []byte { func (m *Validator) GetPubKey() []byte {
if m != nil { if m != nil {
@ -1497,6 +1702,11 @@ func init() {
proto.RegisterType((*ResponseInitChain)(nil), "types.ResponseInitChain") proto.RegisterType((*ResponseInitChain)(nil), "types.ResponseInitChain")
proto.RegisterType((*ResponseBeginBlock)(nil), "types.ResponseBeginBlock") proto.RegisterType((*ResponseBeginBlock)(nil), "types.ResponseBeginBlock")
proto.RegisterType((*ResponseEndBlock)(nil), "types.ResponseEndBlock") proto.RegisterType((*ResponseEndBlock)(nil), "types.ResponseEndBlock")
proto.RegisterType((*TMSPInfo)(nil), "types.TMSPInfo")
proto.RegisterType((*LastBlockInfo)(nil), "types.LastBlockInfo")
proto.RegisterType((*ConfigInfo)(nil), "types.ConfigInfo")
proto.RegisterType((*Header)(nil), "types.Header")
proto.RegisterType((*PartSetHeader)(nil), "types.PartSetHeader")
proto.RegisterType((*Validator)(nil), "types.Validator") proto.RegisterType((*Validator)(nil), "types.Validator")
proto.RegisterEnum("types.MessageType", MessageType_name, MessageType_value) proto.RegisterEnum("types.MessageType", MessageType_name, MessageType_value)
proto.RegisterEnum("types.CodeType", CodeType_name, CodeType_value) proto.RegisterEnum("types.CodeType", CodeType_name, CodeType_value)
@ -1907,93 +2117,113 @@ var _TMSPApplication_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("types/types.proto", fileDescriptor0) } func init() { proto.RegisterFile("types/types.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 1393 bytes of a gzipped FileDescriptorProto // 1721 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x59, 0x53, 0xdc, 0xc6, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0xdb, 0xc6,
0x16, 0x1e, 0xc1, 0xac, 0x67, 0x60, 0x68, 0x0e, 0x03, 0xc8, 0x53, 0xf7, 0xc1, 0x57, 0xf7, 0x26, 0x15, 0x16, 0x25, 0xde, 0x70, 0x48, 0x51, 0xab, 0xa3, 0x1b, 0xcd, 0xb6, 0x33, 0x0e, 0xea, 0x24,
0x01, 0xdb, 0x65, 0xa7, 0x70, 0xd9, 0x65, 0xc7, 0xa9, 0x54, 0x81, 0x8d, 0x81, 0x72, 0xd9, 0x26, 0x52, 0xea, 0xb1, 0x3b, 0xf2, 0x24, 0x63, 0x27, 0x9d, 0xcc, 0x58, 0x8e, 0x62, 0x69, 0x52, 0xc7,
0xf2, 0xf2, 0x90, 0xa5, 0x28, 0xa1, 0xe9, 0x99, 0x51, 0x18, 0xba, 0x65, 0x2d, 0x18, 0xf2, 0x0f, 0x2a, 0xec, 0xf8, 0xa1, 0x97, 0xe1, 0x40, 0xc4, 0x92, 0x44, 0x05, 0x02, 0x30, 0xb0, 0x70, 0x28,
0xfc, 0x83, 0xf2, 0x92, 0xd7, 0x3c, 0x65, 0x5f, 0x7e, 0x51, 0xaa, 0x17, 0x49, 0x23, 0x21, 0xf9, 0xff, 0x83, 0xfc, 0x9b, 0xbe, 0xf4, 0xa5, 0xaf, 0x7d, 0xea, 0xfd, 0xf2, 0xda, 0x3f, 0xd3, 0x39,
0xc9, 0x2f, 0x53, 0xdd, 0x67, 0xeb, 0x9e, 0x73, 0xbe, 0xf3, 0xe9, 0x34, 0x2c, 0x47, 0x17, 0x3e, 0xbb, 0x8b, 0xab, 0x40, 0x3f, 0xf9, 0x85, 0x83, 0x73, 0xdd, 0xdd, 0x73, 0xf9, 0xf6, 0x2c, 0x61,
0x0d, 0x6f, 0xc9, 0xdf, 0x9b, 0x7e, 0xc0, 0x23, 0x8e, 0x0d, 0xb9, 0xb1, 0x7e, 0xaa, 0x43, 0xcb, 0x5b, 0x5c, 0x87, 0x3c, 0xbe, 0x2f, 0x7f, 0xef, 0x85, 0x51, 0x20, 0x02, 0x6c, 0x49, 0xc2, 0xfc,
0xa6, 0x6f, 0x62, 0x1a, 0x46, 0xb8, 0x01, 0x75, 0xea, 0x4e, 0xb8, 0x69, 0x5c, 0x35, 0x36, 0xba, 0x73, 0x13, 0x3a, 0x16, 0x7f, 0x9d, 0xf0, 0x58, 0xe0, 0x21, 0x34, 0xf9, 0x64, 0x1e, 0x0c, 0x1b,
0x5b, 0x78, 0x53, 0x99, 0x6b, 0xed, 0xae, 0x3b, 0xe1, 0xfb, 0x35, 0x5b, 0x5a, 0xe0, 0x75, 0x68, 0xb7, 0x1b, 0x87, 0xbd, 0x63, 0xbc, 0xa7, 0xd4, 0xb5, 0xf4, 0x74, 0x32, 0x0f, 0xce, 0xd6, 0x2c,
0x8c, 0xa6, 0x71, 0x38, 0x31, 0xe7, 0xa4, 0xe9, 0x4a, 0xde, 0xf4, 0xb1, 0x50, 0xed, 0xd7, 0x6c, 0xa9, 0x81, 0x3f, 0x83, 0xd6, 0xd4, 0x4b, 0xe2, 0xf9, 0x70, 0x5d, 0xaa, 0xee, 0x94, 0x55, 0xbf,
0x65, 0x23, 0xc2, 0x7a, 0x6c, 0xc4, 0xcd, 0xf9, 0xb2, 0xb0, 0x07, 0x6c, 0x24, 0xc3, 0x0a, 0x0b, 0x26, 0xd1, 0xd9, 0x9a, 0xa5, 0x74, 0xc8, 0xad, 0xeb, 0x4f, 0x83, 0xe1, 0x46, 0x9d, 0xdb, 0x73,
0xbc, 0x07, 0x10, 0xd2, 0xe8, 0x88, 0xfb, 0x91, 0xc7, 0x99, 0x59, 0x97, 0xf6, 0xeb, 0x79, 0xfb, 0x7f, 0x2a, 0xdd, 0x92, 0x06, 0x3e, 0x04, 0x88, 0xb9, 0x18, 0x07, 0xa1, 0x70, 0x03, 0x7f, 0xd8,
0x17, 0x34, 0x7a, 0x2e, 0xd5, 0xfb, 0x35, 0xbb, 0x13, 0x26, 0x1b, 0xbc, 0x03, 0x1d, 0xc7, 0xf7, 0x94, 0xfa, 0x07, 0x65, 0xfd, 0x17, 0x5c, 0x3c, 0x97, 0xe2, 0xb3, 0x35, 0xcb, 0x88, 0x53, 0x02,
0x29, 0x1b, 0x1e, 0x45, 0xe7, 0x66, 0x43, 0x3a, 0xae, 0xe5, 0x1d, 0xb7, 0xa5, 0xfa, 0xe5, 0xf9, 0x3f, 0x05, 0xc3, 0x0e, 0x43, 0xee, 0x3b, 0x63, 0xb1, 0x1c, 0xb6, 0xa4, 0xe1, 0x7e, 0xd9, 0xf0,
0x7e, 0xcd, 0x6e, 0x3b, 0x7a, 0x8d, 0x5b, 0xd0, 0x76, 0x27, 0xd4, 0x3d, 0x11, 0x5e, 0x4d, 0xe9, 0xb1, 0x14, 0xbf, 0x5c, 0x9e, 0xad, 0x59, 0x5d, 0x5b, 0x7f, 0xe3, 0x31, 0x74, 0x27, 0x73, 0x3e,
0xb5, 0x9a, 0xf7, 0x7a, 0x28, 0xb4, 0xd2, 0xa9, 0xe5, 0xaa, 0x25, 0xde, 0x84, 0xa6, 0xcb, 0x4f, 0xb9, 0x22, 0xab, 0xb6, 0xb4, 0xda, 0x2b, 0x5b, 0x3d, 0x21, 0xa9, 0x34, 0xea, 0x4c, 0xd4, 0x27,
0x4f, 0xbd, 0xc8, 0x6c, 0x49, 0x8f, 0x7e, 0xc1, 0x43, 0xea, 0xf6, 0x6b, 0xb6, 0xb6, 0x12, 0xb9, 0xde, 0x83, 0xf6, 0x24, 0x58, 0x2c, 0x5c, 0x31, 0xec, 0x48, 0x8b, 0xdd, 0x8a, 0x85, 0x94, 0x9d,
0x7a, 0x13, 0xd3, 0xe0, 0xc2, 0x6c, 0x97, 0xe5, 0xea, 0x4b, 0xa1, 0x12, 0xb9, 0x92, 0x36, 0x22, 0xad, 0x59, 0x5a, 0x8b, 0x62, 0xf5, 0x3a, 0xe1, 0xd1, 0xf5, 0xb0, 0x5b, 0x17, 0xab, 0x5f, 0x91,
0x03, 0x1e, 0xf3, 0xa2, 0x23, 0x77, 0xe2, 0x78, 0xcc, 0xec, 0x94, 0x65, 0xe0, 0x80, 0x79, 0xd1, 0x88, 0x62, 0x25, 0x75, 0x28, 0x02, 0xae, 0xef, 0x8a, 0xf1, 0x64, 0x6e, 0xbb, 0xfe, 0xd0, 0xa8,
0x43, 0xa1, 0x16, 0x19, 0xf0, 0x92, 0x0d, 0x3e, 0x80, 0xee, 0x31, 0x1d, 0x7b, 0xec, 0xe8, 0x78, 0x8b, 0xc0, 0xb9, 0xef, 0x8a, 0x27, 0x24, 0xa6, 0x08, 0xb8, 0x29, 0x81, 0x5f, 0x40, 0xef, 0x92,
0xca, 0xdd, 0x13, 0x13, 0xa4, 0xab, 0x99, 0x77, 0xdd, 0x11, 0x06, 0x3b, 0x42, 0xbf, 0x5f, 0xb3, 0xcf, 0x5c, 0x7f, 0x7c, 0xe9, 0x05, 0x93, 0xab, 0x21, 0x48, 0xd3, 0x61, 0xd9, 0xf4, 0x84, 0x14,
0xe1, 0x38, 0xdd, 0x89, 0xf4, 0x89, 0xdc, 0x29, 0xd7, 0x6e, 0x59, 0xfa, 0x76, 0xd9, 0x30, 0x71, 0x4e, 0x48, 0x7e, 0xb6, 0x66, 0xc1, 0x65, 0x46, 0x51, 0xf8, 0x28, 0x76, 0xca, 0xb4, 0x57, 0x17,
0x6c, 0x53, 0xbd, 0xde, 0x69, 0x41, 0xe3, 0xcc, 0x99, 0xc6, 0xd4, 0xfa, 0x04, 0xba, 0x33, 0x30, 0xbe, 0x53, 0xdf, 0x49, 0x0d, 0xbb, 0x5c, 0x7f, 0x9f, 0x74, 0xa0, 0xf5, 0xc6, 0xf6, 0x12, 0x6e,
0x41, 0x13, 0x5a, 0xa7, 0x34, 0x0c, 0x9d, 0x31, 0x95, 0x58, 0xea, 0xd8, 0xc9, 0xd6, 0xea, 0xc1, 0x7e, 0x0c, 0xbd, 0x42, 0x99, 0xe0, 0x10, 0x3a, 0x0b, 0x1e, 0xc7, 0xf6, 0x8c, 0xcb, 0x5a, 0x32,
0xc2, 0x2c, 0x48, 0xac, 0xc5, 0xd4, 0x51, 0x00, 0xc1, 0xfa, 0x0c, 0x48, 0xb1, 0xce, 0x48, 0x60, 0xac, 0x94, 0x34, 0x07, 0xd0, 0x2f, 0x16, 0x89, 0xb9, 0x99, 0x19, 0x52, 0x21, 0x98, 0x9f, 0x03,
0xfe, 0x84, 0x5e, 0xe8, 0x40, 0x62, 0x89, 0x7d, 0x7d, 0xac, 0x44, 0x5f, 0xc7, 0xd6, 0x77, 0xf8, 0xab, 0xe6, 0x19, 0x19, 0x6c, 0x5c, 0xf1, 0x6b, 0xed, 0x88, 0x3e, 0x71, 0x57, 0x2f, 0x2b, 0xab,
0x2f, 0x2c, 0x15, 0x4a, 0x8d, 0x3d, 0x98, 0x8b, 0xce, 0xa5, 0xe7, 0x82, 0x3d, 0x17, 0x9d, 0x5b, 0xcf, 0xb0, 0xf4, 0x1e, 0x3e, 0x80, 0xad, 0x4a, 0xaa, 0x71, 0x00, 0xeb, 0x62, 0x29, 0x2d, 0xfb,
0x57, 0xa1, 0x97, 0xaf, 0xeb, 0x25, 0x8b, 0xff, 0xa7, 0xf7, 0x93, 0x85, 0x11, 0x47, 0xa9, 0xe2, 0xd6, 0xba, 0x58, 0x9a, 0xb7, 0x61, 0x50, 0xce, 0xeb, 0x0d, 0x8d, 0x3b, 0xd9, 0xfe, 0x64, 0x62,
0x29, 0x13, 0xb5, 0xb1, 0x96, 0x60, 0x31, 0x57, 0x6d, 0xeb, 0x51, 0x7a, 0xef, 0xb4, 0x3a, 0xf8, 0x68, 0x29, 0x95, 0x3c, 0xa5, 0xa2, 0x08, 0x73, 0x0b, 0x36, 0x4b, 0xd9, 0x36, 0xbf, 0xca, 0xf6,
0x29, 0xc0, 0x99, 0x33, 0xf5, 0x86, 0x4e, 0xc4, 0x83, 0xd0, 0x34, 0xae, 0xce, 0x6f, 0x74, 0xb7, 0x9d, 0x65, 0x07, 0x7f, 0x0e, 0xf0, 0xc6, 0xf6, 0x5c, 0xc7, 0x16, 0x41, 0x14, 0x0f, 0x1b, 0xb7,
0x88, 0x4e, 0xea, 0xeb, 0x44, 0x61, 0xcf, 0xd8, 0x58, 0xd7, 0x61, 0xf9, 0x52, 0xa1, 0x70, 0x0d, 0x37, 0x0e, 0x7b, 0xc7, 0x4c, 0x07, 0xf5, 0x55, 0x2a, 0xb0, 0x0a, 0x3a, 0xe6, 0xe7, 0xb0, 0x7d,
0x9a, 0x13, 0xea, 0x8d, 0x27, 0x91, 0xbc, 0x42, 0xdd, 0xd6, 0x3b, 0x6b, 0x33, 0xfd, 0xbb, 0x49, 0x23, 0x51, 0xf8, 0x21, 0xb4, 0xe7, 0xdc, 0x76, 0x78, 0xa4, 0xdb, 0x72, 0x53, 0xbb, 0x38, 0x93,
0x69, 0x2a, 0x4d, 0xdf, 0x35, 0xa0, 0x6d, 0xd3, 0xd0, 0xe7, 0x2c, 0xa4, 0x78, 0x0f, 0x3a, 0xf4, 0x4c, 0x4b, 0x0b, 0xcd, 0xa3, 0xec, 0xf4, 0x69, 0xa6, 0x70, 0x9f, 0x2c, 0xdd, 0xd9, 0x5c, 0x48,
0xdc, 0xa5, 0xaa, 0xc5, 0x8c, 0x02, 0x4a, 0x94, 0xcd, 0x6e, 0xa2, 0x17, 0x08, 0x4b, 0x8d, 0x71, 0xcb, 0xa6, 0xa5, 0x29, 0xf3, 0x87, 0x16, 0x74, 0x2d, 0x1e, 0x87, 0x81, 0x1f, 0x73, 0x7c, 0x08,
0x53, 0xd3, 0x43, 0xb1, 0xe7, 0xb5, 0xd3, 0x2c, 0x3f, 0xdc, 0x48, 0xf8, 0x61, 0xbe, 0xd0, 0x22, 0x06, 0x5f, 0x4e, 0xb8, 0xea, 0xb8, 0x46, 0xa5, 0x68, 0x94, 0xce, 0x69, 0x2a, 0xa7, 0x82, 0xcb,
0xca, 0xb6, 0x40, 0x10, 0x9b, 0x9a, 0x20, 0xea, 0xa5, 0x81, 0x73, 0x0c, 0x71, 0x3f, 0xc7, 0x10, 0x94, 0xf1, 0x48, 0xa3, 0x45, 0x15, 0x02, 0xb4, 0x51, 0x11, 0x2e, 0xee, 0xa6, 0x70, 0xb1, 0x51,
0x8d, 0xd2, 0xeb, 0x57, 0x50, 0xc4, 0xdd, 0x59, 0x8a, 0x68, 0x16, 0x3a, 0x4b, 0x79, 0x96, 0x72, 0xe9, 0x18, 0xa5, 0x5b, 0xc1, 0x8b, 0x23, 0x8d, 0x17, 0xcd, 0x5a, 0xc7, 0x25, 0xc0, 0x78, 0x54,
0xc4, 0xed, 0x19, 0x8e, 0x68, 0x15, 0x5a, 0x43, 0xb9, 0x95, 0x90, 0xc4, 0xad, 0x94, 0x24, 0xda, 0x02, 0x8c, 0x56, 0xed, 0xf6, 0x57, 0x20, 0xc6, 0x67, 0x45, 0xc4, 0x68, 0x57, 0x1a, 0x4d, 0x59,
0x05, 0x5a, 0xd1, 0x2e, 0x45, 0x96, 0xb8, 0x91, 0x00, 0xad, 0x53, 0x9a, 0xb1, 0x02, 0x4d, 0xdc, 0xd6, 0x42, 0xc6, 0x83, 0x02, 0x64, 0x74, 0x2a, 0x9d, 0xa2, 0xcc, 0x6a, 0x30, 0xe3, 0x7e, 0x86,
0xcf, 0xd1, 0x04, 0x94, 0xa6, 0xa1, 0x82, 0x27, 0x3e, 0xcf, 0xf3, 0x84, 0x6a, 0xf6, 0x2b, 0x05, 0x19, 0xdd, 0x0a, 0xca, 0x68, 0x93, 0x2a, 0x68, 0xdc, 0x4d, 0xeb, 0xce, 0xa8, 0x8d, 0x58, 0x05,
0xdf, 0x4a, 0xa2, 0xb8, 0x3b, 0x4b, 0x14, 0x0b, 0xa5, 0x49, 0x7c, 0x3f, 0x53, 0x6c, 0x0a, 0x8c, 0x35, 0x1e, 0x95, 0x50, 0x03, 0x6a, 0xc3, 0xb0, 0x02, 0x36, 0x7e, 0x51, 0x86, 0x0d, 0xd5, 0xfb,
0x17, 0x60, 0x26, 0xba, 0x8c, 0x06, 0x01, 0x0f, 0x74, 0x93, 0xab, 0x8d, 0xb5, 0x21, 0x7a, 0x31, 0xb7, 0x2a, 0xb6, 0x2b, 0x71, 0xe3, 0xb3, 0x22, 0x6e, 0xf4, 0x6b, 0x83, 0xf8, 0x6e, 0xe0, 0x38,
0x03, 0xd7, 0x7b, 0x58, 0x45, 0xf6, 0xe3, 0x0c, 0xb4, 0x2c, 0x2b, 0x73, 0x15, 0xf0, 0x41, 0xd4, 0xa2, 0x92, 0xaf, 0x94, 0x19, 0x35, 0x1d, 0x8f, 0xa2, 0x20, 0xd2, 0x3d, 0xaf, 0x08, 0xf3, 0x90,
0x08, 0x53, 0x7e, 0x72, 0x6d, 0x7d, 0x94, 0xdd, 0x24, 0x47, 0x36, 0x53, 0x3e, 0x4e, 0xc8, 0x66, 0x5a, 0x33, 0x2f, 0xae, 0x77, 0x80, 0x8c, 0x6c, 0xcf, 0x42, 0x69, 0x99, 0x7f, 0x68, 0xe4, 0xb6,
0xca, 0xc7, 0xd6, 0xb7, 0xa2, 0xb5, 0xf3, 0xf0, 0xc0, 0xff, 0x41, 0xdd, 0xe5, 0x43, 0x75, 0x8d, 0x54, 0x3f, 0x88, 0xba, 0xc4, 0x94, 0xa1, 0xaa, 0xa5, 0xbb, 0x60, 0x88, 0x45, 0x1c, 0x8e, 0xa5,
0xde, 0xd6, 0x92, 0x4e, 0xc0, 0x43, 0x3e, 0xa4, 0x2f, 0x2f, 0x7c, 0x6a, 0x4b, 0xa5, 0x38, 0x73, 0x40, 0x15, 0xf5, 0x96, 0x3e, 0xcb, 0xcb, 0x67, 0x2f, 0x2e, 0xc8, 0xce, 0xea, 0x92, 0x86, 0xf4,
0xe8, 0x44, 0x8e, 0x6c, 0x97, 0x05, 0x5b, 0xae, 0x93, 0xf0, 0xf3, 0x59, 0xf8, 0x6f, 0x44, 0x1b, 0xf0, 0x00, 0xc0, 0xb3, 0x63, 0xa1, 0x8f, 0x5e, 0xae, 0xeb, 0x5f, 0xda, 0xb1, 0x90, 0xe7, 0x94,
0xe7, 0x60, 0xf4, 0x21, 0xa3, 0x7f, 0x95, 0x25, 0x46, 0xf1, 0xd9, 0x07, 0x8c, 0xfd, 0xb5, 0x20, 0x36, 0x86, 0x97, 0x92, 0x78, 0x44, 0x65, 0xe0, 0x4f, 0xdd, 0x99, 0xae, 0xed, 0x6d, 0x6d, 0xf0,
0xd3, 0x59, 0x34, 0x7f, 0xc8, 0xe0, 0x2b, 0x59, 0x71, 0x52, 0x1c, 0x5b, 0x7d, 0xc0, 0xcb, 0x00, 0x44, 0x32, 0xa5, 0xb6, 0x56, 0x30, 0x3f, 0xcc, 0x03, 0x53, 0x82, 0x42, 0x2f, 0x98, 0xa5, 0x50,
0x55, 0xdf, 0x8c, 0x3c, 0xf4, 0xf0, 0x63, 0x68, 0x0c, 0xbd, 0xd1, 0x28, 0x34, 0xeb, 0x15, 0xb4, 0xe8, 0x05, 0x33, 0xf3, 0x77, 0x04, 0x3c, 0xe5, 0x6a, 0xc5, 0x9f, 0x42, 0x73, 0x12, 0x38, 0x2a,
0xab, 0xd4, 0xd6, 0x7d, 0xe8, 0xa4, 0x32, 0x41, 0x9f, 0x7e, 0x7c, 0xfc, 0x84, 0x26, 0x64, 0xaf, 0x2a, 0x83, 0xec, 0x0c, 0x4f, 0x02, 0x87, 0xbf, 0xbc, 0x0e, 0xb9, 0x25, 0x85, 0x14, 0x01, 0xc7,
0x77, 0x02, 0x9d, 0x3e, 0x7f, 0x4b, 0x03, 0x79, 0xe5, 0xba, 0xad, 0x36, 0xd7, 0x7e, 0x34, 0xa0, 0x16, 0xb6, 0x3c, 0x68, 0xdf, 0x92, 0xdf, 0xa9, 0xfb, 0x8d, 0xdc, 0xfd, 0x6f, 0x09, 0x55, 0x4a,
0xfb, 0x54, 0xe1, 0x4f, 0xfc, 0x3b, 0x5c, 0x82, 0xee, 0xb3, 0x78, 0x3a, 0xd5, 0x22, 0x52, 0xc3, 0x55, 0xfd, 0x3e, 0xbd, 0xff, 0x3a, 0xcf, 0x93, 0x42, 0xdb, 0xf7, 0xe8, 0xfb, 0x37, 0x04, 0xf5,
0x36, 0xd4, 0x05, 0x6c, 0x89, 0x81, 0x1d, 0x68, 0x48, 0x58, 0x92, 0x39, 0x21, 0x14, 0x80, 0x24, 0xc5, 0xe6, 0x7a, 0x9f, 0xce, 0x77, 0xf2, 0xe4, 0x64, 0x6d, 0x65, 0xee, 0x02, 0xde, 0xec, 0x17,
0xf3, 0xb8, 0x08, 0x9d, 0x14, 0x76, 0xa4, 0x2e, 0xb6, 0x69, 0x3f, 0x90, 0x06, 0x2e, 0x40, 0x3b, 0x75, 0xa3, 0x95, 0x3b, 0x01, 0x3f, 0x82, 0x96, 0xe3, 0x4e, 0xa7, 0xf1, 0xb0, 0xb9, 0xe2, 0x52,
0x41, 0x1b, 0x59, 0xc6, 0x2e, 0xb4, 0x34, 0x38, 0x08, 0x22, 0x40, 0x53, 0xe5, 0x9b, 0xac, 0x88, 0x50, 0x62, 0xf3, 0x0e, 0x74, 0xd3, 0xca, 0xa3, 0x6a, 0x7f, 0xc5, 0xa3, 0x38, 0x45, 0x69, 0xc3,
0xc8, 0xb2, 0xae, 0xa4, 0x2f, 0x02, 0xa4, 0x99, 0x22, 0xab, 0xd8, 0x03, 0xc8, 0x72, 0x44, 0xd6, 0x4a, 0x49, 0xd3, 0x83, 0xcd, 0x52, 0xc1, 0xe1, 0x07, 0xd0, 0x97, 0x55, 0x39, 0x2e, 0xa1, 0x7f,
0x44, 0xc0, 0x24, 0x3b, 0x64, 0xfd, 0xda, 0x0f, 0x0d, 0x68, 0x27, 0x75, 0xc1, 0x26, 0xcc, 0x3d, 0x4f, 0xf2, 0xce, 0x24, 0x0b, 0x7f, 0x02, 0xa0, 0x55, 0x6c, 0x3d, 0xc4, 0xf5, 0x2d, 0x43, 0x29,
0x7f, 0x42, 0x6a, 0xb8, 0x0c, 0x8b, 0x07, 0x2c, 0xa2, 0x01, 0x73, 0xa6, 0xbb, 0xa2, 0x01, 0x89, 0xd8, 0xf1, 0x1c, 0x6f, 0x01, 0xe1, 0x9d, 0x12, 0x6e, 0x48, 0x61, 0xc7, 0x0e, 0x43, 0x12, 0x99,
0x21, 0x44, 0xbb, 0xcc, 0xe5, 0x43, 0x8f, 0x8d, 0x95, 0x68, 0x4e, 0x04, 0xda, 0x71, 0x86, 0xcf, 0xc7, 0x00, 0x79, 0xb5, 0xe2, 0x1d, 0x18, 0x2c, 0xec, 0xa5, 0x6a, 0x82, 0x71, 0xec, 0xbe, 0xe5,
0x38, 0x73, 0x29, 0x99, 0x47, 0x02, 0x0b, 0xaf, 0x98, 0x13, 0x47, 0x13, 0x1e, 0x78, 0xdf, 0xd3, 0x7a, 0xb1, 0xfe, 0xc2, 0x5e, 0xca, 0x0d, 0xbd, 0x70, 0xdf, 0x72, 0xf3, 0x7f, 0xeb, 0xd0, 0x56,
0x21, 0xa9, 0xe3, 0x2a, 0x2c, 0x1f, 0xb0, 0x30, 0x1e, 0x8d, 0x3c, 0xd7, 0xa3, 0x2c, 0x7a, 0x1c, 0xd7, 0x15, 0x79, 0x96, 0x20, 0x35, 0x76, 0x9d, 0xf4, 0x1c, 0x92, 0x3e, 0x77, 0x0a, 0xd7, 0xd5,
0xb3, 0x61, 0x48, 0x1a, 0x88, 0xd0, 0x7b, 0xc5, 0x4e, 0x18, 0x7f, 0xcb, 0xf4, 0x57, 0x8b, 0x34, 0x7a, 0xf1, 0xba, 0xa2, 0x94, 0x08, 0x77, 0xc1, 0xe5, 0x46, 0x9a, 0x96, 0xfc, 0xc6, 0x03, 0xe8,
0xd1, 0x84, 0xfe, 0x8e, 0x13, 0xd2, 0x47, 0xb1, 0x3f, 0xf5, 0x5c, 0x27, 0xa2, 0xdb, 0xc3, 0x61, 0xf8, 0xc9, 0x62, 0x2c, 0x96, 0xb1, 0xec, 0xa4, 0xa6, 0xd5, 0xf6, 0x93, 0xc5, 0xcb, 0x65, 0x8c,
0x40, 0xc3, 0x90, 0x50, 0x11, 0x44, 0x68, 0xf2, 0x67, 0x8f, 0x12, 0x87, 0x5c, 0x7c, 0x4a, 0x43, 0x1f, 0xc1, 0x56, 0xde, 0x96, 0xea, 0x00, 0x2d, 0x79, 0x80, 0xcd, 0xac, 0x0b, 0xe5, 0x09, 0xbf,
0x32, 0xc6, 0x2b, 0xb0, 0x7a, 0x49, 0x23, 0x4f, 0x9e, 0xe0, 0x7f, 0xc0, 0x2c, 0xaa, 0xf6, 0x9c, 0x04, 0x56, 0xd0, 0x0b, 0xed, 0x48, 0xc4, 0xfa, 0x12, 0x48, 0x9b, 0xf8, 0xc2, 0x8e, 0x68, 0x08,
0xf0, 0x30, 0xf0, 0x5c, 0x4a, 0x3c, 0xec, 0x03, 0x51, 0x5a, 0xf9, 0x1d, 0x3e, 0x60, 0x7e, 0x1c, 0xd1, 0xd7, 0xec, 0x20, 0x33, 0x27, 0x7e, 0x8c, 0x87, 0xda, 0x5e, 0xc1, 0xb5, 0x5a, 0xa8, 0x23,
0x91, 0xef, 0x92, 0xf3, 0xb5, 0xf4, 0x79, 0x1c, 0x09, 0xf1, 0x49, 0x41, 0x7c, 0x28, 0xe1, 0x41, 0x17, 0x92, 0x9a, 0x1a, 0xcf, 0x69, 0xa5, 0x1f, 0x81, 0x41, 0x55, 0xa4, 0x54, 0xba, 0x52, 0xa5,
0xa6, 0xb8, 0x0e, 0x2b, 0x33, 0xe2, 0x17, 0xe2, 0xff, 0x89, 0xec, 0x9c, 0x66, 0xf7, 0x55, 0x0a, 0x4b, 0x0c, 0x29, 0xfc, 0x18, 0xb6, 0xf2, 0xfb, 0x5f, 0xa9, 0x18, 0xca, 0x4b, 0xce, 0xbe, 0x91,
0x6f, 0xcc, 0x9c, 0x28, 0x0e, 0x28, 0x61, 0xb8, 0x06, 0x28, 0x34, 0x3a, 0x25, 0xc9, 0x1f, 0xe7, 0x11, 0x28, 0x67, 0xe4, 0x11, 0x6c, 0x96, 0xf6, 0x4a, 0xf0, 0x29, 0x02, 0x61, 0x7b, 0x3a, 0x17,
0xc9, 0x09, 0x5a, 0xae, 0x4f, 0xf0, 0x8b, 0xe2, 0x69, 0x3c, 0xf6, 0x18, 0x79, 0x83, 0xab, 0x40, 0x8a, 0xa0, 0x30, 0x16, 0x92, 0x2d, 0xbf, 0xcd, 0x47, 0x60, 0x64, 0x45, 0x47, 0xf1, 0x0f, 0x93,
0xf6, 0xf8, 0x99, 0x96, 0xee, 0xb2, 0xc8, 0x8b, 0x2e, 0xc8, 0xcf, 0x06, 0xf6, 0x61, 0x29, 0x13, 0xcb, 0x6f, 0x78, 0x3a, 0xeb, 0x68, 0x8a, 0xdc, 0x85, 0xc1, 0xf7, 0x3c, 0xd2, 0x69, 0x51, 0xc4,
0xef, 0x05, 0x3c, 0xf6, 0xc9, 0x2f, 0x06, 0xae, 0x03, 0x66, 0xd2, 0xc3, 0x80, 0xfb, 0x3c, 0x74, 0x27, 0x7f, 0x6a, 0x40, 0xef, 0x99, 0xc2, 0x5b, 0x6a, 0x1f, 0xdc, 0x82, 0xde, 0xb7, 0x89, 0xe7,
0xa6, 0xe4, 0x57, 0x03, 0xd7, 0x60, 0x79, 0x8f, 0x9f, 0xa5, 0x55, 0x50, 0x0e, 0xbf, 0x25, 0x0e, 0x69, 0x16, 0x5b, 0xc3, 0x2e, 0x34, 0x09, 0xa6, 0x59, 0x03, 0x0d, 0x68, 0x49, 0x18, 0x66, 0xeb,
0xa9, 0xfc, 0x29, 0x3d, 0x3d, 0xa6, 0x01, 0xf9, 0xdd, 0xc0, 0x2b, 0xd0, 0x9f, 0x55, 0xa4, 0xb1, 0xc4, 0xa4, 0xba, 0x61, 0x1b, 0xb8, 0x09, 0x46, 0x86, 0x6b, 0xac, 0x49, 0x64, 0x86, 0xff, 0xac,
0xfe, 0x30, 0xf4, 0x8d, 0x52, 0xd5, 0x6b, 0x1e, 0x51, 0xf2, 0x67, 0x22, 0xd6, 0x79, 0xd0, 0x81, 0x85, 0x7d, 0xe8, 0xa6, 0x70, 0xc6, 0xb6, 0xb1, 0x07, 0x1d, 0x8d, 0x3e, 0x0c, 0x11, 0xa0, 0xad,
0xfe, 0x32, 0x70, 0x05, 0x7a, 0x99, 0x58, 0xda, 0xfe, 0x6d, 0xe0, 0x00, 0x56, 0x73, 0x42, 0x8f, 0xa2, 0xcb, 0x76, 0xc8, 0xb3, 0x04, 0x0e, 0xb6, 0x4b, 0x0e, 0xb2, 0x56, 0x64, 0x7b, 0x38, 0x00,
0x8d, 0x0f, 0x45, 0xc7, 0x91, 0x7f, 0x8c, 0xad, 0x77, 0x0d, 0x58, 0x7a, 0xf9, 0xf4, 0xc5, 0xe1, 0xc8, 0x9b, 0x90, 0xed, 0x93, 0xc3, 0xb4, 0xfd, 0xd8, 0xc1, 0x27, 0x7f, 0x6c, 0x41, 0x37, 0x6d,
0xb6, 0xaf, 0x0e, 0x10, 0x94, 0x7d, 0x4b, 0xf5, 0x19, 0x96, 0xbc, 0x57, 0x06, 0x65, 0x43, 0x0a, 0x7c, 0x6c, 0xc3, 0xfa, 0xf3, 0x6f, 0xd8, 0x1a, 0x6e, 0xc3, 0xe6, 0xb9, 0x2f, 0x78, 0xe4, 0xdb,
0x6e, 0xe9, 0x76, 0xc4, 0xb2, 0x67, 0xcb, 0xa0, 0x74, 0x56, 0x11, 0x87, 0xa8, 0x0f, 0xc9, 0xe5, 0xde, 0x29, 0x5d, 0x38, 0xac, 0x41, 0xac, 0x53, 0x7f, 0x12, 0x38, 0xae, 0x3f, 0x53, 0xac, 0x75,
0xd7, 0xcb, 0xa0, 0x6c, 0x60, 0xc1, 0x2f, 0x66, 0xda, 0x1b, 0xab, 0xde, 0x30, 0x83, 0xca, 0xd1, 0x72, 0x74, 0x62, 0x3b, 0xdf, 0x06, 0xfe, 0x84, 0xb3, 0x0d, 0x64, 0xd0, 0xff, 0xce, 0xb7, 0x13,
0x05, 0x1f, 0x64, 0x04, 0x80, 0x15, 0x2f, 0x99, 0x41, 0xd5, 0xf8, 0x82, 0xf7, 0x52, 0xbe, 0xc0, 0x31, 0x0f, 0x22, 0xf7, 0x2d, 0x77, 0x58, 0x13, 0xf7, 0x60, 0xfb, 0xdc, 0x8f, 0x93, 0xe9, 0xd4,
0xf2, 0xf7, 0xcc, 0xa0, 0x62, 0x84, 0x11, 0xb9, 0x51, 0x1f, 0x8a, 0xb2, 0x67, 0xca, 0xa0, 0x74, 0x9d, 0xb8, 0xdc, 0x17, 0x5f, 0x27, 0xbe, 0x13, 0xb3, 0x16, 0x22, 0x0c, 0xbe, 0xf3, 0xaf, 0xfc,
0x2a, 0xc1, 0x3b, 0x09, 0x21, 0x61, 0xe9, 0x53, 0x68, 0x50, 0x3e, 0xfb, 0x88, 0x0c, 0x65, 0xc3, 0xe0, 0x7b, 0x5f, 0x4f, 0x69, 0xac, 0x8d, 0x43, 0xd8, 0x3d, 0xb1, 0x63, 0xfe, 0x55, 0x12, 0x7a,
0x72, 0xd5, 0x1b, 0x67, 0x50, 0x39, 0xd5, 0xe0, 0xf6, 0x2c, 0xc3, 0x61, 0xe5, 0x4b, 0x67, 0x50, 0xee, 0xc4, 0x16, 0xfc, 0xb1, 0xe3, 0x44, 0x3c, 0x8e, 0x19, 0x27, 0x27, 0x24, 0x29, 0xaf, 0x3d,
0x3d, 0xdb, 0x88, 0x24, 0x67, 0xc3, 0x73, 0xf9, 0x7b, 0x67, 0x50, 0x35, 0xde, 0x1c, 0x37, 0xe5, 0x4d, 0x0d, 0x4a, 0xfe, 0x39, 0x8f, 0xd9, 0x0c, 0x6f, 0xc1, 0xde, 0x0d, 0x89, 0x5c, 0x79, 0x8e,
0x3b, 0xfa, 0xf6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xac, 0x2d, 0x4b, 0x5c, 0x0f, 0x00, 0x3f, 0x86, 0x61, 0x55, 0xf4, 0xd4, 0x8e, 0x2f, 0x22, 0x77, 0xc2, 0x99, 0x8b, 0xbb, 0xc0, 0x94,
0x00, 0x54, 0xd6, 0xdb, 0xb9, 0x1f, 0x26, 0x82, 0xfd, 0x3e, 0x5d, 0x5f, 0x73, 0x9f, 0x27, 0x82, 0xd8,
0x57, 0x15, 0xf6, 0x85, 0x2c, 0x0f, 0xe6, 0xe1, 0x01, 0xec, 0x14, 0xd8, 0x2f, 0xe8, 0x7c, 0x14,
0x9d, 0x45, 0xbe, 0x5f, 0x25, 0x70, 0x67, 0xbe, 0x2d, 0x92, 0x88, 0x33, 0x1f, 0xf7, 0x01, 0x49,
0xa2, 0x43, 0x92, 0x1e, 0x3c, 0x48, 0x57, 0xd0, 0x7c, 0xbd, 0x42, 0x58, 0x65, 0x7b, 0xc9, 0xcc,
0xf5, 0xd9, 0x6b, 0xdc, 0x03, 0xf6, 0x34, 0x78, 0xa3, 0xb9, 0xa7, 0xbe, 0x70, 0xc5, 0x35, 0xfb,
0x4b, 0x03, 0x77, 0x61, 0x2b, 0x67, 0x3f, 0x8d, 0x82, 0x24, 0x64, 0x7f, 0x6d, 0xe0, 0x01, 0x60,
0xce, 0xbd, 0x88, 0x82, 0x30, 0x88, 0x6d, 0x8f, 0xfd, 0xad, 0x81, 0xfb, 0xb0, 0xfd, 0x34, 0x78,
0x93, 0x65, 0x41, 0x19, 0xfc, 0x3d, 0x35, 0xc8, 0xf8, 0xcf, 0xf8, 0xe2, 0x92, 0x47, 0xec, 0x1f,
0x0d, 0xbc, 0x05, 0xbb, 0x45, 0x41, 0xe6, 0xeb, 0x9f, 0x0d, 0xbd, 0xa3, 0x4c, 0xf4, 0x2a, 0x10,
0x9c, 0xfd, 0x2b, 0x65, 0xeb, 0x38, 0x68, 0x47, 0xff, 0x6e, 0xe0, 0x0e, 0x0c, 0x72, 0xb6, 0xd4,
0xfd, 0x4f, 0x03, 0x47, 0xb0, 0x57, 0x62, 0xba, 0xfe, 0xec, 0x82, 0x3a, 0x8e, 0xfd, 0xb7, 0x71,
0xfc, 0x43, 0x0b, 0xb6, 0xe8, 0x46, 0x78, 0x1c, 0xaa, 0x05, 0x68, 0x26, 0xb8, 0xaf, 0xfa, 0x0c,
0x6b, 0x9e, 0xeb, 0xa3, 0xba, 0xa1, 0x1c, 0x8f, 0x75, 0x3b, 0x62, 0xdd, 0xab, 0x7d, 0x54, 0x3b,
0x9b, 0xd3, 0x22, 0x6a, 0x6e, 0xba, 0xf9, 0x78, 0x1f, 0xd5, 0x0d, 0xe8, 0xf8, 0x65, 0xa1, 0xbd,
0x71, 0xd5, 0x13, 0x7e, 0xb4, 0x72, 0x54, 0xc7, 0x2f, 0x72, 0x00, 0xc0, 0x15, 0x0f, 0xf9, 0xd1,
0xaa, 0x71, 0x1d, 0x1f, 0x66, 0x78, 0x81, 0xf5, 0xcf, 0xf9, 0xd1, 0x8a, 0x91, 0x9d, 0x62, 0xa3,
0x26, 0x91, 0xba, 0x57, 0xfa, 0xa8, 0x76, 0x0a, 0xc7, 0x4f, 0x53, 0x40, 0xc2, 0xda, 0x7f, 0x02,
0x46, 0xf5, 0xb3, 0x3e, 0x45, 0x28, 0x7f, 0x2b, 0xae, 0x7a, 0xe2, 0x8f, 0x56, 0x4e, 0xf1, 0xf8,
0xb8, 0x88, 0x70, 0xb8, 0xf2, 0xa1, 0x3f, 0x5a, 0x3d, 0xcb, 0x53, 0x90, 0xf3, 0xc7, 0x62, 0xfd,
0x73, 0x7f, 0xb4, 0x6a, 0x9c, 0xbf, 0x6c, 0xcb, 0xbf, 0x91, 0x1e, 0xfc, 0x3f, 0x00, 0x00, 0xff,
0xff, 0x89, 0x5e, 0xff, 0xe3, 0x5b, 0x12, 0x00, 0x00,
} }

View File

@ -124,7 +124,7 @@ message RequestInitChain{
} }
message RequestBeginBlock{ message RequestBeginBlock{
uint64 height = 1; Header header = 1;
} }
message RequestEndBlock{ message RequestEndBlock{
@ -164,7 +164,11 @@ message ResponseFlush{
} }
message ResponseInfo { message ResponseInfo {
string info = 1; string info = 1; // backwards compatible
TMSPInfo tmsp_info = 2;
LastBlockInfo last_block = 3;
ConfigInfo config = 4;
} }
message ResponseSetOption{ message ResponseSetOption{
@ -207,7 +211,42 @@ message ResponseEndBlock{
} }
//---------------------------------------- //----------------------------------------
// Misc types // Info types
message TMSPInfo {
string Version = 1;
}
message LastBlockInfo {
uint64 block_height = 1;
bytes block_hash = 2;
bytes app_hash = 3;
}
message ConfigInfo {
uint64 max_block_size = 1;
}
//----------------------------------------
// Blockchain Types
message Header {
string chain_id = 1;
uint64 height = 2;
uint64 time = 3;
uint64 num_txs = 4;
bytes last_block_hash = 5;
PartSetHeader last_block_parts = 6;
bytes last_commit_hash = 7;
bytes data_hash = 8;
bytes validators_hash = 9;
bytes app_hash = 10;
}
message PartSetHeader {
uint64 total = 1;
bytes hash = 2;
}
message Validator { message Validator {
bytes pubKey = 1; bytes pubKey = 1;