// Code generated by protoc-gen-go. DO NOT EDIT.
// source: blockchain.proto

package types

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

//区块头信息
// 	 version : 版本信息
//	 parentHash :父哈希
// 	 txHash : 交易根哈希
//	 stateHash :状态哈希
// 	 height : 区块高度
//	 blockTime :区块产生时的时标
// 	 txCount : 区块上所有交易个数
//	 difficulty :区块难度系数，
//	 signature :交易签名
type Header struct {
	Version              int64      `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	ParentHash           []byte     `protobuf:"bytes,2,opt,name=parentHash,proto3" json:"parentHash,omitempty"`
	TxHash               []byte     `protobuf:"bytes,3,opt,name=txHash,proto3" json:"txHash,omitempty"`
	StateHash            []byte     `protobuf:"bytes,4,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	Height               int64      `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	BlockTime            int64      `protobuf:"varint,6,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	TxCount              int64      `protobuf:"varint,9,opt,name=txCount,proto3" json:"txCount,omitempty"`
	Hash                 []byte     `protobuf:"bytes,10,opt,name=hash,proto3" json:"hash,omitempty"`
	Difficulty           uint32     `protobuf:"varint,11,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	Signature            *Signature `protobuf:"bytes,8,opt,name=signature,proto3" json:"signature,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

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_e9ac6287ce250c9a, []int{0}
}

func (m *Header) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Header.Unmarshal(m, b)
}
func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Header.Marshal(b, m, deterministic)
}
func (m *Header) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Header.Merge(m, src)
}
func (m *Header) XXX_Size() int {
	return xxx_messageInfo_Header.Size(m)
}
func (m *Header) XXX_DiscardUnknown() {
	xxx_messageInfo_Header.DiscardUnknown(m)
}

var xxx_messageInfo_Header proto.InternalMessageInfo

func (m *Header) GetVersion() int64 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *Header) GetParentHash() []byte {
	if m != nil {
		return m.ParentHash
	}
	return nil
}

func (m *Header) GetTxHash() []byte {
	if m != nil {
		return m.TxHash
	}
	return nil
}

func (m *Header) GetStateHash() []byte {
	if m != nil {
		return m.StateHash
	}
	return nil
}

func (m *Header) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *Header) GetBlockTime() int64 {
	if m != nil {
		return m.BlockTime
	}
	return 0
}

func (m *Header) GetTxCount() int64 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

func (m *Header) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *Header) GetDifficulty() uint32 {
	if m != nil {
		return m.Difficulty
	}
	return 0
}

func (m *Header) GetSignature() *Signature {
	if m != nil {
		return m.Signature
	}
	return nil
}

//  参考Header解释
// mainHash 平行链上使用的字段，代表这个区块的主链hash
type Block struct {
	Version              int64          `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	ParentHash           []byte         `protobuf:"bytes,2,opt,name=parentHash,proto3" json:"parentHash,omitempty"`
	TxHash               []byte         `protobuf:"bytes,3,opt,name=txHash,proto3" json:"txHash,omitempty"`
	StateHash            []byte         `protobuf:"bytes,4,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	Height               int64          `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	BlockTime            int64          `protobuf:"varint,6,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	Difficulty           uint32         `protobuf:"varint,11,opt,name=difficulty,proto3" json:"difficulty,omitempty"`
	MainHash             []byte         `protobuf:"bytes,12,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	MainHeight           int64          `protobuf:"varint,13,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	Signature            *Signature     `protobuf:"bytes,8,opt,name=signature,proto3" json:"signature,omitempty"`
	Txs                  []*Transaction `protobuf:"bytes,7,rep,name=txs,proto3" json:"txs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *Block) Reset()         { *m = Block{} }
func (m *Block) String() string { return proto.CompactTextString(m) }
func (*Block) ProtoMessage()    {}
func (*Block) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{1}
}

func (m *Block) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Block.Unmarshal(m, b)
}
func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Block.Marshal(b, m, deterministic)
}
func (m *Block) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Block.Merge(m, src)
}
func (m *Block) XXX_Size() int {
	return xxx_messageInfo_Block.Size(m)
}
func (m *Block) XXX_DiscardUnknown() {
	xxx_messageInfo_Block.DiscardUnknown(m)
}

var xxx_messageInfo_Block proto.InternalMessageInfo

func (m *Block) GetVersion() int64 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *Block) GetParentHash() []byte {
	if m != nil {
		return m.ParentHash
	}
	return nil
}

func (m *Block) GetTxHash() []byte {
	if m != nil {
		return m.TxHash
	}
	return nil
}

func (m *Block) GetStateHash() []byte {
	if m != nil {
		return m.StateHash
	}
	return nil
}

func (m *Block) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *Block) GetBlockTime() int64 {
	if m != nil {
		return m.BlockTime
	}
	return 0
}

func (m *Block) GetDifficulty() uint32 {
	if m != nil {
		return m.Difficulty
	}
	return 0
}

func (m *Block) GetMainHash() []byte {
	if m != nil {
		return m.MainHash
	}
	return nil
}

func (m *Block) GetMainHeight() int64 {
	if m != nil {
		return m.MainHeight
	}
	return 0
}

func (m *Block) GetSignature() *Signature {
	if m != nil {
		return m.Signature
	}
	return nil
}

func (m *Block) GetTxs() []*Transaction {
	if m != nil {
		return m.Txs
	}
	return nil
}

type Blocks struct {
	Items                []*Block `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Blocks) Reset()         { *m = Blocks{} }
func (m *Blocks) String() string { return proto.CompactTextString(m) }
func (*Blocks) ProtoMessage()    {}
func (*Blocks) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{2}
}

func (m *Blocks) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Blocks.Unmarshal(m, b)
}
func (m *Blocks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Blocks.Marshal(b, m, deterministic)
}
func (m *Blocks) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Blocks.Merge(m, src)
}
func (m *Blocks) XXX_Size() int {
	return xxx_messageInfo_Blocks.Size(m)
}
func (m *Blocks) XXX_DiscardUnknown() {
	xxx_messageInfo_Blocks.DiscardUnknown(m)
}

var xxx_messageInfo_Blocks proto.InternalMessageInfo

func (m *Blocks) GetItems() []*Block {
	if m != nil {
		return m.Items
	}
	return nil
}

type BlockSeqCB struct {
	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	URL                  string   `protobuf:"bytes,2,opt,name=URL,proto3" json:"URL,omitempty"`
	Encode               string   `protobuf:"bytes,3,opt,name=encode,proto3" json:"encode,omitempty"`
	IsHeader             bool     `protobuf:"varint,4,opt,name=isHeader,proto3" json:"isHeader,omitempty"`
	LastSequence         int64    `protobuf:"varint,5,opt,name=lastSequence,proto3" json:"lastSequence,omitempty"`
	LastHeight           int64    `protobuf:"varint,6,opt,name=lastHeight,proto3" json:"lastHeight,omitempty"`
	LastBlockHash        string   `protobuf:"bytes,7,opt,name=lastBlockHash,proto3" json:"lastBlockHash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockSeqCB) Reset()         { *m = BlockSeqCB{} }
func (m *BlockSeqCB) String() string { return proto.CompactTextString(m) }
func (*BlockSeqCB) ProtoMessage()    {}
func (*BlockSeqCB) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{3}
}

func (m *BlockSeqCB) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSeqCB.Unmarshal(m, b)
}
func (m *BlockSeqCB) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSeqCB.Marshal(b, m, deterministic)
}
func (m *BlockSeqCB) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSeqCB.Merge(m, src)
}
func (m *BlockSeqCB) XXX_Size() int {
	return xxx_messageInfo_BlockSeqCB.Size(m)
}
func (m *BlockSeqCB) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSeqCB.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSeqCB proto.InternalMessageInfo

func (m *BlockSeqCB) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *BlockSeqCB) GetURL() string {
	if m != nil {
		return m.URL
	}
	return ""
}

func (m *BlockSeqCB) GetEncode() string {
	if m != nil {
		return m.Encode
	}
	return ""
}

func (m *BlockSeqCB) GetIsHeader() bool {
	if m != nil {
		return m.IsHeader
	}
	return false
}

func (m *BlockSeqCB) GetLastSequence() int64 {
	if m != nil {
		return m.LastSequence
	}
	return 0
}

func (m *BlockSeqCB) GetLastHeight() int64 {
	if m != nil {
		return m.LastHeight
	}
	return 0
}

func (m *BlockSeqCB) GetLastBlockHash() string {
	if m != nil {
		return m.LastBlockHash
	}
	return ""
}

type BlockSeqCBs struct {
	Items                []*BlockSeqCB `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *BlockSeqCBs) Reset()         { *m = BlockSeqCBs{} }
func (m *BlockSeqCBs) String() string { return proto.CompactTextString(m) }
func (*BlockSeqCBs) ProtoMessage()    {}
func (*BlockSeqCBs) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{4}
}

func (m *BlockSeqCBs) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSeqCBs.Unmarshal(m, b)
}
func (m *BlockSeqCBs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSeqCBs.Marshal(b, m, deterministic)
}
func (m *BlockSeqCBs) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSeqCBs.Merge(m, src)
}
func (m *BlockSeqCBs) XXX_Size() int {
	return xxx_messageInfo_BlockSeqCBs.Size(m)
}
func (m *BlockSeqCBs) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSeqCBs.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSeqCBs proto.InternalMessageInfo

func (m *BlockSeqCBs) GetItems() []*BlockSeqCB {
	if m != nil {
		return m.Items
	}
	return nil
}

type BlockSeq struct {
	Num                  int64          `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"`
	Seq                  *BlockSequence `protobuf:"bytes,2,opt,name=seq,proto3" json:"seq,omitempty"`
	Detail               *BlockDetail   `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *BlockSeq) Reset()         { *m = BlockSeq{} }
func (m *BlockSeq) String() string { return proto.CompactTextString(m) }
func (*BlockSeq) ProtoMessage()    {}
func (*BlockSeq) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{5}
}

func (m *BlockSeq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSeq.Unmarshal(m, b)
}
func (m *BlockSeq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSeq.Marshal(b, m, deterministic)
}
func (m *BlockSeq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSeq.Merge(m, src)
}
func (m *BlockSeq) XXX_Size() int {
	return xxx_messageInfo_BlockSeq.Size(m)
}
func (m *BlockSeq) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSeq.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSeq proto.InternalMessageInfo

func (m *BlockSeq) GetNum() int64 {
	if m != nil {
		return m.Num
	}
	return 0
}

func (m *BlockSeq) GetSeq() *BlockSequence {
	if m != nil {
		return m.Seq
	}
	return nil
}

func (m *BlockSeq) GetDetail() *BlockDetail {
	if m != nil {
		return m.Detail
	}
	return nil
}

type BlockSeqs struct {
	Seqs                 []*BlockSeq `protobuf:"bytes,1,rep,name=seqs,proto3" json:"seqs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *BlockSeqs) Reset()         { *m = BlockSeqs{} }
func (m *BlockSeqs) String() string { return proto.CompactTextString(m) }
func (*BlockSeqs) ProtoMessage()    {}
func (*BlockSeqs) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{6}
}

func (m *BlockSeqs) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSeqs.Unmarshal(m, b)
}
func (m *BlockSeqs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSeqs.Marshal(b, m, deterministic)
}
func (m *BlockSeqs) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSeqs.Merge(m, src)
}
func (m *BlockSeqs) XXX_Size() int {
	return xxx_messageInfo_BlockSeqs.Size(m)
}
func (m *BlockSeqs) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSeqs.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSeqs proto.InternalMessageInfo

