// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.31.0
// 	protoc        v3.15.8
// source: blockchain.proto

package types

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type TxType int32

const (
	TxType_NORMAL        TxType = 0
	TxType_GOVERNANCE    TxType = 1
	TxType_REDEPLOY      TxType = 2
	TxType_FEEDELEGATION TxType = 3
	TxType_TRANSFER      TxType = 4
	TxType_CALL          TxType = 5
	TxType_DEPLOY        TxType = 6
	TxType_MULTICALL     TxType = 7
)

// Enum value maps for TxType.
var (
	TxType_name = map[int32]string{
		0: "NORMAL",
		1: "GOVERNANCE",
		2: "REDEPLOY",
		3: "FEEDELEGATION",
		4: "TRANSFER",
		5: "CALL",
		6: "DEPLOY",
		7: "MULTICALL",
	}
	TxType_value = map[string]int32{
		"NORMAL":        0,
		"GOVERNANCE":    1,
		"REDEPLOY":      2,
		"FEEDELEGATION": 3,
		"TRANSFER":      4,
		"CALL":          5,
		"DEPLOY":        6,
		"MULTICALL":     7,
	}
)

func (x TxType) Enum() *TxType {
	p := new(TxType)
	*p = x
	return p
}

func (x TxType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TxType) Descriptor() protoreflect.EnumDescriptor {
	return file_blockchain_proto_enumTypes[0].Descriptor()
}

func (TxType) Type() protoreflect.EnumType {
	return &file_blockchain_proto_enumTypes[0]
}

func (x TxType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TxType.Descriptor instead.
func (TxType) EnumDescriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{0}
}

type Block struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hash   []byte       `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
	Header *BlockHeader `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"`
	Body   *BlockBody   `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
}

func (x *Block) Reset() {
	*x = Block{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Block) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Block) ProtoMessage() {}

func (x *Block) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Block.ProtoReflect.Descriptor instead.
func (*Block) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{0}
}

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

func (x *Block) GetHeader() *BlockHeader {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *Block) GetBody() *BlockBody {
	if x != nil {
		return x.Body
	}
	return nil
}

type BlockHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChainID          []byte `protobuf:"bytes,1,opt,name=chainID,proto3" json:"chainID,omitempty"`                   // chain identifier
	PrevBlockHash    []byte `protobuf:"bytes,2,opt,name=prevBlockHash,proto3" json:"prevBlockHash,omitempty"`       // hash of previous block
	BlockNo          uint64 `protobuf:"varint,3,opt,name=blockNo,proto3" json:"blockNo,omitempty"`                  // block number
	Timestamp        int64  `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`              // block creation time stamp
	BlocksRootHash   []byte `protobuf:"bytes,5,opt,name=blocksRootHash,proto3" json:"blocksRootHash,omitempty"`     // hash of root of block merkle tree
	TxsRootHash      []byte `protobuf:"bytes,6,opt,name=txsRootHash,proto3" json:"txsRootHash,omitempty"`           // hash of root of transaction merkle tree
	ReceiptsRootHash []byte `protobuf:"bytes,7,opt,name=receiptsRootHash,proto3" json:"receiptsRootHash,omitempty"` // hash of root of receipt merkle tree
	Confirms         uint64 `protobuf:"varint,8,opt,name=confirms,proto3" json:"confirms,omitempty"`                // number of blocks this block is able to confirm
	PubKey           []byte `protobuf:"bytes,9,opt,name=pubKey,proto3" json:"pubKey,omitempty"`                     // block producer's public key
	CoinbaseAccount  []byte `protobuf:"bytes,10,opt,name=coinbaseAccount,proto3" json:"coinbaseAccount,omitempty"`  // address of account to receive fees
	Sign             []byte `protobuf:"bytes,11,opt,name=sign,proto3" json:"sign,omitempty"`                        // block producer's signature of BlockHeader
	Consensus        []byte `protobuf:"bytes,12,opt,name=consensus,proto3" json:"consensus,omitempty"`              // consensus meta
}

func (x *BlockHeader) Reset() {
	*x = BlockHeader{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BlockHeader) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockHeader) ProtoMessage() {}

func (x *BlockHeader) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BlockHeader.ProtoReflect.Descriptor instead.
func (*BlockHeader) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{1}
}

func (x *BlockHeader) GetChainID() []byte {
	if x != nil {
		return x.ChainID
	}
	return nil
}

func (x *BlockHeader) GetPrevBlockHash() []byte {
	if x != nil {
		return x.PrevBlockHash
	}
	return nil
}

func (x *BlockHeader) GetBlockNo() uint64 {
	if x != nil {
		return x.BlockNo
	}
	return 0
}

func (x *BlockHeader) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *BlockHeader) GetBlocksRootHash() []byte {
	if x != nil {
		return x.BlocksRootHash
	}
	return nil
}

func (x *BlockHeader) GetTxsRootHash() []byte {
	if x != nil {
		return x.TxsRootHash
	}
	return nil
}

func (x *BlockHeader) GetReceiptsRootHash() []byte {
	if x != nil {
		return x.ReceiptsRootHash
	}
	return nil
}

func (x *BlockHeader) GetConfirms() uint64 {
	if x != nil {
		return x.Confirms
	}
	return 0
}

func (x *BlockHeader) GetPubKey() []byte {
	if x != nil {
		return x.PubKey
	}
	return nil
}

func (x *BlockHeader) GetCoinbaseAccount() []byte {
	if x != nil {
		return x.CoinbaseAccount
	}
	return nil
}

func (x *BlockHeader) GetSign() []byte {
	if x != nil {
		return x.Sign
	}
	return nil
}

func (x *BlockHeader) GetConsensus() []byte {
	if x != nil {
		return x.Consensus
	}
	return nil
}

type BlockBody struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Txs []*Tx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"`
}

