// 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.ProtoPackageIsVersion2 // 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解释
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"`
	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) 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"`
	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 ""
}

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{4}
}

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
}

//节点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{5}
}

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{6}
}

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{7}
}

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{8}
}

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{9}
}

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{10}
}

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{11}
}

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 PrivacyKV struct {
	PrivacyKVToken       []*PrivacyKVToken `protobuf:"bytes,1,rep,name=privacyKVToken,proto3" json:"privacyKVToken,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

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

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

var xxx_messageInfo_PrivacyKV proto.InternalMessageInfo

func (m *PrivacyKV) GetPrivacyKVToken() []*PrivacyKVToken {
	if m != nil {
		return m.PrivacyKVToken
	}
	return nil
}

type PrivacyKVToken struct {
	Token                string      `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	TxIndex              int32       `protobuf:"varint,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	Txhash               []byte      `protobuf:"bytes,3,opt,name=txhash,proto3" json:"txhash,omitempty"`
	KV                   []*KeyValue `protobuf:"bytes,4,rep,name=KV,proto3" json:"KV,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

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

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

var xxx_messageInfo_PrivacyKVToken proto.InternalMessageInfo

func (m *PrivacyKVToken) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

func (m *PrivacyKVToken) GetTxIndex() int32 {
	if m != nil {
		return m.TxIndex
	}
	return 0
}

func (m *PrivacyKVToken) GetTxhash() []byte {
	if m != nil {
		return m.Txhash
	}
	return nil
}

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

type ReceiptsAndPrivacyKV struct {
	Receipts             *Receipts  `protobuf:"bytes,1,opt,name=receipts,proto3" json:"receipts,omitempty"`
	PrivacyKV            *PrivacyKV `protobuf:"bytes,2,opt,name=privacyKV,proto3" json:"privacyKV,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

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

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

var xxx_messageInfo_ReceiptsAndPrivacyKV proto.InternalMessageInfo

func (m *ReceiptsAndPrivacyKV) GetReceipts() *Receipts {
	if m != nil {
		return m.Receipts
	}
	return nil
}

func (m *ReceiptsAndPrivacyKV) GetPrivacyKV() *PrivacyKV {
	if m != nil {
		return m.PrivacyKV
	}
	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{15}
}

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{16}
}

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{17}
}

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{18}
}

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{19}
}

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 :区块上所有交易的收据信息列表
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"`
	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{20}
}

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
}

//  区块追赶主链状态，用于判断本节点区块是否已经同步好
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
}

//平行链区块详细信息
// 	 blockdetail : 区块详细信息
//	 sequence :区块序列号
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"`
	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{26}
}

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 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((*BlockSeq)(nil), "types.BlockSeq")
	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((*PrivacyKV)(nil), "types.PrivacyKV")
	proto.RegisterType((*PrivacyKVToken)(nil), "types.PrivacyKVToken")
	proto.RegisterType((*ReceiptsAndPrivacyKV)(nil), "types.ReceiptsAndPrivacyKV")
	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((*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((*ParaChainBlockDetail)(nil), "types.ParaChainBlockDetail")
}

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

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