func (m *BlockSeqs) GetSeqs() []*BlockSeq {
	if m != nil {
		return m.Seqs
	}
	return nil
}

//节点ID以及对应的Block
type BlockPid struct {
	Pid                  string   `protobuf:"bytes,1,opt,name=pid,proto3" json:"pid,omitempty"`
	Block                *Block   `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockPid) Reset()         { *m = BlockPid{} }
func (m *BlockPid) String() string { return proto.CompactTextString(m) }
func (*BlockPid) ProtoMessage()    {}
func (*BlockPid) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{7}
}

func (m *BlockPid) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockPid.Unmarshal(m, b)
}
func (m *BlockPid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockPid.Marshal(b, m, deterministic)
}
func (m *BlockPid) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockPid.Merge(m, src)
}
func (m *BlockPid) XXX_Size() int {
	return xxx_messageInfo_BlockPid.Size(m)
}
func (m *BlockPid) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockPid.DiscardUnknown(m)
}

var xxx_messageInfo_BlockPid proto.InternalMessageInfo

func (m *BlockPid) GetPid() string {
	if m != nil {
		return m.Pid
	}
	return ""
}

func (m *BlockPid) GetBlock() *Block {
	if m != nil {
		return m.Block
	}
	return nil
}

// resp
type BlockDetails struct {
	Items                []*BlockDetail `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *BlockDetails) Reset()         { *m = BlockDetails{} }
func (m *BlockDetails) String() string { return proto.CompactTextString(m) }
func (*BlockDetails) ProtoMessage()    {}
func (*BlockDetails) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{8}
}

func (m *BlockDetails) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockDetails.Unmarshal(m, b)
}
func (m *BlockDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockDetails.Marshal(b, m, deterministic)
}
func (m *BlockDetails) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockDetails.Merge(m, src)
}
func (m *BlockDetails) XXX_Size() int {
	return xxx_messageInfo_BlockDetails.Size(m)
}
func (m *BlockDetails) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockDetails.DiscardUnknown(m)
}

var xxx_messageInfo_BlockDetails proto.InternalMessageInfo

func (m *BlockDetails) GetItems() []*BlockDetail {
	if m != nil {
		return m.Items
	}
	return nil
}

// resp
type Headers struct {
	Items                []*Header `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *Headers) Reset()         { *m = Headers{} }
func (m *Headers) String() string { return proto.CompactTextString(m) }
func (*Headers) ProtoMessage()    {}
func (*Headers) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{9}
}

func (m *Headers) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Headers.Unmarshal(m, b)
}
func (m *Headers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Headers.Marshal(b, m, deterministic)
}
func (m *Headers) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Headers.Merge(m, src)
}
func (m *Headers) XXX_Size() int {
	return xxx_messageInfo_Headers.Size(m)
}
func (m *Headers) XXX_DiscardUnknown() {
	xxx_messageInfo_Headers.DiscardUnknown(m)
}

var xxx_messageInfo_Headers proto.InternalMessageInfo

func (m *Headers) GetItems() []*Header {
	if m != nil {
		return m.Items
	}
	return nil
}

type HeadersPid struct {
	Pid                  string   `protobuf:"bytes,1,opt,name=pid,proto3" json:"pid,omitempty"`
	Headers              *Headers `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *HeadersPid) Reset()         { *m = HeadersPid{} }
func (m *HeadersPid) String() string { return proto.CompactTextString(m) }
func (*HeadersPid) ProtoMessage()    {}
func (*HeadersPid) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{10}
}

func (m *HeadersPid) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeadersPid.Unmarshal(m, b)
}
func (m *HeadersPid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeadersPid.Marshal(b, m, deterministic)
}
func (m *HeadersPid) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeadersPid.Merge(m, src)
}
func (m *HeadersPid) XXX_Size() int {
	return xxx_messageInfo_HeadersPid.Size(m)
}
func (m *HeadersPid) XXX_DiscardUnknown() {
	xxx_messageInfo_HeadersPid.DiscardUnknown(m)
}

var xxx_messageInfo_HeadersPid proto.InternalMessageInfo

func (m *HeadersPid) GetPid() string {
	if m != nil {
		return m.Pid
	}
	return ""
}

func (m *HeadersPid) GetHeaders() *Headers {
	if m != nil {
		return m.Headers
	}
	return nil
}

//区块视图
// 	 head : 区块头信息
//	 txCount :区块上交易个数
// 	 txHashes : 区块上交易的哈希列表
type BlockOverview struct {
	Head                 *Header  `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"`
	TxCount              int64    `protobuf:"varint,2,opt,name=txCount,proto3" json:"txCount,omitempty"`
	TxHashes             [][]byte `protobuf:"bytes,3,rep,name=txHashes,proto3" json:"txHashes,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockOverview) Reset()         { *m = BlockOverview{} }
func (m *BlockOverview) String() string { return proto.CompactTextString(m) }
func (*BlockOverview) ProtoMessage()    {}
func (*BlockOverview) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{11}
}

func (m *BlockOverview) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockOverview.Unmarshal(m, b)
}
func (m *BlockOverview) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockOverview.Marshal(b, m, deterministic)
}
func (m *BlockOverview) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockOverview.Merge(m, src)
}
func (m *BlockOverview) XXX_Size() int {
	return xxx_messageInfo_BlockOverview.Size(m)
}
func (m *BlockOverview) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockOverview.DiscardUnknown(m)
}

var xxx_messageInfo_BlockOverview proto.InternalMessageInfo

func (m *BlockOverview) GetHead() *Header {
	if m != nil {
		return m.Head
	}
	return nil
}

func (m *BlockOverview) GetTxCount() int64 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

func (m *BlockOverview) GetTxHashes() [][]byte {
	if m != nil {
		return m.TxHashes
	}
	return nil
}

//区块详细信息
// 	 block : 区块信息
//	 receipts :区块上所有交易的收据信息列表
type BlockDetail struct {
	Block                *Block         `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"`
	Receipts             []*ReceiptData `protobuf:"bytes,2,rep,name=receipts,proto3" json:"receipts,omitempty"`
	KV                   []*KeyValue    `protobuf:"bytes,3,rep,name=KV,proto3" json:"KV,omitempty"`
	PrevStatusHash       []byte         `protobuf:"bytes,4,opt,name=prevStatusHash,proto3" json:"prevStatusHash,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *BlockDetail) Reset()         { *m = BlockDetail{} }
func (m *BlockDetail) String() string { return proto.CompactTextString(m) }
func (*BlockDetail) ProtoMessage()    {}
func (*BlockDetail) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{12}
}

func (m *BlockDetail) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockDetail.Unmarshal(m, b)
}
func (m *BlockDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockDetail.Marshal(b, m, deterministic)
}
func (m *BlockDetail) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockDetail.Merge(m, src)
}
func (m *BlockDetail) XXX_Size() int {
	return xxx_messageInfo_BlockDetail.Size(m)
}
func (m *BlockDetail) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockDetail.DiscardUnknown(m)
}

var xxx_messageInfo_BlockDetail proto.InternalMessageInfo

func (m *BlockDetail) GetBlock() *Block {
	if m != nil {
		return m.Block
	}
	return nil
}

func (m *BlockDetail) GetReceipts() []*ReceiptData {
	if m != nil {
		return m.Receipts
	}
	return nil
}

func (m *BlockDetail) GetKV() []*KeyValue {
	if m != nil {
		return m.KV
	}
	return nil
}

func (m *BlockDetail) GetPrevStatusHash() []byte {
	if m != nil {
		return m.PrevStatusHash
	}
	return nil
}

type Receipts struct {
	Receipts             []*Receipt `protobuf:"bytes,1,rep,name=receipts,proto3" json:"receipts,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

func (m *Receipts) Reset()         { *m = Receipts{} }
func (m *Receipts) String() string { return proto.CompactTextString(m) }
func (*Receipts) ProtoMessage()    {}
func (*Receipts) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{13}
}

func (m *Receipts) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Receipts.Unmarshal(m, b)
}
func (m *Receipts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Receipts.Marshal(b, m, deterministic)
}
func (m *Receipts) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Receipts.Merge(m, src)
}
func (m *Receipts) XXX_Size() int {
	return xxx_messageInfo_Receipts.Size(m)
}
func (m *Receipts) XXX_DiscardUnknown() {
	xxx_messageInfo_Receipts.DiscardUnknown(m)
}

var xxx_messageInfo_Receipts proto.InternalMessageInfo

func (m *Receipts) GetReceipts() []*Receipt {
	if m != nil {
		return m.Receipts
	}
	return nil
}

type ReceiptCheckTxList struct {
	Errs                 []string `protobuf:"bytes,1,rep,name=errs,proto3" json:"errs,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReceiptCheckTxList) Reset()         { *m = ReceiptCheckTxList{} }
func (m *ReceiptCheckTxList) String() string { return proto.CompactTextString(m) }
func (*ReceiptCheckTxList) ProtoMessage()    {}
func (*ReceiptCheckTxList) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{14}
}

func (m *ReceiptCheckTxList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReceiptCheckTxList.Unmarshal(m, b)
}
func (m *ReceiptCheckTxList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReceiptCheckTxList.Marshal(b, m, deterministic)
}
func (m *ReceiptCheckTxList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReceiptCheckTxList.Merge(m, src)
}
func (m *ReceiptCheckTxList) XXX_Size() int {
	return xxx_messageInfo_ReceiptCheckTxList.Size(m)
}
func (m *ReceiptCheckTxList) XXX_DiscardUnknown() {
	xxx_messageInfo_ReceiptCheckTxList.DiscardUnknown(m)
}

var xxx_messageInfo_ReceiptCheckTxList proto.InternalMessageInfo

func (m *ReceiptCheckTxList) GetErrs() []string {
	if m != nil {
		return m.Errs
	}
	return nil
}

//区块链状态
// 	 currentHeight : 区块最新高度
//	 mempoolSize :内存池大小
// 	 msgQueueSize : 消息队列大小
type ChainStatus struct {
	CurrentHeight        int64    `protobuf:"varint,1,opt,name=currentHeight,proto3" json:"currentHeight,omitempty"`
	MempoolSize          int64    `protobuf:"varint,2,opt,name=mempoolSize,proto3" json:"mempoolSize,omitempty"`
	MsgQueueSize         int64    `protobuf:"varint,3,opt,name=msgQueueSize,proto3" json:"msgQueueSize,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ChainStatus) Reset()         { *m = ChainStatus{} }
func (m *ChainStatus) String() string { return proto.CompactTextString(m) }
func (*ChainStatus) ProtoMessage()    {}
func (*ChainStatus) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{15}
}

func (m *ChainStatus) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ChainStatus.Unmarshal(m, b)
}
func (m *ChainStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ChainStatus.Marshal(b, m, deterministic)
}
func (m *ChainStatus) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ChainStatus.Merge(m, src)
}
func (m *ChainStatus) XXX_Size() int {
	return xxx_messageInfo_ChainStatus.Size(m)
}
func (m *ChainStatus) XXX_DiscardUnknown() {
	xxx_messageInfo_ChainStatus.DiscardUnknown(m)
}

var xxx_messageInfo_ChainStatus proto.InternalMessageInfo

func (m *ChainStatus) GetCurrentHeight() int64 {
	if m != nil {
		return m.CurrentHeight
	}
	return 0
}