func (x *BlockBody) Reset() {
	*x = BlockBody{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BlockBody) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockBody) ProtoMessage() {}

func (x *BlockBody) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BlockBody.ProtoReflect.Descriptor instead.
func (*BlockBody) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{2}
}

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

type TxList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Txs []*Tx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"`
}

func (x *TxList) Reset() {
	*x = TxList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TxList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TxList) ProtoMessage() {}

func (x *TxList) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TxList.ProtoReflect.Descriptor instead.
func (*TxList) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{3}
}

func (x *TxList) GetTxs() []*Tx {
	if x != nil {
		return x.Txs
	}
	return nil
}

type Tx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hash []byte  `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
	Body *TxBody `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
}

func (x *Tx) Reset() {
	*x = Tx{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Tx) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Tx) ProtoMessage() {}

func (x *Tx) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Tx.ProtoReflect.Descriptor instead.
func (*Tx) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{4}
}

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

func (x *Tx) GetBody() *TxBody {
	if x != nil {
		return x.Body
	}
	return nil
}

type TxBody struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Nonce       uint64 `protobuf:"varint,1,opt,name=nonce,proto3" json:"nonce,omitempty"`        // increasing number used only once per sender account
	Account     []byte `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"`     // decoded account address
	Recipient   []byte `protobuf:"bytes,3,opt,name=recipient,proto3" json:"recipient,omitempty"` // decoded account address
	Amount      []byte `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`       // variable-length big integer
	Payload     []byte `protobuf:"bytes,5,opt,name=payload,proto3" json:"payload,omitempty"`
	GasLimit    uint64 `protobuf:"varint,6,opt,name=gasLimit,proto3" json:"gasLimit,omitempty"` // maximum gas used for this transaction. 0 = no limit
	GasPrice    []byte `protobuf:"bytes,7,opt,name=gasPrice,proto3" json:"gasPrice,omitempty"`  // variable-length big integer. currently not used
	Type        TxType `protobuf:"varint,8,opt,name=type,proto3,enum=types.TxType" json:"type,omitempty"`
	ChainIdHash []byte `protobuf:"bytes,9,opt,name=chainIdHash,proto3" json:"chainIdHash,omitempty"` // hash value of chain identifier in the block
	Sign        []byte `protobuf:"bytes,10,opt,name=sign,proto3" json:"sign,omitempty"`              // sender's signature for this TxBody
}

func (x *TxBody) Reset() {
	*x = TxBody{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TxBody) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TxBody) ProtoMessage() {}

func (x *TxBody) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TxBody.ProtoReflect.Descriptor instead.
func (*TxBody) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{5}
}

func (x *TxBody) GetNonce() uint64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *TxBody) GetAccount() []byte {
	if x != nil {
		return x.Account
	}
	return nil
}

func (x *TxBody) GetRecipient() []byte {
	if x != nil {
		return x.Recipient
	}
	return nil
}

func (x *TxBody) GetAmount() []byte {
	if x != nil {
		return x.Amount
	}
	return nil
}

func (x *TxBody) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *TxBody) GetGasLimit() uint64 {
	if x != nil {
		return x.GasLimit
	}
	return 0
}

func (x *TxBody) GetGasPrice() []byte {
	if x != nil {
		return x.GasPrice
	}
	return nil
}

func (x *TxBody) GetType() TxType {
	if x != nil {
		return x.Type
	}
	return TxType_NORMAL
}

func (x *TxBody) GetChainIdHash() []byte {
	if x != nil {
		return x.ChainIdHash
	}
	return nil
}

func (x *TxBody) GetSign() []byte {
	if x != nil {
		return x.Sign
	}
	return nil
}