func (m *ChainStatus) GetMempoolSize() int64 {
	if m != nil {
		return m.MempoolSize
	}
	return 0
}

func (m *ChainStatus) GetMsgQueueSize() int64 {
	if m != nil {
		return m.MsgQueueSize
	}
	return 0
}

//获取区块信息
// 	 start : 获取区块的开始高度
//	 end :获取区块的结束高度
// 	 Isdetail : 是否需要获取区块的详细信息
// 	 pid : peer列表
type ReqBlocks struct {
	Start                int64    `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"`
	End                  int64    `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
	IsDetail             bool     `protobuf:"varint,3,opt,name=isDetail,proto3" json:"isDetail,omitempty"`
	Pid                  []string `protobuf:"bytes,4,rep,name=pid,proto3" json:"pid,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReqBlocks) Reset()         { *m = ReqBlocks{} }
func (m *ReqBlocks) String() string { return proto.CompactTextString(m) }
func (*ReqBlocks) ProtoMessage()    {}
func (*ReqBlocks) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{16}
}

func (m *ReqBlocks) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReqBlocks.Unmarshal(m, b)
}
func (m *ReqBlocks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReqBlocks.Marshal(b, m, deterministic)
}
func (m *ReqBlocks) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReqBlocks.Merge(m, src)
}
func (m *ReqBlocks) XXX_Size() int {
	return xxx_messageInfo_ReqBlocks.Size(m)
}
func (m *ReqBlocks) XXX_DiscardUnknown() {
	xxx_messageInfo_ReqBlocks.DiscardUnknown(m)
}

var xxx_messageInfo_ReqBlocks proto.InternalMessageInfo

func (m *ReqBlocks) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *ReqBlocks) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *ReqBlocks) GetIsDetail() bool {
	if m != nil {
		return m.IsDetail
	}
	return false
}

func (m *ReqBlocks) GetPid() []string {
	if m != nil {
		return m.Pid
	}
	return nil
}

type MempoolSize struct {
	Size                 int64    `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MempoolSize) Reset()         { *m = MempoolSize{} }
func (m *MempoolSize) String() string { return proto.CompactTextString(m) }
func (*MempoolSize) ProtoMessage()    {}
func (*MempoolSize) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{17}
}

func (m *MempoolSize) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MempoolSize.Unmarshal(m, b)
}
func (m *MempoolSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MempoolSize.Marshal(b, m, deterministic)
}
func (m *MempoolSize) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MempoolSize.Merge(m, src)
}
func (m *MempoolSize) XXX_Size() int {
	return xxx_messageInfo_MempoolSize.Size(m)
}
func (m *MempoolSize) XXX_DiscardUnknown() {
	xxx_messageInfo_MempoolSize.DiscardUnknown(m)
}

var xxx_messageInfo_MempoolSize proto.InternalMessageInfo

func (m *MempoolSize) GetSize() int64 {
	if m != nil {
		return m.Size
	}
	return 0
}

type ReplyBlockHeight struct {
	Height               int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReplyBlockHeight) Reset()         { *m = ReplyBlockHeight{} }
func (m *ReplyBlockHeight) String() string { return proto.CompactTextString(m) }
func (*ReplyBlockHeight) ProtoMessage()    {}
func (*ReplyBlockHeight) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{18}
}

func (m *ReplyBlockHeight) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReplyBlockHeight.Unmarshal(m, b)
}
func (m *ReplyBlockHeight) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReplyBlockHeight.Marshal(b, m, deterministic)
}
func (m *ReplyBlockHeight) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReplyBlockHeight.Merge(m, src)
}
func (m *ReplyBlockHeight) XXX_Size() int {
	return xxx_messageInfo_ReplyBlockHeight.Size(m)
}
func (m *ReplyBlockHeight) XXX_DiscardUnknown() {
	xxx_messageInfo_ReplyBlockHeight.DiscardUnknown(m)
}

var xxx_messageInfo_ReplyBlockHeight proto.InternalMessageInfo

func (m *ReplyBlockHeight) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

//区块体信息
// 	 txs : 区块上所有交易列表
//	 receipts :区块上所有交易的收据信息列表
// 	 mainHash : 主链区块hash，平行链使用
//	 mainHeight :主链区块高度，平行链使用
// 	 hash : 本链区块hash
//	 height :本链区块高度
type BlockBody struct {
	Txs                  []*Transaction `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"`
	Receipts             []*ReceiptData `protobuf:"bytes,2,rep,name=receipts,proto3" json:"receipts,omitempty"`
	MainHash             []byte         `protobuf:"bytes,3,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	MainHeight           int64          `protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	Hash                 []byte         `protobuf:"bytes,5,opt,name=hash,proto3" json:"hash,omitempty"`
	Height               int64          `protobuf:"varint,6,opt,name=height,proto3" json:"height,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *BlockBody) Reset()         { *m = BlockBody{} }
func (m *BlockBody) String() string { return proto.CompactTextString(m) }
func (*BlockBody) ProtoMessage()    {}
func (*BlockBody) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{19}
}

func (m *BlockBody) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockBody.Unmarshal(m, b)
}
func (m *BlockBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockBody.Marshal(b, m, deterministic)
}
func (m *BlockBody) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockBody.Merge(m, src)
}
func (m *BlockBody) XXX_Size() int {
	return xxx_messageInfo_BlockBody.Size(m)
}
func (m *BlockBody) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockBody.DiscardUnknown(m)
}

var xxx_messageInfo_BlockBody proto.InternalMessageInfo

func (m *BlockBody) GetTxs() []*Transaction {
	if m != nil {
		return m.Txs
	}
	return nil
}

func (m *BlockBody) GetReceipts() []*ReceiptData {
	if m != nil {
		return m.Receipts
	}
	return nil
}

func (m *BlockBody) GetMainHash() []byte {
	if m != nil {
		return m.MainHash
	}
	return nil
}

func (m *BlockBody) GetMainHeight() int64 {
	if m != nil {
		return m.MainHeight
	}
	return 0
}

func (m *BlockBody) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *BlockBody) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

//区块回执
//	 receipts :区块上所有交易的收据信息列表
// 	 hash : 本链区块hash
//	 height :本链区块高度
type BlockReceipt struct {
	Receipts             []*ReceiptData `protobuf:"bytes,1,rep,name=receipts,proto3" json:"receipts,omitempty"`
	Hash                 []byte         `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	Height               int64          `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *BlockReceipt) Reset()         { *m = BlockReceipt{} }
func (m *BlockReceipt) String() string { return proto.CompactTextString(m) }
func (*BlockReceipt) ProtoMessage()    {}
func (*BlockReceipt) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{20}
}

func (m *BlockReceipt) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockReceipt.Unmarshal(m, b)
}
func (m *BlockReceipt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockReceipt.Marshal(b, m, deterministic)
}
func (m *BlockReceipt) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockReceipt.Merge(m, src)
}
func (m *BlockReceipt) XXX_Size() int {
	return xxx_messageInfo_BlockReceipt.Size(m)
}
func (m *BlockReceipt) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockReceipt.DiscardUnknown(m)
}

var xxx_messageInfo_BlockReceipt proto.InternalMessageInfo

func (m *BlockReceipt) GetReceipts() []*ReceiptData {
	if m != nil {
		return m.Receipts
	}
	return nil
}

func (m *BlockReceipt) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *BlockReceipt) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

//  区块追赶主链状态，用于判断本节点区块是否已经同步好
type IsCaughtUp struct {
	Iscaughtup           bool     `protobuf:"varint,1,opt,name=Iscaughtup,proto3" json:"Iscaughtup,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *IsCaughtUp) Reset()         { *m = IsCaughtUp{} }
func (m *IsCaughtUp) String() string { return proto.CompactTextString(m) }
func (*IsCaughtUp) ProtoMessage()    {}
func (*IsCaughtUp) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{21}
}

func (m *IsCaughtUp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_IsCaughtUp.Unmarshal(m, b)
}
func (m *IsCaughtUp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_IsCaughtUp.Marshal(b, m, deterministic)
}
func (m *IsCaughtUp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_IsCaughtUp.Merge(m, src)
}
func (m *IsCaughtUp) XXX_Size() int {
	return xxx_messageInfo_IsCaughtUp.Size(m)
}
func (m *IsCaughtUp) XXX_DiscardUnknown() {
	xxx_messageInfo_IsCaughtUp.DiscardUnknown(m)
}

var xxx_messageInfo_IsCaughtUp proto.InternalMessageInfo

func (m *IsCaughtUp) GetIscaughtup() bool {
	if m != nil {
		return m.Iscaughtup
	}
	return false
}

//  ntp时钟状态
type IsNtpClockSync struct {
	Isntpclocksync       bool     `protobuf:"varint,1,opt,name=isntpclocksync,proto3" json:"isntpclocksync,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *IsNtpClockSync) Reset()         { *m = IsNtpClockSync{} }
func (m *IsNtpClockSync) String() string { return proto.CompactTextString(m) }
func (*IsNtpClockSync) ProtoMessage()    {}
func (*IsNtpClockSync) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{22}
}

func (m *IsNtpClockSync) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_IsNtpClockSync.Unmarshal(m, b)
}
func (m *IsNtpClockSync) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_IsNtpClockSync.Marshal(b, m, deterministic)
}
func (m *IsNtpClockSync) XXX_Merge(src proto.Message) {
	xxx_messageInfo_IsNtpClockSync.Merge(m, src)
}
func (m *IsNtpClockSync) XXX_Size() int {
	return xxx_messageInfo_IsNtpClockSync.Size(m)
}
func (m *IsNtpClockSync) XXX_DiscardUnknown() {
	xxx_messageInfo_IsNtpClockSync.DiscardUnknown(m)
}

var xxx_messageInfo_IsNtpClockSync proto.InternalMessageInfo

func (m *IsNtpClockSync) GetIsntpclocksync() bool {
	if m != nil {
		return m.Isntpclocksync
	}
	return false
}

type ChainExecutor struct {
	Driver    string `protobuf:"bytes,1,opt,name=driver,proto3" json:"driver,omitempty"`
	FuncName  string `protobuf:"bytes,2,opt,name=funcName,proto3" json:"funcName,omitempty"`
	StateHash []byte `protobuf:"bytes,3,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	Param     []byte `protobuf:"bytes,4,opt,name=param,proto3" json:"param,omitempty"`
	//扩展字段，用于额外的用途
	Extra                []byte   `protobuf:"bytes,5,opt,name=extra,proto3" json:"extra,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ChainExecutor) Reset()         { *m = ChainExecutor{} }
func (m *ChainExecutor) String() string { return proto.CompactTextString(m) }
func (*ChainExecutor) ProtoMessage()    {}
func (*ChainExecutor) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{23}
}

func (m *ChainExecutor) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ChainExecutor.Unmarshal(m, b)
}
func (m *ChainExecutor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ChainExecutor.Marshal(b, m, deterministic)
}
func (m *ChainExecutor) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ChainExecutor.Merge(m, src)
}
func (m *ChainExecutor) XXX_Size() int {
	return xxx_messageInfo_ChainExecutor.Size(m)
}
func (m *ChainExecutor) XXX_DiscardUnknown() {
	xxx_messageInfo_ChainExecutor.DiscardUnknown(m)
}

var xxx_messageInfo_ChainExecutor proto.InternalMessageInfo

func (m *ChainExecutor) GetDriver() string {
	if m != nil {
		return m.Driver
	}
	return ""
}

func (m *ChainExecutor) GetFuncName() string {
	if m != nil {
		return m.FuncName
	}
	return ""
}

func (m *ChainExecutor) GetStateHash() []byte {
	if m != nil {
		return m.StateHash
	}
	return nil
}

func (m *ChainExecutor) GetParam() []byte {
	if m != nil {
		return m.Param
	}
	return nil
}

func (m *ChainExecutor) GetExtra() []byte {
	if m != nil {
		return m.Extra
	}
	return nil
}

//  通过block hash记录block的操作类型及add/del：1/2
type BlockSequence struct {
	Hash                 []byte   `protobuf:"bytes,1,opt,name=Hash,proto3" json:"Hash,omitempty"`
	Type                 int64    `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockSequence) Reset()         { *m = BlockSequence{} }
func (m *BlockSequence) String() string { return proto.CompactTextString(m) }
func (*BlockSequence) ProtoMessage()    {}
func (*BlockSequence) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{24}
}

func (m *BlockSequence) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSequence.Unmarshal(m, b)
}
func (m *BlockSequence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSequence.Marshal(b, m, deterministic)
}
func (m *BlockSequence) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSequence.Merge(m, src)
}
func (m *BlockSequence) XXX_Size() int {
	return xxx_messageInfo_BlockSequence.Size(m)
}
func (m *BlockSequence) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSequence.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSequence proto.InternalMessageInfo

func (m *BlockSequence) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *BlockSequence) GetType() int64 {
	if m != nil {
		return m.Type
	}
	return 0
}

// resp
type BlockSequences struct {
	Items                []*BlockSequence `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

func (m *BlockSequences) Reset()         { *m = BlockSequences{} }
func (m *BlockSequences) String() string { return proto.CompactTextString(m) }
func (*BlockSequences) ProtoMessage()    {}
func (*BlockSequences) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{25}
}

func (m *BlockSequences) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockSequences.Unmarshal(m, b)
}
func (m *BlockSequences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockSequences.Marshal(b, m, deterministic)
}
func (m *BlockSequences) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockSequences.Merge(m, src)
}
func (m *BlockSequences) XXX_Size() int {
	return xxx_messageInfo_BlockSequences.Size(m)
}
func (m *BlockSequences) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockSequences.DiscardUnknown(m)
}

var xxx_messageInfo_BlockSequences proto.InternalMessageInfo

func (m *BlockSequences) GetItems() []*BlockSequence {
	if m != nil {
		return m.Items
	}
	return nil
}

// AddSeqCallback 推荐的sequence 信息
type Sequence struct {
	Hash                 []byte   `protobuf:"bytes,1,opt,name=Hash,proto3" json:"Hash,omitempty"`
	Type                 int64    `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"`
	Sequence             int64    `protobuf:"varint,3,opt,name=sequence,proto3" json:"sequence,omitempty"`
	Height               int64    `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Sequence) Reset()         { *m = Sequence{} }
func (m *Sequence) String() string { return proto.CompactTextString(m) }
func (*Sequence) ProtoMessage()    {}
func (*Sequence) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{26}
}

func (m *Sequence) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Sequence.Unmarshal(m, b)
}
func (m *Sequence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Sequence.Marshal(b, m, deterministic)
}
func (m *Sequence) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Sequence.Merge(m, src)
}
func (m *Sequence) XXX_Size() int {
	return xxx_messageInfo_Sequence.Size(m)
}
func (m *Sequence) XXX_DiscardUnknown() {
	xxx_messageInfo_Sequence.DiscardUnknown(m)
}

var xxx_messageInfo_Sequence proto.InternalMessageInfo

func (m *Sequence) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *Sequence) GetType() int64 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *Sequence) GetSequence() int64 {
	if m != nil {
		return m.Sequence
	}
	return 0
}

func (m *Sequence) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

// Reply AddSeqCallback
type ReplyAddSeqCallback struct {
	IsOk                 bool        `protobuf:"varint,1,opt,name=isOk,proto3" json:"isOk,omitempty"`
	Msg                  []byte      `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
	Seqs                 []*Sequence `protobuf:"bytes,3,rep,name=seqs,proto3" json:"seqs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *ReplyAddSeqCallback) Reset()         { *m = ReplyAddSeqCallback{} }
func (m *ReplyAddSeqCallback) String() string { return proto.CompactTextString(m) }
func (*ReplyAddSeqCallback) ProtoMessage()    {}
func (*ReplyAddSeqCallback) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{27}
}

func (m *ReplyAddSeqCallback) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReplyAddSeqCallback.Unmarshal(m, b)
}
func (m *ReplyAddSeqCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReplyAddSeqCallback.Marshal(b, m, deterministic)
}
func (m *ReplyAddSeqCallback) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReplyAddSeqCallback.Merge(m, src)
}
func (m *ReplyAddSeqCallback) XXX_Size() int {
	return xxx_messageInfo_ReplyAddSeqCallback.Size(m)
}
func (m *ReplyAddSeqCallback) XXX_DiscardUnknown() {
	xxx_messageInfo_ReplyAddSeqCallback.DiscardUnknown(m)
}

var xxx_messageInfo_ReplyAddSeqCallback proto.InternalMessageInfo

func (m *ReplyAddSeqCallback) GetIsOk() bool {
	if m != nil {
		return m.IsOk
	}
	return false
}

func (m *ReplyAddSeqCallback) GetMsg() []byte {
	if m != nil {
		return m.Msg
	}
	return nil
}

func (m *ReplyAddSeqCallback) GetSeqs() []*Sequence {
	if m != nil {
		return m.Seqs
	}
	return nil
}

//平行链区块详细信息
// 	 blockdetail : 区块详细信息
//	 sequence :区块序列号
//   isSync:写数据库时是否需要刷盘
type ParaChainBlockDetail struct {
	Blockdetail          *BlockDetail `protobuf:"bytes,1,opt,name=blockdetail,proto3" json:"blockdetail,omitempty"`
	Sequence             int64        `protobuf:"varint,2,opt,name=sequence,proto3" json:"sequence,omitempty"`
	IsSync               bool         `protobuf:"varint,3,opt,name=isSync,proto3" json:"isSync,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (m *ParaChainBlockDetail) Reset()         { *m = ParaChainBlockDetail{} }
func (m *ParaChainBlockDetail) String() string { return proto.CompactTextString(m) }
func (*ParaChainBlockDetail) ProtoMessage()    {}
func (*ParaChainBlockDetail) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{28}
}

func (m *ParaChainBlockDetail) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ParaChainBlockDetail.Unmarshal(m, b)
}
func (m *ParaChainBlockDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ParaChainBlockDetail.Marshal(b, m, deterministic)
}
func (m *ParaChainBlockDetail) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ParaChainBlockDetail.Merge(m, src)
}
func (m *ParaChainBlockDetail) XXX_Size() int {
	return xxx_messageInfo_ParaChainBlockDetail.Size(m)
}
func (m *ParaChainBlockDetail) XXX_DiscardUnknown() {
	xxx_messageInfo_ParaChainBlockDetail.DiscardUnknown(m)
}

var xxx_messageInfo_ParaChainBlockDetail proto.InternalMessageInfo

func (m *ParaChainBlockDetail) GetBlockdetail() *BlockDetail {
	if m != nil {
		return m.Blockdetail
	}
	return nil
}

func (m *ParaChainBlockDetail) GetSequence() int64 {
	if m != nil {
		return m.Sequence
	}
	return 0
}

func (m *ParaChainBlockDetail) GetIsSync() bool {
	if m != nil {
		return m.IsSync
	}
	return false
}

// 定义para交易结构
type ParaTxDetails struct {
	Items                []*ParaTxDetail `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *ParaTxDetails) Reset()         { *m = ParaTxDetails{} }
func (m *ParaTxDetails) String() string { return proto.CompactTextString(m) }
func (*ParaTxDetails) ProtoMessage()    {}
func (*ParaTxDetails) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{29}
}

func (m *ParaTxDetails) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ParaTxDetails.Unmarshal(m, b)
}
func (m *ParaTxDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ParaTxDetails.Marshal(b, m, deterministic)
}
func (m *ParaTxDetails) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ParaTxDetails.Merge(m, src)
}
func (m *ParaTxDetails) XXX_Size() int {
	return xxx_messageInfo_ParaTxDetails.Size(m)
}
func (m *ParaTxDetails) XXX_DiscardUnknown() {
	xxx_messageInfo_ParaTxDetails.DiscardUnknown(m)
}

var xxx_messageInfo_ParaTxDetails proto.InternalMessageInfo

func (m *ParaTxDetails) GetItems() []*ParaTxDetail {
	if m != nil {
		return m.Items
	}
	return nil
}

// type:平行链交易所在区块add/del操作，方便平行链回滚
// header:平行链交易所在区块头信息
// txDetails:本区块中指定title平行链的所有交易
// proofs:对应平行链子roothash的存在证明路径
// childHash:此平行链交易的子roothash
// index:对应平行链子roothash在整个区块中的索引
type ParaTxDetail struct {
	Type                 int64       `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Header               *Header     `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"`
	TxDetails            []*TxDetail `protobuf:"bytes,3,rep,name=txDetails,proto3" json:"txDetails,omitempty"`
	ChildHash            []byte      `protobuf:"bytes,4,opt,name=childHash,proto3" json:"childHash,omitempty"`
	Index                uint32      `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"`
	Proofs               [][]byte    `protobuf:"bytes,6,rep,name=proofs,proto3" json:"proofs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *ParaTxDetail) Reset()         { *m = ParaTxDetail{} }
func (m *ParaTxDetail) String() string { return proto.CompactTextString(m) }
func (*ParaTxDetail) ProtoMessage()    {}
func (*ParaTxDetail) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{30}
}

func (m *ParaTxDetail) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ParaTxDetail.Unmarshal(m, b)
}
func (m *ParaTxDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ParaTxDetail.Marshal(b, m, deterministic)
}
func (m *ParaTxDetail) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ParaTxDetail.Merge(m, src)
}
func (m *ParaTxDetail) XXX_Size() int {
	return xxx_messageInfo_ParaTxDetail.Size(m)
}
func (m *ParaTxDetail) XXX_DiscardUnknown() {
	xxx_messageInfo_ParaTxDetail.DiscardUnknown(m)
}

var xxx_messageInfo_ParaTxDetail proto.InternalMessageInfo

func (m *ParaTxDetail) GetType() int64 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *ParaTxDetail) GetHeader() *Header {
	if m != nil {
		return m.Header
	}
	return nil
}

func (m *ParaTxDetail) GetTxDetails() []*TxDetail {
	if m != nil {
		return m.TxDetails
	}
	return nil
}

func (m *ParaTxDetail) GetChildHash() []byte {
	if m != nil {
		return m.ChildHash
	}
	return nil
}

func (m *ParaTxDetail) GetIndex() uint32 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *ParaTxDetail) GetProofs() [][]byte {
	if m != nil {
		return m.Proofs
	}
	return nil
}

//交易的详情：
// index:本交易在block中索引值，用于proof的证明
// tx:本交易内容
// receipt:本交易在主链的执行回执
// proofs:本交易hash在block中merkel中的路径
type TxDetail struct {
	Index                uint32       `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	Tx                   *Transaction `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
	Receipt              *ReceiptData `protobuf:"bytes,3,opt,name=receipt,proto3" json:"receipt,omitempty"`
	Proofs               [][]byte     `protobuf:"bytes,4,rep,name=proofs,proto3" json:"proofs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (m *TxDetail) Reset()         { *m = TxDetail{} }
func (m *TxDetail) String() string { return proto.CompactTextString(m) }
func (*TxDetail) ProtoMessage()    {}
func (*TxDetail) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{31}
}