// TxIdx specifies a transaction's block hash and index within the block body
type TxIdx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHash []byte `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	Idx       int32  `protobuf:"varint,2,opt,name=idx,proto3" json:"idx,omitempty"`
}

func (x *TxIdx) Reset() {
	*x = TxIdx{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TxIdx) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TxIdx) ProtoMessage() {}

func (x *TxIdx) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TxIdx.ProtoReflect.Descriptor instead.
func (*TxIdx) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{6}
}

func (x *TxIdx) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *TxIdx) GetIdx() int32 {
	if x != nil {
		return x.Idx
	}
	return 0
}

type TxInBlock struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TxIdx *TxIdx `protobuf:"bytes,1,opt,name=txIdx,proto3" json:"txIdx,omitempty"`
	Tx    *Tx    `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
}

func (x *TxInBlock) Reset() {
	*x = TxInBlock{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TxInBlock) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TxInBlock) ProtoMessage() {}

func (x *TxInBlock) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TxInBlock.ProtoReflect.Descriptor instead.
func (*TxInBlock) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{7}
}

func (x *TxInBlock) GetTxIdx() *TxIdx {
	if x != nil {
		return x.TxIdx
	}
	return nil
}

func (x *TxInBlock) GetTx() *Tx {
	if x != nil {
		return x.Tx
	}
	return nil
}

type State struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Nonce            uint64 `protobuf:"varint,1,opt,name=nonce,proto3" json:"nonce,omitempty"`
	Balance          []byte `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"`
	CodeHash         []byte `protobuf:"bytes,3,opt,name=codeHash,proto3" json:"codeHash,omitempty"`
	StorageRoot      []byte `protobuf:"bytes,4,opt,name=storageRoot,proto3" json:"storageRoot,omitempty"`
	SqlRecoveryPoint uint64 `protobuf:"varint,5,opt,name=sqlRecoveryPoint,proto3" json:"sqlRecoveryPoint,omitempty"`
	SourceHash       []byte `protobuf:"bytes,6,opt,name=sourceHash,proto3" json:"sourceHash,omitempty"`
}

func (x *State) Reset() {
	*x = State{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *State) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*State) ProtoMessage() {}

func (x *State) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use State.ProtoReflect.Descriptor instead.
func (*State) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{8}
}

func (x *State) GetNonce() uint64 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

func (x *State) GetBalance() []byte {
	if x != nil {
		return x.Balance
	}
	return nil
}

func (x *State) GetCodeHash() []byte {
	if x != nil {
		return x.CodeHash
	}
	return nil
}

func (x *State) GetStorageRoot() []byte {
	if x != nil {
		return x.StorageRoot
	}
	return nil
}

func (x *State) GetSqlRecoveryPoint() uint64 {
	if x != nil {
		return x.SqlRecoveryPoint
	}
	return 0
}

func (x *State) GetSourceHash() []byte {
	if x != nil {
		return x.SourceHash
	}
	return nil
}

type AccountProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	State     *State   `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
	Inclusion bool     `protobuf:"varint,2,opt,name=inclusion,proto3" json:"inclusion,omitempty"`
	Key       []byte   `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
	ProofKey  []byte   `protobuf:"bytes,4,opt,name=proofKey,proto3" json:"proofKey,omitempty"`
	ProofVal  []byte   `protobuf:"bytes,5,opt,name=proofVal,proto3" json:"proofVal,omitempty"`
	Bitmap    []byte   `protobuf:"bytes,6,opt,name=bitmap,proto3" json:"bitmap,omitempty"`
	Height    uint32   `protobuf:"varint,7,opt,name=height,proto3" json:"height,omitempty"`
	AuditPath [][]byte `protobuf:"bytes,8,rep,name=auditPath,proto3" json:"auditPath,omitempty"`
}

func (x *AccountProof) Reset() {
	*x = AccountProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AccountProof) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AccountProof) ProtoMessage() {}

func (x *AccountProof) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AccountProof.ProtoReflect.Descriptor instead.
func (*AccountProof) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{9}
}

func (x *AccountProof) GetState() *State {
	if x != nil {
		return x.State
	}
	return nil
}

func (x *AccountProof) GetInclusion() bool {
	if x != nil {
		return x.Inclusion
	}
	return false
}

func (x *AccountProof) GetKey() []byte {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *AccountProof) GetProofKey() []byte {
	if x != nil {
		return x.ProofKey
	}
	return nil
}

func (x *AccountProof) GetProofVal() []byte {
	if x != nil {
		return x.ProofVal
	}
	return nil
}

func (x *AccountProof) GetBitmap() []byte {
	if x != nil {
		return x.Bitmap
	}
	return nil
}

func (x *AccountProof) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *AccountProof) GetAuditPath() [][]byte {
	if x != nil {
		return x.AuditPath
	}
	return nil
}

type ContractVarProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Value     []byte   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	Inclusion bool     `protobuf:"varint,2,opt,name=inclusion,proto3" json:"inclusion,omitempty"`
	ProofKey  []byte   `protobuf:"bytes,4,opt,name=proofKey,proto3" json:"proofKey,omitempty"`
	ProofVal  []byte   `protobuf:"bytes,5,opt,name=proofVal,proto3" json:"proofVal,omitempty"`
	Bitmap    []byte   `protobuf:"bytes,6,opt,name=bitmap,proto3" json:"bitmap,omitempty"`
	Height    uint32   `protobuf:"varint,7,opt,name=height,proto3" json:"height,omitempty"`
	AuditPath [][]byte `protobuf:"bytes,8,rep,name=auditPath,proto3" json:"auditPath,omitempty"`
	Key       []byte   `protobuf:"bytes,9,opt,name=key,proto3" json:"key,omitempty"`
}

func (x *ContractVarProof) Reset() {
	*x = ContractVarProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ContractVarProof) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContractVarProof) ProtoMessage() {}

func (x *ContractVarProof) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ContractVarProof.ProtoReflect.Descriptor instead.
func (*ContractVarProof) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{10}
}

func (x *ContractVarProof) GetValue() []byte {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *ContractVarProof) GetInclusion() bool {
	if x != nil {
		return x.Inclusion
	}
	return false
}

func (x *ContractVarProof) GetProofKey() []byte {
	if x != nil {
		return x.ProofKey
	}
	return nil
}

func (x *ContractVarProof) GetProofVal() []byte {
	if x != nil {
		return x.ProofVal
	}
	return nil
}

func (x *ContractVarProof) GetBitmap() []byte {
	if x != nil {
		return x.Bitmap
	}
	return nil
}

func (x *ContractVarProof) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ContractVarProof) GetAuditPath() [][]byte {
	if x != nil {
		return x.AuditPath
	}
	return nil
}

func (x *ContractVarProof) GetKey() []byte {
	if x != nil {
		return x.Key
	}
	return nil
}

type StateQueryProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractProof *AccountProof       `protobuf:"bytes,1,opt,name=contractProof,proto3" json:"contractProof,omitempty"`
	VarProofs     []*ContractVarProof `protobuf:"bytes,2,rep,name=varProofs,proto3" json:"varProofs,omitempty"`
}

func (x *StateQueryProof) Reset() {
	*x = StateQueryProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StateQueryProof) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StateQueryProof) ProtoMessage() {}

func (x *StateQueryProof) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StateQueryProof.ProtoReflect.Descriptor instead.
func (*StateQueryProof) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{11}
}

func (x *StateQueryProof) GetContractProof() *AccountProof {
	if x != nil {
		return x.ContractProof
	}
	return nil
}

func (x *StateQueryProof) GetVarProofs() []*ContractVarProof {
	if x != nil {
		return x.VarProofs
	}
	return nil
}

type Receipt struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractAddress   []byte   `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"`
	Status            string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	Ret               string   `protobuf:"bytes,3,opt,name=ret,proto3" json:"ret,omitempty"`
	TxHash            []byte   `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"`
	FeeUsed           []byte   `protobuf:"bytes,5,opt,name=feeUsed,proto3" json:"feeUsed,omitempty"`
	CumulativeFeeUsed []byte   `protobuf:"bytes,6,opt,name=cumulativeFeeUsed,proto3" json:"cumulativeFeeUsed,omitempty"`
	Bloom             []byte   `protobuf:"bytes,7,opt,name=bloom,proto3" json:"bloom,omitempty"`
	Events            []*Event `protobuf:"bytes,8,rep,name=events,proto3" json:"events,omitempty"`
	BlockNo           uint64   `protobuf:"varint,9,opt,name=blockNo,proto3" json:"blockNo,omitempty"`
	BlockHash         []byte   `protobuf:"bytes,10,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	TxIndex           int32    `protobuf:"varint,11,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	From              []byte   `protobuf:"bytes,12,opt,name=from,proto3" json:"from,omitempty"`
	To                []byte   `protobuf:"bytes,13,opt,name=to,proto3" json:"to,omitempty"`
	FeeDelegation     bool     `protobuf:"varint,14,opt,name=feeDelegation,proto3" json:"feeDelegation,omitempty"`
	GasUsed           uint64   `protobuf:"varint,15,opt,name=gasUsed,proto3" json:"gasUsed,omitempty"`
}

func (x *Receipt) Reset() {
	*x = Receipt{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Receipt) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Receipt) ProtoMessage() {}

func (x *Receipt) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Receipt.ProtoReflect.Descriptor instead.
func (*Receipt) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{12}
}

func (x *Receipt) GetContractAddress() []byte {
	if x != nil {
		return x.ContractAddress
	}
	return nil
}

func (x *Receipt) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Receipt) GetRet() string {
	if x != nil {
		return x.Ret
	}
	return ""
}

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

func (x *Receipt) GetFeeUsed() []byte {
	if x != nil {
		return x.FeeUsed
	}
	return nil
}