func (m *TxDetail) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TxDetail.Unmarshal(m, b)
}
func (m *TxDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TxDetail.Marshal(b, m, deterministic)
}
func (m *TxDetail) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TxDetail.Merge(m, src)
}
func (m *TxDetail) XXX_Size() int {
	return xxx_messageInfo_TxDetail.Size(m)
}
func (m *TxDetail) XXX_DiscardUnknown() {
	xxx_messageInfo_TxDetail.DiscardUnknown(m)
}

var xxx_messageInfo_TxDetail proto.InternalMessageInfo

func (m *TxDetail) GetIndex() uint32 {
	if m != nil {
		return m.Index
	}
	return 0
}

func (m *TxDetail) GetTx() *Transaction {
	if m != nil {
		return m.Tx
	}
	return nil
}

func (m *TxDetail) GetReceipt() *ReceiptData {
	if m != nil {
		return m.Receipt
	}
	return nil
}

func (m *TxDetail) GetProofs() [][]byte {
	if m != nil {
		return m.Proofs
	}
	return nil
}

//通过seq区间和title请求平行链的交易
type ReqParaTxByTitle struct {
	Start                int64    `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"`
	End                  int64    `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
	Title                string   `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	IsSeq                bool     `protobuf:"varint,4,opt,name=isSeq,proto3" json:"isSeq,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReqParaTxByTitle) Reset()         { *m = ReqParaTxByTitle{} }
func (m *ReqParaTxByTitle) String() string { return proto.CompactTextString(m) }
func (*ReqParaTxByTitle) ProtoMessage()    {}
func (*ReqParaTxByTitle) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{32}
}

func (m *ReqParaTxByTitle) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReqParaTxByTitle.Unmarshal(m, b)
}
func (m *ReqParaTxByTitle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReqParaTxByTitle.Marshal(b, m, deterministic)
}
func (m *ReqParaTxByTitle) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReqParaTxByTitle.Merge(m, src)
}
func (m *ReqParaTxByTitle) XXX_Size() int {
	return xxx_messageInfo_ReqParaTxByTitle.Size(m)
}
func (m *ReqParaTxByTitle) XXX_DiscardUnknown() {
	xxx_messageInfo_ReqParaTxByTitle.DiscardUnknown(m)
}

var xxx_messageInfo_ReqParaTxByTitle proto.InternalMessageInfo

func (m *ReqParaTxByTitle) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *ReqParaTxByTitle) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *ReqParaTxByTitle) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *ReqParaTxByTitle) GetIsSeq() bool {
	if m != nil {
		return m.IsSeq
	}
	return false
}

//导出block文件头信息
type FileHeader struct {
	StartHeight          int64    `protobuf:"varint,1,opt,name=startHeight,proto3" json:"startHeight,omitempty"`
	Driver               string   `protobuf:"bytes,2,opt,name=driver,proto3" json:"driver,omitempty"`
	Title                string   `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	TestNet              bool     `protobuf:"varint,4,opt,name=testNet,proto3" json:"testNet,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FileHeader) Reset()         { *m = FileHeader{} }
func (m *FileHeader) String() string { return proto.CompactTextString(m) }
func (*FileHeader) ProtoMessage()    {}
func (*FileHeader) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{33}
}

func (m *FileHeader) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FileHeader.Unmarshal(m, b)
}
func (m *FileHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FileHeader.Marshal(b, m, deterministic)
}
func (m *FileHeader) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FileHeader.Merge(m, src)
}
func (m *FileHeader) XXX_Size() int {
	return xxx_messageInfo_FileHeader.Size(m)
}
func (m *FileHeader) XXX_DiscardUnknown() {
	xxx_messageInfo_FileHeader.DiscardUnknown(m)
}

var xxx_messageInfo_FileHeader proto.InternalMessageInfo

func (m *FileHeader) GetStartHeight() int64 {
	if m != nil {
		return m.StartHeight
	}
	return 0
}

func (m *FileHeader) GetDriver() string {
	if m != nil {
		return m.Driver
	}
	return ""
}

func (m *FileHeader) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *FileHeader) GetTestNet() bool {
	if m != nil {
		return m.TestNet
	}
	return false
}

//存储block高度和hash
type EndBlock struct {
	Height               int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Hash                 []byte   `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EndBlock) Reset()         { *m = EndBlock{} }
func (m *EndBlock) String() string { return proto.CompactTextString(m) }
func (*EndBlock) ProtoMessage()    {}
func (*EndBlock) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{34}
}

func (m *EndBlock) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EndBlock.Unmarshal(m, b)
}
func (m *EndBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EndBlock.Marshal(b, m, deterministic)
}
func (m *EndBlock) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EndBlock.Merge(m, src)
}
func (m *EndBlock) XXX_Size() int {
	return xxx_messageInfo_EndBlock.Size(m)
}
func (m *EndBlock) XXX_DiscardUnknown() {
	xxx_messageInfo_EndBlock.DiscardUnknown(m)
}

var xxx_messageInfo_EndBlock proto.InternalMessageInfo

func (m *EndBlock) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *EndBlock) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

//通过seq获取区块的header信息
type HeaderSeq struct {
	Num                  int64          `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"`
	Seq                  *BlockSequence `protobuf:"bytes,2,opt,name=seq,proto3" json:"seq,omitempty"`
	Header               *Header        `protobuf:"bytes,3,opt,name=header,proto3" json:"header,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *HeaderSeq) Reset()         { *m = HeaderSeq{} }
func (m *HeaderSeq) String() string { return proto.CompactTextString(m) }
func (*HeaderSeq) ProtoMessage()    {}
func (*HeaderSeq) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{35}
}

func (m *HeaderSeq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeaderSeq.Unmarshal(m, b)
}
func (m *HeaderSeq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeaderSeq.Marshal(b, m, deterministic)
}
func (m *HeaderSeq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeaderSeq.Merge(m, src)
}
func (m *HeaderSeq) XXX_Size() int {
	return xxx_messageInfo_HeaderSeq.Size(m)
}
func (m *HeaderSeq) XXX_DiscardUnknown() {
	xxx_messageInfo_HeaderSeq.DiscardUnknown(m)
}

var xxx_messageInfo_HeaderSeq proto.InternalMessageInfo

func (m *HeaderSeq) GetNum() int64 {
	if m != nil {
		return m.Num
	}
	return 0
}

func (m *HeaderSeq) GetSeq() *BlockSequence {
	if m != nil {
		return m.Seq
	}
	return nil
}

func (m *HeaderSeq) GetHeader() *Header {
	if m != nil {
		return m.Header
	}
	return nil
}

//批量推送区块的header信息
type HeaderSeqs struct {
	Seqs                 []*HeaderSeq `protobuf:"bytes,1,rep,name=seqs,proto3" json:"seqs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (m *HeaderSeqs) Reset()         { *m = HeaderSeqs{} }
func (m *HeaderSeqs) String() string { return proto.CompactTextString(m) }
func (*HeaderSeqs) ProtoMessage()    {}
func (*HeaderSeqs) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{36}
}

func (m *HeaderSeqs) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeaderSeqs.Unmarshal(m, b)
}
func (m *HeaderSeqs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeaderSeqs.Marshal(b, m, deterministic)
}
func (m *HeaderSeqs) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeaderSeqs.Merge(m, src)
}
func (m *HeaderSeqs) XXX_Size() int {
	return xxx_messageInfo_HeaderSeqs.Size(m)
}
func (m *HeaderSeqs) XXX_DiscardUnknown() {
	xxx_messageInfo_HeaderSeqs.DiscardUnknown(m)
}

var xxx_messageInfo_HeaderSeqs proto.InternalMessageInfo

func (m *HeaderSeqs) GetSeqs() []*HeaderSeq {
	if m != nil {
		return m.Seqs
	}
	return nil
}

//记录本平行链所在区块的信息以及子根hash值
// childHash:平行链子roothash值
// startIndex:此平行链的第一笔交易的index索引值
// childHashIndex:此平行链子roothash在本区块中的索引值
// txCount:此平行链交易的个数
type HeightPara struct {
	Height               int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Title                string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Hash                 []byte   `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
	ChildHash            []byte   `protobuf:"bytes,4,opt,name=childHash,proto3" json:"childHash,omitempty"`
	StartIndex           int32    `protobuf:"varint,5,opt,name=startIndex,proto3" json:"startIndex,omitempty"`
	ChildHashIndex       uint32   `protobuf:"varint,6,opt,name=childHashIndex,proto3" json:"childHashIndex,omitempty"`
	TxCount              int32    `protobuf:"varint,7,opt,name=txCount,proto3" json:"txCount,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *HeightPara) Reset()         { *m = HeightPara{} }
func (m *HeightPara) String() string { return proto.CompactTextString(m) }
func (*HeightPara) ProtoMessage()    {}
func (*HeightPara) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{37}
}

func (m *HeightPara) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeightPara.Unmarshal(m, b)
}
func (m *HeightPara) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeightPara.Marshal(b, m, deterministic)
}
func (m *HeightPara) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeightPara.Merge(m, src)
}
func (m *HeightPara) XXX_Size() int {
	return xxx_messageInfo_HeightPara.Size(m)
}
func (m *HeightPara) XXX_DiscardUnknown() {
	xxx_messageInfo_HeightPara.DiscardUnknown(m)
}

var xxx_messageInfo_HeightPara proto.InternalMessageInfo

func (m *HeightPara) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *HeightPara) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *HeightPara) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

func (m *HeightPara) GetChildHash() []byte {
	if m != nil {
		return m.ChildHash
	}
	return nil
}

func (m *HeightPara) GetStartIndex() int32 {
	if m != nil {
		return m.StartIndex
	}
	return 0
}

func (m *HeightPara) GetChildHashIndex() uint32 {
	if m != nil {
		return m.ChildHashIndex
	}
	return 0
}

func (m *HeightPara) GetTxCount() int32 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

type HeightParas struct {
	Items                []*HeightPara `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *HeightParas) Reset()         { *m = HeightParas{} }
func (m *HeightParas) String() string { return proto.CompactTextString(m) }
func (*HeightParas) ProtoMessage()    {}
func (*HeightParas) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{38}
}

func (m *HeightParas) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HeightParas.Unmarshal(m, b)
}
func (m *HeightParas) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HeightParas.Marshal(b, m, deterministic)
}
func (m *HeightParas) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HeightParas.Merge(m, src)
}
func (m *HeightParas) XXX_Size() int {
	return xxx_messageInfo_HeightParas.Size(m)
}
func (m *HeightParas) XXX_DiscardUnknown() {
	xxx_messageInfo_HeightParas.DiscardUnknown(m)
}

var xxx_messageInfo_HeightParas proto.InternalMessageInfo

func (m *HeightParas) GetItems() []*HeightPara {
	if m != nil {
		return m.Items
	}
	return nil
}

//记录平行链第一笔交易的index,以及平行链的roothash
// title:子链名字，主链的默认是main
// startIndex:子链第一笔交易的索引
// childHash:子链的根hash
// txCount:子链交易的数量
type ChildChain struct {
	Title                string   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	StartIndex           int32    `protobuf:"varint,2,opt,name=startIndex,proto3" json:"startIndex,omitempty"`
	ChildHash            []byte   `protobuf:"bytes,3,opt,name=childHash,proto3" json:"childHash,omitempty"`
	TxCount              int32    `protobuf:"varint,4,opt,name=txCount,proto3" json:"txCount,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ChildChain) Reset()         { *m = ChildChain{} }
func (m *ChildChain) String() string { return proto.CompactTextString(m) }
func (*ChildChain) ProtoMessage()    {}
func (*ChildChain) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{39}
}