func (x *Receipt) GetCumulativeFeeUsed() []byte {
	if x != nil {
		return x.CumulativeFeeUsed
	}
	return nil
}

func (x *Receipt) GetBloom() []byte {
	if x != nil {
		return x.Bloom
	}
	return nil
}

func (x *Receipt) GetEvents() []*Event {
	if x != nil {
		return x.Events
	}
	return nil
}

func (x *Receipt) GetBlockNo() uint64 {
	if x != nil {
		return x.BlockNo
	}
	return 0
}

func (x *Receipt) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

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

func (x *Receipt) GetFrom() []byte {
	if x != nil {
		return x.From
	}
	return nil
}

func (x *Receipt) GetTo() []byte {
	if x != nil {
		return x.To
	}
	return nil
}

func (x *Receipt) GetFeeDelegation() bool {
	if x != nil {
		return x.FeeDelegation
	}
	return false
}

func (x *Receipt) GetGasUsed() uint64 {
	if x != nil {
		return x.GasUsed
	}
	return 0
}

type Event struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractAddress []byte `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"`
	EventName       string `protobuf:"bytes,2,opt,name=eventName,proto3" json:"eventName,omitempty"`
	JsonArgs        string `protobuf:"bytes,3,opt,name=jsonArgs,proto3" json:"jsonArgs,omitempty"`
	EventIdx        int32  `protobuf:"varint,4,opt,name=eventIdx,proto3" json:"eventIdx,omitempty"`
	TxHash          []byte `protobuf:"bytes,5,opt,name=txHash,proto3" json:"txHash,omitempty"`
	BlockHash       []byte `protobuf:"bytes,6,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	BlockNo         uint64 `protobuf:"varint,7,opt,name=blockNo,proto3" json:"blockNo,omitempty"`
	TxIndex         int32  `protobuf:"varint,8,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
}

func (x *Event) Reset() {
	*x = Event{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Event) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Event) ProtoMessage() {}

func (x *Event) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{13}
}

func (x *Event) GetContractAddress() []byte {
	if x != nil {
		return x.ContractAddress
	}
	return nil
}

func (x *Event) GetEventName() string {
	if x != nil {
		return x.EventName
	}
	return ""
}

func (x *Event) GetJsonArgs() string {
	if x != nil {
		return x.JsonArgs
	}
	return ""
}

func (x *Event) GetEventIdx() int32 {
	if x != nil {
		return x.EventIdx
	}
	return 0
}

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

func (x *Event) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *Event) GetBlockNo() uint64 {
	if x != nil {
		return x.BlockNo
	}
	return 0
}

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

type FnArgument struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *FnArgument) Reset() {
	*x = FnArgument{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FnArgument) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FnArgument) ProtoMessage() {}

func (x *FnArgument) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FnArgument.ProtoReflect.Descriptor instead.
func (*FnArgument) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{14}
}

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

type Function struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name          string        `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Arguments     []*FnArgument `protobuf:"bytes,2,rep,name=arguments,proto3" json:"arguments,omitempty"`
	Payable       bool          `protobuf:"varint,3,opt,name=payable,proto3" json:"payable,omitempty"`
	View          bool          `protobuf:"varint,4,opt,name=view,proto3" json:"view,omitempty"`
	FeeDelegation bool          `protobuf:"varint,5,opt,name=fee_delegation,json=feeDelegation,proto3" json:"fee_delegation,omitempty"`
}

func (x *Function) Reset() {
	*x = Function{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Function) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Function) ProtoMessage() {}

func (x *Function) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Function.ProtoReflect.Descriptor instead.
func (*Function) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{15}
}

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

func (x *Function) GetArguments() []*FnArgument {
	if x != nil {
		return x.Arguments
	}
	return nil
}

func (x *Function) GetPayable() bool {
	if x != nil {
		return x.Payable
	}
	return false
}

func (x *Function) GetView() bool {
	if x != nil {
		return x.View
	}
	return false
}

func (x *Function) GetFeeDelegation() bool {
	if x != nil {
		return x.FeeDelegation
	}
	return false
}

type StateVar struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	Len  int32  `protobuf:"varint,3,opt,name=len,proto3" json:"len,omitempty"`
}

func (x *StateVar) Reset() {
	*x = StateVar{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StateVar) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StateVar) ProtoMessage() {}

func (x *StateVar) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StateVar.ProtoReflect.Descriptor instead.
func (*StateVar) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{16}
}

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

func (x *StateVar) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *StateVar) GetLen() int32 {
	if x != nil {
		return x.Len
	}
	return 0
}

type ABI struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Version        string      `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	Language       string      `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
	Functions      []*Function `protobuf:"bytes,3,rep,name=functions,proto3" json:"functions,omitempty"`
	StateVariables []*StateVar `protobuf:"bytes,4,rep,name=state_variables,json=stateVariables,proto3" json:"state_variables,omitempty"`
}

func (x *ABI) Reset() {
	*x = ABI{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ABI) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ABI) ProtoMessage() {}

func (x *ABI) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ABI.ProtoReflect.Descriptor instead.
func (*ABI) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{17}
}

func (x *ABI) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *ABI) GetLanguage() string {
	if x != nil {
		return x.Language
	}
	return ""
}

func (x *ABI) GetFunctions() []*Function {
	if x != nil {
		return x.Functions
	}
	return nil
}

func (x *ABI) GetStateVariables() []*StateVar {
	if x != nil {
		return x.StateVariables
	}
	return nil
}

type Query struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractAddress []byte `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"`
	Queryinfo       []byte `protobuf:"bytes,2,opt,name=queryinfo,proto3" json:"queryinfo,omitempty"`
}