func (m *ChildChain) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ChildChain.Unmarshal(m, b)
}
func (m *ChildChain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ChildChain.Marshal(b, m, deterministic)
}
func (m *ChildChain) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ChildChain.Merge(m, src)
}
func (m *ChildChain) XXX_Size() int {
	return xxx_messageInfo_ChildChain.Size(m)
}
func (m *ChildChain) XXX_DiscardUnknown() {
	xxx_messageInfo_ChildChain.DiscardUnknown(m)
}

var xxx_messageInfo_ChildChain proto.InternalMessageInfo

func (m *ChildChain) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *ChildChain) GetStartIndex() int32 {
	if m != nil {
		return m.StartIndex
	}
	return 0
}

func (m *ChildChain) GetChildHash() []byte {
	if m != nil {
		return m.ChildHash
	}
	return nil
}

func (m *ChildChain) GetTxCount() int32 {
	if m != nil {
		return m.TxCount
	}
	return 0
}

//通过指定title以及height翻页获取拥有此title交易的区块高度列表
type ReqHeightByTitle struct {
	Height               int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Title                string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Count                int32    `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Direction            int32    `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReqHeightByTitle) Reset()         { *m = ReqHeightByTitle{} }
func (m *ReqHeightByTitle) String() string { return proto.CompactTextString(m) }
func (*ReqHeightByTitle) ProtoMessage()    {}
func (*ReqHeightByTitle) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{40}
}

func (m *ReqHeightByTitle) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReqHeightByTitle.Unmarshal(m, b)
}
func (m *ReqHeightByTitle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReqHeightByTitle.Marshal(b, m, deterministic)
}
func (m *ReqHeightByTitle) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReqHeightByTitle.Merge(m, src)
}
func (m *ReqHeightByTitle) XXX_Size() int {
	return xxx_messageInfo_ReqHeightByTitle.Size(m)
}
func (m *ReqHeightByTitle) XXX_DiscardUnknown() {
	xxx_messageInfo_ReqHeightByTitle.DiscardUnknown(m)
}

var xxx_messageInfo_ReqHeightByTitle proto.InternalMessageInfo

func (m *ReqHeightByTitle) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *ReqHeightByTitle) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *ReqHeightByTitle) GetCount() int32 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *ReqHeightByTitle) GetDirection() int32 {
	if m != nil {
		return m.Direction
	}
	return 0
}

type ReplyHeightByTitle struct {
	Title                string       `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Items                []*BlockInfo `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (m *ReplyHeightByTitle) Reset()         { *m = ReplyHeightByTitle{} }
func (m *ReplyHeightByTitle) String() string { return proto.CompactTextString(m) }
func (*ReplyHeightByTitle) ProtoMessage()    {}
func (*ReplyHeightByTitle) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{41}
}

func (m *ReplyHeightByTitle) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReplyHeightByTitle.Unmarshal(m, b)
}
func (m *ReplyHeightByTitle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReplyHeightByTitle.Marshal(b, m, deterministic)
}
func (m *ReplyHeightByTitle) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReplyHeightByTitle.Merge(m, src)
}
func (m *ReplyHeightByTitle) XXX_Size() int {
	return xxx_messageInfo_ReplyHeightByTitle.Size(m)
}
func (m *ReplyHeightByTitle) XXX_DiscardUnknown() {
	xxx_messageInfo_ReplyHeightByTitle.DiscardUnknown(m)
}

var xxx_messageInfo_ReplyHeightByTitle proto.InternalMessageInfo

func (m *ReplyHeightByTitle) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

func (m *ReplyHeightByTitle) GetItems() []*BlockInfo {
	if m != nil {
		return m.Items
	}
	return nil
}

// title平行链交易所在主链区块的信息
type BlockInfo struct {
	Height               int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Hash                 []byte   `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockInfo) Reset()         { *m = BlockInfo{} }
func (m *BlockInfo) String() string { return proto.CompactTextString(m) }
func (*BlockInfo) ProtoMessage()    {}
func (*BlockInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{42}
}

func (m *BlockInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockInfo.Unmarshal(m, b)
}
func (m *BlockInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockInfo.Marshal(b, m, deterministic)
}
func (m *BlockInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockInfo.Merge(m, src)
}
func (m *BlockInfo) XXX_Size() int {
	return xxx_messageInfo_BlockInfo.Size(m)
}
func (m *BlockInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockInfo.DiscardUnknown(m)
}

var xxx_messageInfo_BlockInfo proto.InternalMessageInfo

func (m *BlockInfo) GetHeight() int64 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *BlockInfo) GetHash() []byte {
	if m != nil {
		return m.Hash
	}
	return nil
}

//通过高度列表和title获取平行链交易
type ReqParaTxByHeight struct {
	Items                []int64  `protobuf:"varint,1,rep,packed,name=items,proto3" json:"items,omitempty"`
	Title                string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReqParaTxByHeight) Reset()         { *m = ReqParaTxByHeight{} }
func (m *ReqParaTxByHeight) String() string { return proto.CompactTextString(m) }
func (*ReqParaTxByHeight) ProtoMessage()    {}
func (*ReqParaTxByHeight) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{43}
}

func (m *ReqParaTxByHeight) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReqParaTxByHeight.Unmarshal(m, b)
}
func (m *ReqParaTxByHeight) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReqParaTxByHeight.Marshal(b, m, deterministic)
}
func (m *ReqParaTxByHeight) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReqParaTxByHeight.Merge(m, src)
}
func (m *ReqParaTxByHeight) XXX_Size() int {
	return xxx_messageInfo_ReqParaTxByHeight.Size(m)
}
func (m *ReqParaTxByHeight) XXX_DiscardUnknown() {
	xxx_messageInfo_ReqParaTxByHeight.DiscardUnknown(m)
}

var xxx_messageInfo_ReqParaTxByHeight proto.InternalMessageInfo

func (m *ReqParaTxByHeight) GetItems() []int64 {
	if m != nil {
		return m.Items
	}
	return nil
}

func (m *ReqParaTxByHeight) GetTitle() string {
	if m != nil {
		return m.Title
	}
	return ""
}

//用于比较最优区块的消息结构
type CmpBlock struct {
	Block                *Block   `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"`
	CmpHash              []byte   `protobuf:"bytes,2,opt,name=cmpHash,proto3" json:"cmpHash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CmpBlock) Reset()         { *m = CmpBlock{} }
func (m *CmpBlock) String() string { return proto.CompactTextString(m) }
func (*CmpBlock) ProtoMessage()    {}
func (*CmpBlock) Descriptor() ([]byte, []int) {
	return fileDescriptor_e9ac6287ce250c9a, []int{44}
}

func (m *CmpBlock) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CmpBlock.Unmarshal(m, b)
}
func (m *CmpBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CmpBlock.Marshal(b, m, deterministic)
}
func (m *CmpBlock) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CmpBlock.Merge(m, src)
}
func (m *CmpBlock) XXX_Size() int {
	return xxx_messageInfo_CmpBlock.Size(m)
}
func (m *CmpBlock) XXX_DiscardUnknown() {
	xxx_messageInfo_CmpBlock.DiscardUnknown(m)
}

var xxx_messageInfo_CmpBlock proto.InternalMessageInfo

func (m *CmpBlock) GetBlock() *Block {
	if m != nil {
		return m.Block
	}
	return nil
}

func (m *CmpBlock) GetCmpHash() []byte {
	if m != nil {
		return m.CmpHash
	}
	return nil
}

func init() {
	proto.RegisterType((*Header)(nil), "types.Header")
	proto.RegisterType((*Block)(nil), "types.Block")
	proto.RegisterType((*Blocks)(nil), "types.Blocks")
	proto.RegisterType((*BlockSeqCB)(nil), "types.BlockSeqCB")
	proto.RegisterType((*BlockSeqCBs)(nil), "types.BlockSeqCBs")
	proto.RegisterType((*BlockSeq)(nil), "types.BlockSeq")
	proto.RegisterType((*BlockSeqs)(nil), "types.BlockSeqs")
	proto.RegisterType((*BlockPid)(nil), "types.BlockPid")
	proto.RegisterType((*BlockDetails)(nil), "types.BlockDetails")
	proto.RegisterType((*Headers)(nil), "types.Headers")
	proto.RegisterType((*HeadersPid)(nil), "types.HeadersPid")
	proto.RegisterType((*BlockOverview)(nil), "types.BlockOverview")
	proto.RegisterType((*BlockDetail)(nil), "types.BlockDetail")
	proto.RegisterType((*Receipts)(nil), "types.Receipts")
	proto.RegisterType((*ReceiptCheckTxList)(nil), "types.ReceiptCheckTxList")
	proto.RegisterType((*ChainStatus)(nil), "types.ChainStatus")
	proto.RegisterType((*ReqBlocks)(nil), "types.ReqBlocks")
	proto.RegisterType((*MempoolSize)(nil), "types.MempoolSize")
	proto.RegisterType((*ReplyBlockHeight)(nil), "types.ReplyBlockHeight")
	proto.RegisterType((*BlockBody)(nil), "types.BlockBody")
	proto.RegisterType((*BlockReceipt)(nil), "types.BlockReceipt")
	proto.RegisterType((*IsCaughtUp)(nil), "types.IsCaughtUp")
	proto.RegisterType((*IsNtpClockSync)(nil), "types.IsNtpClockSync")
	proto.RegisterType((*ChainExecutor)(nil), "types.ChainExecutor")
	proto.RegisterType((*BlockSequence)(nil), "types.BlockSequence")
	proto.RegisterType((*BlockSequences)(nil), "types.BlockSequences")
	proto.RegisterType((*Sequence)(nil), "types.Sequence")
	proto.RegisterType((*ReplyAddSeqCallback)(nil), "types.ReplyAddSeqCallback")
	proto.RegisterType((*ParaChainBlockDetail)(nil), "types.ParaChainBlockDetail")
	proto.RegisterType((*ParaTxDetails)(nil), "types.ParaTxDetails")
	proto.RegisterType((*ParaTxDetail)(nil), "types.ParaTxDetail")
	proto.RegisterType((*TxDetail)(nil), "types.TxDetail")
	proto.RegisterType((*ReqParaTxByTitle)(nil), "types.ReqParaTxByTitle")
	proto.RegisterType((*FileHeader)(nil), "types.FileHeader")
	proto.RegisterType((*EndBlock)(nil), "types.EndBlock")
	proto.RegisterType((*HeaderSeq)(nil), "types.HeaderSeq")
	proto.RegisterType((*HeaderSeqs)(nil), "types.HeaderSeqs")
	proto.RegisterType((*HeightPara)(nil), "types.HeightPara")
	proto.RegisterType((*HeightParas)(nil), "types.HeightParas")
	proto.RegisterType((*ChildChain)(nil), "types.ChildChain")
	proto.RegisterType((*ReqHeightByTitle)(nil), "types.ReqHeightByTitle")
	proto.RegisterType((*ReplyHeightByTitle)(nil), "types.ReplyHeightByTitle")
	proto.RegisterType((*BlockInfo)(nil), "types.BlockInfo")
	proto.RegisterType((*ReqParaTxByHeight)(nil), "types.ReqParaTxByHeight")
	proto.RegisterType((*CmpBlock)(nil), "types.CmpBlock")
}

func init() {
	proto.RegisterFile("blockchain.proto", fileDescriptor_e9ac6287ce250c9a)
}

var fileDescriptor_e9ac6287ce250c9a = []byte{
	// 1630 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x6e, 0x1c, 0xc5,
	0x13, 0xd7, 0xec, 0xec, 0x67, 0xad, 0xd7, 0x7f, 0x67, 0x62, 0xfd, 0xb5, 0xb2, 0x20, 0xd9, 0x34,
	0x21, 0x2c, 0x51, 0x70, 0x90, 0x8d, 0x92, 0x08, 0x21, 0x01, 0xde, 0x04, 0xd9, 0x4a, 0x48, 0xc2,
	0xd8, 0xc9, 0x81, 0x13, 0xe3, 0xd9, 0xb6, 0x77, 0xf0, 0xee, 0xcc, 0x78, 0xba, 0xd7, 0xec, 0xe6,
	0xc4, 0x19, 0x89, 0x17, 0x41, 0x3c, 0x06, 0x17, 0x2e, 0x88, 0x37, 0xe0, 0x55, 0x50, 0x55, 0x77,
	0xcf, 0xf4, 0xac, 0xd7, 0x26, 0x16, 0x27, 0x6e, 0x5d, 0xd5, 0x1f, 0xf5, 0xab, 0x5f, 0x55, 0x57,
	0xf5, 0x0c, 0xac, 0x1d, 0x8e, 0x93, 0xf0, 0x24, 0x1c, 0x05, 0x51, 0xbc, 0x99, 0x66, 0x89, 0x4c,
	0xbc, 0x9a, 0x9c, 0xa7, 0x5c, 0x6c, 0x5c, 0x93, 0x59, 0x10, 0x8b, 0x20, 0x94, 0x51, 0xa2, 0x67,
	0x36, 0x56, 0xc2, 0x64, 0x32, 0x31, 0x12, 0xfb, 0xb5, 0x02, 0xf5, 0x5d, 0x1e, 0x0c, 0x79, 0xe6,
	0x75, 0xa1, 0x71, 0xc6, 0x33, 0x11, 0x25, 0x71, 0xd7, 0xe9, 0x39, 0x7d, 0xd7, 0x37, 0xa2, 0x77,
	0x03, 0x20, 0x0d, 0x32, 0x1e, 0xcb, 0xdd, 0x40, 0x8c, 0xba, 0x95, 0x9e, 0xd3, 0x5f, 0xf1, 0x2d,
	0x8d, 0xf7, 0x7f, 0xa8, 0xcb, 0x19, 0xcd, 0xb9, 0x34, 0xa7, 0x25, 0xef, 0x1d, 0x68, 0x09, 0x19,
	0x48, 0x4e, 0x53, 0x55, 0x9a, 0x2a, 0x14, 0xb8, 0x6b, 0xc4, 0xa3, 0xe3, 0x91, 0xec, 0xd6, 0xc8,
	0x9c, 0x96, 0x70, 0x17, 0xb9, 0x73, 0x10, 0x4d, 0x78, 0xb7, 0x4e, 0x53, 0x85, 0x02, 0x51, 0xca,
	0xd9, 0x20, 0x99, 0xc6, 0xb2, 0xdb, 0x52, 0x28, 0xb5, 0xe8, 0x79, 0x50, 0x1d, 0xa1, 0x21, 0x20,
	0x43, 0x34, 0x46, 0xe4, 0xc3, 0xe8, 0xe8, 0x28, 0x0a, 0xa7, 0x63, 0x39, 0xef, 0xb6, 0x7b, 0x4e,
	0xbf, 0xe3, 0x5b, 0x1a, 0x6f, 0x13, 0x5a, 0x22, 0x3a, 0x8e, 0x03, 0x39, 0xcd, 0x78, 0xb7, 0xd9,
	0x73, 0xfa, 0xed, 0xad, 0xb5, 0x4d, 0xa2, 0x6e, 0x73, 0xdf, 0xe8, 0xfd, 0x62, 0x09, 0xfb, 0xab,
	0x02, 0xb5, 0x1d, 0xc4, 0xf2, 0x1f, 0x61, 0xeb, 0x9f, 0xfc, 0xdf, 0x80, 0xe6, 0x24, 0x88, 0x62,
	0x32, 0xb9, 0x42, 0x26, 0x73, 0x19, 0xf7, 0xd2, 0x58, 0x59, 0xed, 0xd0, 0xd1, 0x96, 0xe6, 0xaa,
	0xdc, 0x79, 0xb7, 0xc1, 0x95, 0x33, 0xd1, 0x6d, 0xf4, 0xdc, 0x7e, 0x7b, 0xcb, 0xd3, 0x2b, 0x0f,
	0x8a, 0xfc, 0xf4, 0x71, 0x9a, 0xdd, 0x83, 0x3a, 0x11, 0x2c, 0x3c, 0x06, 0xb5, 0x48, 0xf2, 0x89,
	0xe8, 0x3a, 0xb4, 0x63, 0x45, 0xef, 0xa0, 0x59, 0x5f, 0x4d, 0xb1, 0x3f, 0x1d, 0x00, 0x52, 0xec,
	0xf3, 0xd3, 0xc1, 0x0e, 0xa6, 0x40, 0x1c, 0x4c, 0x38, 0x45, 0xa4, 0xe5, 0xd3, 0xd8, 0x5b, 0x03,
	0xf7, 0x95, 0xff, 0x8c, 0xe2, 0xd0, 0xf2, 0x71, 0x88, 0x54, 0xf2, 0x38, 0x4c, 0x86, 0x9c, 0x02,
	0xd0, 0xf2, 0xb5, 0x84, 0x64, 0x44, 0x42, 0x5d, 0x06, 0xe2, 0xbf, 0xe9, 0xe7, 0xb2, 0xc7, 0x60,
	0x65, 0x1c, 0x08, 0xb9, 0xcf, 0x4f, 0xa7, 0x3c, 0x0e, 0xb9, 0x0e, 0x42, 0x49, 0x87, 0x84, 0xa1,
	0xac, 0x09, 0x53, 0xb1, 0xb0, 0x34, 0xde, 0x6d, 0xe8, 0xa0, 0x44, 0x78, 0x89, 0xf1, 0x06, 0x99,
	0x2f, 0x2b, 0xd9, 0x03, 0x68, 0x17, 0x1e, 0x09, 0xef, 0x83, 0x32, 0x0b, 0xd7, 0x6c, 0x16, 0x68,
	0x89, 0xa1, 0x22, 0x85, 0xa6, 0x51, 0xa2, 0xcf, 0xf1, 0x74, 0xa2, 0x13, 0x13, 0x87, 0xde, 0x1d,
	0x70, 0x05, 0x3f, 0x25, 0x16, 0xda, 0x5b, 0xeb, 0x0b, 0x87, 0x10, 0x7c, 0x1f, 0x17, 0x78, 0x77,
	0xa1, 0x3e, 0xe4, 0x32, 0x88, 0xc6, 0xc4, 0x4d, 0x11, 0x27, 0x5a, 0xfa, 0x98, 0x66, 0x7c, 0xbd,
	0x82, 0x7d, 0x0c, 0x2d, 0x73, 0x82, 0xf0, 0xde, 0x83, 0xaa, 0xe0, 0xa7, 0x06, 0xe6, 0xff, 0x16,
	0x2c, 0xf8, 0x34, 0xc9, 0xbe, 0xd0, 0x18, 0x5f, 0x46, 0x43, 0xc4, 0x98, 0x46, 0x43, 0x1d, 0x2a,
	0x1c, 0x62, 0xc0, 0x29, 0x73, 0x35, 0xca, 0x85, 0x80, 0xd3, 0x14, 0x7b, 0x04, 0x2b, 0x16, 0x14,
	0xe1, 0xf5, 0xcb, 0xf4, 0x2c, 0x83, 0xab, 0xf9, 0xd9, 0x84, 0x86, 0x8a, 0x25, 0x62, 0x2d, 0x6d,
	0xea, 0xe8, 0x4d, 0x6a, 0xda, 0xac, 0xdf, 0x05, 0xd0, 0xeb, 0x97, 0xa3, 0xed, 0x43, 0x63, 0xa4,
	0xe6, 0x35, 0xde, 0xd5, 0xd2, 0x31, 0xc2, 0x37, 0xd3, 0x6c, 0x04, 0x1d, 0xc2, 0xf3, 0xe2, 0x8c,
	0x67, 0x67, 0x11, 0xff, 0xc1, 0xbb, 0x05, 0x55, 0x9c, 0xa3, 0xd3, 0xce, 0x99, 0xa7, 0x29, 0xbb,
	0xcc, 0x55, 0xca, 0x65, 0x6e, 0x03, 0x9a, 0xaa, 0x60, 0x70, 0xd1, 0x75, 0x7b, 0x2e, 0x5e, 0x59,
	0x23, 0xb3, 0x5f, 0x1c, 0x9d, 0x3c, 0xca, 0xf5, 0x82, 0x51, 0xe7, 0x42, 0x46, 0xbd, 0x4d, 0x68,
	0x66, 0x3c, 0xe4, 0x51, 0x2a, 0xd1, 0x11, 0x9b, 0x44, 0x5f, 0xa9, 0x1f, 0x07, 0x32, 0xf0, 0xf3,
	0x35, 0xde, 0x4d, 0xa8, 0x3c, 0x7d, 0x4d, 0x96, 0x8b, 0x30, 0x3f, 0xe5, 0xf3, 0xd7, 0xc1, 0x78,
	0xca, 0xfd, 0xca, 0xd3, 0xd7, 0xde, 0x1d, 0x58, 0x4d, 0x33, 0x7e, 0xb6, 0x2f, 0x03, 0x39, 0x15,
	0x56, 0x31, 0x5b, 0xd0, 0xb2, 0x07, 0xd0, 0xf4, 0xcd, 0xa1, 0x77, 0x2d, 0x10, 0x2a, 0x28, 0xab,
	0x65, 0x10, 0x05, 0x00, 0xd6, 0x07, 0x4f, 0x2b, 0x07, 0x23, 0x1e, 0x9e, 0x1c, 0xcc, 0x9e, 0x45,
	0x82, 0xaa, 0x3f, 0xcf, 0x32, 0xb5, 0xbb, 0xe5, 0xd3, 0x98, 0xcd, 0xa1, 0x3d, 0xc0, 0x9e, 0xa8,
	0x8c, 0xe2, 0xfd, 0x0b, 0xa7, 0x19, 0xd5, 0x61, 0x75, 0x45, 0xd5, 0xfd, 0x28, 0x2b, 0xbd, 0x1e,
	0xb4, 0x27, 0x7c, 0x92, 0x26, 0xc9, 0x78, 0x3f, 0x7a, 0xc3, 0x35, 0xfb, 0xb6, 0x0a, 0x6b, 0xc1,
	0x44, 0x1c, 0x7f, 0x33, 0xe5, 0x53, 0x4e, 0x4b, 0x5c, 0x55, 0x0b, 0x6c, 0x1d, 0x0b, 0xa0, 0xe5,
	0xf3, 0x53, 0x5d, 0xc9, 0xd6, 0xa1, 0x26, 0x64, 0x90, 0x19, 0x83, 0x4a, 0xc0, 0x94, 0xe2, 0xf1,
	0x50, 0x1b, 0xc0, 0xa1, 0x2a, 0x40, 0x8f, 0x8b, 0xeb, 0x47, 0x05, 0x48, 0x87, 0x52, 0x27, 0x60,
	0x95, 0xdc, 0xc3, 0x21, 0xbb, 0x05, 0xed, 0xaf, 0x2d, 0x54, 0x1e, 0x54, 0x05, 0xa2, 0x51, 0x36,
	0x68, 0xcc, 0xee, 0xc2, 0x9a, 0xcf, 0xd3, 0xf1, 0x5c, 0x55, 0x17, 0xe5, 0x5f, 0xd1, 0x48, 0x1c,
	0xbb, 0x91, 0xb0, 0xdf, 0x1d, 0x7d, 0x9d, 0x77, 0x92, 0xe1, 0xdc, 0x14, 0x6b, 0xe7, 0xd2, 0x62,
	0x7d, 0xe5, 0xdc, 0xb1, 0xdb, 0x8d, 0x7b, 0x69, 0xbb, 0xa9, 0x9e, 0x6b, 0x37, 0xa6, 0xbd, 0xd7,
	0xac, 0xf6, 0x5e, 0xf8, 0x52, 0x2f, 0xf9, 0xf2, 0xbd, 0xae, 0x12, 0x1a, 0x45, 0x09, 0xa7, 0xf3,
	0x16, 0x38, 0x8d, 0xad, 0xca, 0x52, 0x5b, 0x6e, 0xc9, 0xd6, 0x3d, 0x80, 0x3d, 0x31, 0x08, 0xa6,
	0xc7, 0x23, 0xf9, 0x2a, 0x45, 0x2f, 0xf6, 0x44, 0x48, 0xd2, 0x34, 0x25, 0x86, 0x9b, 0xbe, 0xa5,
	0x61, 0x8f, 0x60, 0x75, 0x4f, 0x3c, 0x97, 0xe9, 0x80, 0x0a, 0xe3, 0x3c, 0x0e, 0xf1, 0xba, 0x44,
	0x22, 0x96, 0x69, 0x48, 0xb9, 0x32, 0x8f, 0x43, 0xbd, 0x6b, 0x41, 0xcb, 0x7e, 0x76, 0xa0, 0x43,
	0xd9, 0xfc, 0x64, 0xc6, 0xc3, 0xa9, 0x4c, 0x32, 0x44, 0x34, 0xcc, 0xa2, 0x33, 0x9e, 0xe9, 0xb2,
	0xa4, 0x25, 0x64, 0xf9, 0x68, 0x1a, 0x87, 0xcf, 0xb1, 0x13, 0xaa, 0xb6, 0x97, 0xcb, 0xe5, 0x47,
	0x86, 0xbb, 0xf8, 0xc8, 0x58, 0x87, 0x5a, 0x1a, 0x64, 0xc1, 0x44, 0xdf, 0x58, 0x25, 0xa0, 0x96,
	0xcf, 0x64, 0x16, 0x68, 0xea, 0x95, 0xc0, 0x1e, 0xea, 0xaa, 0x96, 0xb7, 0x3f, 0x0f, 0xaa, 0x74,
	0xaa, 0xa3, 0x48, 0xa3, 0x03, 0x3d, 0xa8, 0x1e, 0xcc, 0x53, 0x73, 0x8b, 0x68, 0xcc, 0x3e, 0x83,
	0xd5, 0xd2, 0x46, 0xbc, 0xfd, 0xa5, 0x7a, 0xbc, 0xbc, 0x3d, 0xe9, 0xb2, 0x7c, 0x04, 0xcd, 0xab,
	0x5a, 0x44, 0x42, 0x84, 0x69, 0xdc, 0x2a, 0x78, 0xb9, 0x6c, 0x85, 0xb5, 0x5a, 0x0a, 0xeb, 0x77,
	0x70, 0x9d, 0xae, 0xce, 0x97, 0xc3, 0x21, 0xb6, 0xd9, 0x60, 0x3c, 0x3e, 0x0c, 0xc2, 0x13, 0x3c,
	0x3e, 0x12, 0x2f, 0x4e, 0x74, 0x8c, 0x68, 0x8c, 0x57, 0x73, 0x22, 0x8e, 0x75, 0xb2, 0xe0, 0x30,
	0x6f, 0x86, 0xe5, 0x2a, 0x99, 0xbb, 0xa2, 0x9a, 0xe1, 0x8f, 0x0e, 0xac, 0xbf, 0x0c, 0xb2, 0x80,
	0x82, 0x6a, 0x57, 0xed, 0x4f, 0xa0, 0x4d, 0xa5, 0x59, 0x37, 0x62, 0xe7, 0xc2, 0x46, 0x6c, 0x2f,
	0x2b, 0x39, 0x59, 0x39, 0xef, 0x64, 0x24, 0x30, 0xdb, 0x74, 0x59, 0xd1, 0x12, 0xfb, 0x14, 0x3a,
	0x88, 0xe0, 0x60, 0x66, 0xda, 0xe9, 0x87, 0xe5, 0x48, 0x5c, 0xd7, 0x46, 0xed, 0x45, 0x26, 0x10,
	0xbf, 0x39, 0xb0, 0x62, 0xeb, 0x91, 0x1a, 0x5c, 0x6d, 0x0a, 0x10, 0x8e, 0xbd, 0xf7, 0x91, 0x5d,
	0x7a, 0x50, 0x55, 0x96, 0xf5, 0x3a, 0x3d, 0xe9, 0x7d, 0x04, 0x2d, 0x69, 0x30, 0x2c, 0x90, 0x96,
	0x9b, 0x2d, 0x56, 0x60, 0x12, 0x87, 0xa3, 0x68, 0x3c, 0xb4, 0x5f, 0xca, 0xb9, 0x02, 0xd3, 0x35,
	0x8a, 0x87, 0x7c, 0x46, 0xe9, 0xda, 0xf1, 0x95, 0x80, 0x14, 0xa4, 0x59, 0x92, 0x1c, 0x89, 0x6e,
	0x9d, 0x9a, 0xa6, 0x96, 0xd8, 0x4f, 0x0e, 0x34, 0x73, 0x17, 0xf2, 0xad, 0x8e, 0xbd, 0x95, 0x41,
	0x45, 0xce, 0xb4, 0x03, 0xcb, 0x4a, 0x61, 0x45, 0xce, 0xbc, 0x7b, 0xd0, 0xd0, 0xd5, 0x63, 0xe1,
	0xe1, 0x64, 0x17, 0x18, 0xb3, 0xc4, 0x02, 0x53, 0x2d, 0x81, 0x39, 0xc2, 0x7a, 0x7d, 0xaa, 0x58,
	0xdd, 0x99, 0x1f, 0x44, 0x72, 0xcc, 0xdf, 0xba, 0x79, 0xac, 0x43, 0x4d, 0xe2, 0x06, 0xfd, 0xa8,
	0x55, 0x02, 0x79, 0x24, 0xf6, 0xf9, 0xa9, 0x7e, 0xd0, 0x2a, 0x81, 0x9d, 0x01, 0x7c, 0x15, 0x8d,
	0xb9, 0x7e, 0xdb, 0xf6, 0xa0, 0x4d, 0x87, 0x96, 0xba, 0xa2, 0xad, 0xb2, 0x2a, 0x4d, 0xa5, 0x54,
	0x69, 0x96, 0xdb, 0xc4, 0xb7, 0x0b, 0x17, 0xf2, 0x39, 0x97, 0xda, 0xaa, 0x11, 0xb1, 0xe5, 0x3f,
	0x89, 0x87, 0xea, 0x03, 0xea, 0x82, 0x3e, 0xb4, 0xac, 0xf6, 0xb2, 0x31, 0xb4, 0x14, 0xd6, 0x7f,
	0xf7, 0xb8, 0x2d, 0xb2, 0xd1, 0xbd, 0x24, 0x1b, 0xd9, 0x96, 0x79, 0xf9, 0xd1, 0xc3, 0xf6, 0x76,
	0xe9, 0x61, 0xbb, 0x56, 0xda, 0x52, 0xbc, 0x6c, 0xff, 0x70, 0x70, 0x13, 0x3a, 0x80, 0xd1, 0xbb,
	0xd0, 0xb9, 0x9c, 0xb0, 0x8a, 0x4d, 0x98, 0x71, 0xd9, 0xb5, 0xda, 0xcd, 0xe5, 0x39, 0x7e, 0x03,
	0x80, 0xe2, 0xb3, 0x97, 0x27, 0x7a, 0xcd, 0xb7, 0x34, 0xd8, 0x54, 0xf2, 0xc5, 0x6a, 0x4d, 0x9d,
	0x32, 0x7a, 0x41, 0x6b, 0x3f, 0x33, 0x1b, 0x74, 0x88, 0x11, 0xf1, 0x33, 0xa4, 0xf0, 0xe7, 0xc2,
	0xcf, 0x90, 0x62, 0x89, 0x29, 0x0b, 0x6f, 0x00, 0x06, 0x68, 0x83, 0xaa, 0x5a, 0xe1, 0xaf, 0x63,
	0xfb, 0x5b, 0x46, 0x5f, 0x39, 0x87, 0xbe, 0xe4, 0xbb, 0xbb, 0xe8, 0xbb, 0x85, 0xb9, 0x5a, 0xc6,
	0x2c, 0xe9, 0xfa, 0x28, 0x4c, 0xe6, 0xfa, 0x5c, 0x2d, 0x12, 0xeb, 0x50, 0x0b, 0xe9, 0x64, 0x97,
	0x4e, 0x56, 0x02, 0xe2, 0x19, 0x46, 0x19, 0xa7, 0xdb, 0xae, 0x6d, 0x16, 0x0a, 0xe6, 0xe3, 0x7b,
	0x34, 0x1d, 0xcf, 0xcb, 0x76, 0x97, 0x7b, 0x7e, 0xc7, 0xd0, 0x58, 0x29, 0x65, 0x13, 0xe5, 0xea,
	0x5e, 0x7c, 0x94, 0x18, 0x16, 0x1f, 0xea, 0xb7, 0x18, 0xea, 0xae, 0x74, 0x53, 0x3e, 0x87, 0x6b,
	0x56, 0x05, 0xd9, 0xcd, 0x7d, 0x2d, 0x82, 0xe7, 0x6a, 0x1b, 0xcb, 0x19, 0x60, 0xbb, 0xd0, 0x1c,
	0x4c, 0x52, 0x75, 0x45, 0xdf, 0xe6, 0xf3, 0xa1, 0x0b, 0x8d, 0x70, 0x92, 0x5a, 0xbf, 0x3a, 0x8c,
	0xb8, 0x73, 0xf3, 0xdb, 0x77, 0x8f, 0x23, 0x39, 0x9a, 0x1e, 0x6e, 0x86, 0xc9, 0xe4, 0xfe, 0xf6,
	0x76, 0x18, 0xdf, 0xa7, 0x3f, 0x54, 0xdb, 0xdb, 0xf7, 0xe9, 0x9c, 0xc3, 0x3a, 0xfd, 0x82, 0xda,
	0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x50, 0x6a, 0x8c, 0x39, 0xbe, 0x12, 0x00, 0x00,
}