func (x *Query) Reset() {
	*x = Query{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Query) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Query) ProtoMessage() {}

func (x *Query) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Query.ProtoReflect.Descriptor instead.
func (*Query) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{18}
}

func (x *Query) GetContractAddress() []byte {
	if x != nil {
		return x.ContractAddress
	}
	return nil
}

func (x *Query) GetQueryinfo() []byte {
	if x != nil {
		return x.Queryinfo
	}
	return nil
}

type StateQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractAddress []byte   `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"`
	Root            []byte   `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"`
	Compressed      bool     `protobuf:"varint,4,opt,name=compressed,proto3" json:"compressed,omitempty"`
	StorageKeys     [][]byte `protobuf:"bytes,5,rep,name=storageKeys,proto3" json:"storageKeys,omitempty"`
}

func (x *StateQuery) Reset() {
	*x = StateQuery{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StateQuery) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StateQuery) ProtoMessage() {}

func (x *StateQuery) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StateQuery.ProtoReflect.Descriptor instead.
func (*StateQuery) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{19}
}

func (x *StateQuery) GetContractAddress() []byte {
	if x != nil {
		return x.ContractAddress
	}
	return nil
}

func (x *StateQuery) GetRoot() []byte {
	if x != nil {
		return x.Root
	}
	return nil
}

func (x *StateQuery) GetCompressed() bool {
	if x != nil {
		return x.Compressed
	}
	return false
}

func (x *StateQuery) GetStorageKeys() [][]byte {
	if x != nil {
		return x.StorageKeys
	}
	return nil
}

type FilterInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContractAddress []byte `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"`
	EventName       string `protobuf:"bytes,2,opt,name=eventName,proto3" json:"eventName,omitempty"`
	Blockfrom       uint64 `protobuf:"varint,3,opt,name=blockfrom,proto3" json:"blockfrom,omitempty"`
	Blockto         uint64 `protobuf:"varint,4,opt,name=blockto,proto3" json:"blockto,omitempty"`
	Desc            bool   `protobuf:"varint,5,opt,name=desc,proto3" json:"desc,omitempty"`
	ArgFilter       []byte `protobuf:"bytes,6,opt,name=argFilter,proto3" json:"argFilter,omitempty"`
	RecentBlockCnt  int32  `protobuf:"varint,7,opt,name=recentBlockCnt,proto3" json:"recentBlockCnt,omitempty"`
}

func (x *FilterInfo) Reset() {
	*x = FilterInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FilterInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilterInfo) ProtoMessage() {}

func (x *FilterInfo) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FilterInfo.ProtoReflect.Descriptor instead.
func (*FilterInfo) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{20}
}

func (x *FilterInfo) GetContractAddress() []byte {
	if x != nil {
		return x.ContractAddress
	}
	return nil
}

func (x *FilterInfo) GetEventName() string {
	if x != nil {
		return x.EventName
	}
	return ""
}

func (x *FilterInfo) GetBlockfrom() uint64 {
	if x != nil {
		return x.Blockfrom
	}
	return 0
}

func (x *FilterInfo) GetBlockto() uint64 {
	if x != nil {
		return x.Blockto
	}
	return 0
}

func (x *FilterInfo) GetDesc() bool {
	if x != nil {
		return x.Desc
	}
	return false
}

func (x *FilterInfo) GetArgFilter() []byte {
	if x != nil {
		return x.ArgFilter
	}
	return nil
}

func (x *FilterInfo) GetRecentBlockCnt() int32 {
	if x != nil {
		return x.RecentBlockCnt
	}
	return 0
}

type Proposal struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id             string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Description    string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	MultipleChoice uint32 `protobuf:"varint,6,opt,name=multipleChoice,proto3" json:"multipleChoice,omitempty"`
}

func (x *Proposal) Reset() {
	*x = Proposal{}
	if protoimpl.UnsafeEnabled {
		mi := &file_blockchain_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Proposal) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Proposal) ProtoMessage() {}

func (x *Proposal) ProtoReflect() protoreflect.Message {
	mi := &file_blockchain_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Proposal.ProtoReflect.Descriptor instead.
func (*Proposal) Descriptor() ([]byte, []int) {
	return file_blockchain_proto_rawDescGZIP(), []int{21}
}

func (x *Proposal) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Proposal) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *Proposal) GetMultipleChoice() uint32 {
	if x != nil {
		return x.MultipleChoice
	}
	return 0
}

var File_blockchain_proto protoreflect.FileDescriptor

var file_blockchain_proto_rawDesc = []byte{
	0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x05, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x12, 0x24, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f,
	0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x8b, 0x03, 0x0a, 0x0b, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x12, 0x26, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61,
	0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73,
	0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x78, 0x73, 0x52,
	0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74,
	0x78, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65,
	0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x52, 0x6f,
	0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
	0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
	0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f,
	0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6f, 0x6e,
	0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x22, 0x28, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42,
	0x6f, 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x09, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x78, 0x52, 0x03, 0x74, 0x78, 0x73,
	0x22, 0x25, 0x0a, 0x06, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x74, 0x78,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x54, 0x78, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0x3b, 0x0a, 0x02, 0x54, 0x78, 0x12, 0x12, 0x0a,
	0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73,
	0x68, 0x12, 0x21, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x78, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04,
	0x62, 0x6f, 0x64, 0x79, 0x22, 0x99, 0x02, 0x0a, 0x06, 0x54, 0x78, 0x42, 0x6f, 0x64, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
	0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12,
	0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x08, 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x67,
	0x61, 0x73, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x67,
	0x61, 0x73, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x78,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x49, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04,
	0x73, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e,
	0x22, 0x37, 0x0a, 0x05, 0x54, 0x78, 0x49, 0x64, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x78, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x69, 0x64, 0x78, 0x22, 0x4a, 0x0a, 0x09, 0x54, 0x78, 0x49,
	0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x78, 0x49, 0x64, 0x78, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x78,
	0x49, 0x64, 0x78, 0x52, 0x05, 0x74, 0x78, 0x49, 0x64, 0x78, 0x12, 0x19, 0x0a, 0x02, 0x74, 0x78,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54,
	0x78, 0x52, 0x02, 0x74, 0x78, 0x22, 0xc1, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
	0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
	0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12,
	0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a,
	0x10, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x61, 0x73, 0x68, 0x22, 0xe8, 0x01, 0x0a, 0x0c, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x22, 0x0a, 0x05, 0x73, 0x74,
	0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c,
	0x0a, 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
	0x6f, 0x6f, 0x66, 0x56, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72,
	0x6f, 0x6f, 0x66, 0x56, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x50,
	0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74,
	0x50, 0x61, 0x74, 0x68, 0x22, 0xe4, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63,
	0x74, 0x56, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x56, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x56, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x12, 0x16, 0x0a,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x50, 0x61,
	0x74, 0x68, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x50,
	0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x83, 0x01, 0x0a, 0x0f,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12,
	0x39, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x35, 0x0a, 0x09, 0x76, 0x61,
	0x72, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x61,
	0x72, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x09, 0x76, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x73, 0x22, 0xaf, 0x03, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x28, 0x0a,
	0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x10, 0x0a, 0x03, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65,
	0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x65, 0x65,
	0x55, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x65, 0x65, 0x55,
	0x73, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76,
	0x65, 0x46, 0x65, 0x65, 0x55, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11,
	0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x65, 0x65, 0x55, 0x73, 0x65,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x05, 0x62, 0x6c, 0x6f, 0x6f, 0x6d, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74,
	0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a,
	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x66,
	0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x02, 0x74, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x44,
	0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x73,
	0x55, 0x73, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x61, 0x73, 0x55,
	0x73, 0x65, 0x64, 0x22, 0xf1, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a,
	0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74,
	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e,
	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x41, 0x72, 0x67,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x41, 0x72, 0x67,
	0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x78, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x78, 0x12, 0x16, 0x0a,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74,
	0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61,
	0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x12, 0x18, 0x0a,
	0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
	0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x0a, 0x0a, 0x46, 0x6e, 0x41, 0x72, 0x67,
	0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x08, 0x46, 0x75,
	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x61, 0x72,
	0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x46, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70,
	0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61,
	0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x65, 0x65,
	0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x44, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x03, 0x41, 0x42, 0x49, 0x12, 0x18,
	0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72,
	0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x52, 0x0e, 0x73,
	0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x4f, 0x0a,
	0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61,
	0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x92,
	0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a,
	0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63,
	0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0c,
	0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x4a, 0x04, 0x08,
	0x02, 0x10, 0x03, 0x22, 0xe6, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09,
	0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x61, 0x72, 0x67, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c,
	0x6f, 0x63, 0x6b, 0x43, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65,
	0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6e, 0x74, 0x22, 0x64, 0x0a, 0x08,
	0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x75,
	0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69,
	0x63, 0x65, 0x2a, 0x78, 0x0a, 0x06, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06,
	0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4f, 0x56, 0x45,
	0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x44, 0x45,
	0x50, 0x4c, 0x4f, 0x59, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x45, 0x45, 0x44, 0x45, 0x4c,
	0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x52, 0x41,
	0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x41, 0x4c, 0x4c, 0x10,
	0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x10, 0x06, 0x12, 0x0d, 0x0a,
	0x09, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x07, 0x42, 0x08, 0x5a, 0x06,
	0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_blockchain_proto_rawDescOnce sync.Once
	file_blockchain_proto_rawDescData = file_blockchain_proto_rawDesc
)

func file_blockchain_proto_rawDescGZIP() []byte {
	file_blockchain_proto_rawDescOnce.Do(func() {
		file_blockchain_proto_rawDescData = protoimpl.X.CompressGZIP(file_blockchain_proto_rawDescData)
	})
	return file_blockchain_proto_rawDescData
}

var file_blockchain_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_blockchain_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_blockchain_proto_goTypes = []interface{}{
	(TxType)(0),              // 0: types.TxType
	(*Block)(nil),            // 1: types.Block
	(*BlockHeader)(nil),      // 2: types.BlockHeader
	(*BlockBody)(nil),        // 3: types.BlockBody
	(*TxList)(nil),           // 4: types.TxList
	(*Tx)(nil),               // 5: types.Tx
	(*TxBody)(nil),           // 6: types.TxBody
	(*TxIdx)(nil),            // 7: types.TxIdx
	(*TxInBlock)(nil),        // 8: types.TxInBlock
	(*State)(nil),            // 9: types.State
	(*AccountProof)(nil),     // 10: types.AccountProof
	(*ContractVarProof)(nil), // 11: types.ContractVarProof
	(*StateQueryProof)(nil),  // 12: types.StateQueryProof
	(*Receipt)(nil),          // 13: types.Receipt
	(*Event)(nil),            // 14: types.Event
	(*FnArgument)(nil),       // 15: types.FnArgument
	(*Function)(nil),         // 16: types.Function
	(*StateVar)(nil),         // 17: types.StateVar
	(*ABI)(nil),              // 18: types.ABI
	(*Query)(nil),            // 19: types.Query
	(*StateQuery)(nil),       // 20: types.StateQuery
	(*FilterInfo)(nil),       // 21: types.FilterInfo
	(*Proposal)(nil),         // 22: types.Proposal
}
var file_blockchain_proto_depIdxs = []int32{
	2,  // 0: types.Block.header:type_name -> types.BlockHeader
	3,  // 1: types.Block.body:type_name -> types.BlockBody
	5,  // 2: types.BlockBody.txs:type_name -> types.Tx
	5,  // 3: types.TxList.txs:type_name -> types.Tx
	6,  // 4: types.Tx.body:type_name -> types.TxBody
	0,  // 5: types.TxBody.type:type_name -> types.TxType
	7,  // 6: types.TxInBlock.txIdx:type_name -> types.TxIdx
	5,  // 7: types.TxInBlock.tx:type_name -> types.Tx
	9,  // 8: types.AccountProof.state:type_name -> types.State
	10, // 9: types.StateQueryProof.contractProof:type_name -> types.AccountProof
	11, // 10: types.StateQueryProof.varProofs:type_name -> types.ContractVarProof
	14, // 11: types.Receipt.events:type_name -> types.Event
	15, // 12: types.Function.arguments:type_name -> types.FnArgument
	16, // 13: types.ABI.functions:type_name -> types.Function
	17, // 14: types.ABI.state_variables:type_name -> types.StateVar
	15, // [15:15] is the sub-list for method output_type
	15, // [15:15] is the sub-list for method input_type
	15, // [15:15] is the sub-list for extension type_name
	15, // [15:15] is the sub-list for extension extendee
	0,  // [0:15] is the sub-list for field type_name
}

func init() { file_blockchain_proto_init() }
func file_blockchain_proto_init() {
	if File_blockchain_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_blockchain_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Block); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlockHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlockBody); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TxList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TxBody); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TxIdx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TxInBlock); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*State); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContractVarProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StateQueryProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Receipt); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FnArgument); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Function); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StateVar); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ABI); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Query); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StateQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FilterInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_blockchain_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Proposal); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_blockchain_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   22,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_blockchain_proto_goTypes,
		DependencyIndexes: file_blockchain_proto_depIdxs,
		EnumInfos:         file_blockchain_proto_enumTypes,
		MessageInfos:      file_blockchain_proto_msgTypes,
	}.Build()
	File_blockchain_proto = out.File
	file_blockchain_proto_rawDesc = nil
	file_blockchain_proto_goTypes = nil
	file_blockchain_proto_depIdxs = nil
}
