HashedRWSet encapsulates hashed representation of a private read-write set for KV or Document data model
type HashedRWSet struct { HashedReads []*KVReadHash `protobuf:"bytes,1,rep,name=hashed_reads,json=hashedReads,proto3" json:"hashed_reads,omitempty"` HashedWrites []*KVWriteHash `protobuf:"bytes,2,rep,name=hashed_writes,json=hashedWrites,proto3" json:"hashed_writes,omitempty"` MetadataWrites []*KVMetadataWriteHash `protobuf:"bytes,3,rep,name=metadata_writes,json=metadataWrites,proto3" json:"metadata_writes,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*HashedRWSet) Descriptor() ([]byte, []int)
func (m *HashedRWSet) GetHashedReads() []*KVReadHash
func (m *HashedRWSet) GetHashedWrites() []*KVWriteHash
func (m *HashedRWSet) GetMetadataWrites() []*KVMetadataWriteHash
func (*HashedRWSet) ProtoMessage()
func (m *HashedRWSet) Reset()
func (m *HashedRWSet) String() string
func (m *HashedRWSet) XXX_DiscardUnknown()
func (m *HashedRWSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *HashedRWSet) XXX_Merge(src proto.Message)
func (m *HashedRWSet) XXX_Size() int
func (m *HashedRWSet) XXX_Unmarshal(b []byte) error
KVMetadataEntry captures a 'name'ed entry in the metadata of a key/key-hash.
type KVMetadataEntry struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVMetadataEntry) Descriptor() ([]byte, []int)
func (m *KVMetadataEntry) GetName() string
func (m *KVMetadataEntry) GetValue() []byte
func (*KVMetadataEntry) ProtoMessage()
func (m *KVMetadataEntry) Reset()
func (m *KVMetadataEntry) String() string
func (m *KVMetadataEntry) XXX_DiscardUnknown()
func (m *KVMetadataEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVMetadataEntry) XXX_Merge(src proto.Message)
func (m *KVMetadataEntry) XXX_Size() int
func (m *KVMetadataEntry) XXX_Unmarshal(b []byte) error
KVMetadataWrite captures all the entries in the metadata associated with a key
type KVMetadataWrite struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Entries []*KVMetadataEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVMetadataWrite) Descriptor() ([]byte, []int)
func (m *KVMetadataWrite) GetEntries() []*KVMetadataEntry
func (m *KVMetadataWrite) GetKey() string
func (*KVMetadataWrite) ProtoMessage()
func (m *KVMetadataWrite) Reset()
func (m *KVMetadataWrite) String() string
func (m *KVMetadataWrite) XXX_DiscardUnknown()
func (m *KVMetadataWrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVMetadataWrite) XXX_Merge(src proto.Message)
func (m *KVMetadataWrite) XXX_Size() int
func (m *KVMetadataWrite) XXX_Unmarshal(b []byte) error
KVMetadataWriteHash captures all the upserts to the metadata associated with a key hash
type KVMetadataWriteHash struct { KeyHash []byte `protobuf:"bytes,1,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` Entries []*KVMetadataEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVMetadataWriteHash) Descriptor() ([]byte, []int)
func (m *KVMetadataWriteHash) GetEntries() []*KVMetadataEntry
func (m *KVMetadataWriteHash) GetKeyHash() []byte
func (*KVMetadataWriteHash) ProtoMessage()
func (m *KVMetadataWriteHash) Reset()
func (m *KVMetadataWriteHash) String() string
func (m *KVMetadataWriteHash) XXX_DiscardUnknown()
func (m *KVMetadataWriteHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVMetadataWriteHash) XXX_Merge(src proto.Message)
func (m *KVMetadataWriteHash) XXX_Size() int
func (m *KVMetadataWriteHash) XXX_Unmarshal(b []byte) error
KVRWSet encapsulates the read-write set for a chaincode that operates upon a KV or Document data model This structure is used for both the public data and the private data
type KVRWSet struct { Reads []*KVRead `protobuf:"bytes,1,rep,name=reads,proto3" json:"reads,omitempty"` RangeQueriesInfo []*RangeQueryInfo `protobuf:"bytes,2,rep,name=range_queries_info,json=rangeQueriesInfo,proto3" json:"range_queries_info,omitempty"` Writes []*KVWrite `protobuf:"bytes,3,rep,name=writes,proto3" json:"writes,omitempty"` MetadataWrites []*KVMetadataWrite `protobuf:"bytes,4,rep,name=metadata_writes,json=metadataWrites,proto3" json:"metadata_writes,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVRWSet) Descriptor() ([]byte, []int)
func (m *KVRWSet) GetMetadataWrites() []*KVMetadataWrite
func (m *KVRWSet) GetRangeQueriesInfo() []*RangeQueryInfo
func (m *KVRWSet) GetReads() []*KVRead
func (m *KVRWSet) GetWrites() []*KVWrite
func (*KVRWSet) ProtoMessage()
func (m *KVRWSet) Reset()
func (m *KVRWSet) String() string
func (m *KVRWSet) XXX_DiscardUnknown()
func (m *KVRWSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVRWSet) XXX_Merge(src proto.Message)
func (m *KVRWSet) XXX_Size() int
func (m *KVRWSet) XXX_Unmarshal(b []byte) error
KVRead captures a read operation performed during transaction simulation A 'nil' version indicates a non-existing key read by the transaction
type KVRead struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Version *Version `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVRead) Descriptor() ([]byte, []int)
func (m *KVRead) GetKey() string
func (m *KVRead) GetVersion() *Version
func (*KVRead) ProtoMessage()
func (m *KVRead) Reset()
func (m *KVRead) String() string
func (m *KVRead) XXX_DiscardUnknown()
func (m *KVRead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVRead) XXX_Merge(src proto.Message)
func (m *KVRead) XXX_Size() int
func (m *KVRead) XXX_Unmarshal(b []byte) error
KVReadHash is similar to the KVRead in spirit. However, it captures the hash of the key instead of the key itself version is kept as is for now. However, if the version also needs to be privacy-protected, it would need to be the hash of the version and hence of 'bytes' type
type KVReadHash struct { KeyHash []byte `protobuf:"bytes,1,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` Version *Version `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVReadHash) Descriptor() ([]byte, []int)
func (m *KVReadHash) GetKeyHash() []byte
func (m *KVReadHash) GetVersion() *Version
func (*KVReadHash) ProtoMessage()
func (m *KVReadHash) Reset()
func (m *KVReadHash) String() string
func (m *KVReadHash) XXX_DiscardUnknown()
func (m *KVReadHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVReadHash) XXX_Merge(src proto.Message)
func (m *KVReadHash) XXX_Size() int
func (m *KVReadHash) XXX_Unmarshal(b []byte) error
KVWrite captures a write (update/delete) operation performed during transaction simulation
type KVWrite struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` IsDelete bool `protobuf:"varint,2,opt,name=is_delete,json=isDelete,proto3" json:"is_delete,omitempty"` Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVWrite) Descriptor() ([]byte, []int)
func (m *KVWrite) GetIsDelete() bool
func (m *KVWrite) GetKey() string
func (m *KVWrite) GetValue() []byte
func (*KVWrite) ProtoMessage()
func (m *KVWrite) Reset()
func (m *KVWrite) String() string
func (m *KVWrite) XXX_DiscardUnknown()
func (m *KVWrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVWrite) XXX_Merge(src proto.Message)
func (m *KVWrite) XXX_Size() int
func (m *KVWrite) XXX_Unmarshal(b []byte) error
KVWriteHash is similar to the KVWrite. It captures a write (update/delete) operation performed during transaction simulation
type KVWriteHash struct { KeyHash []byte `protobuf:"bytes,1,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` IsDelete bool `protobuf:"varint,2,opt,name=is_delete,json=isDelete,proto3" json:"is_delete,omitempty"` ValueHash []byte `protobuf:"bytes,3,opt,name=value_hash,json=valueHash,proto3" json:"value_hash,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*KVWriteHash) Descriptor() ([]byte, []int)
func (m *KVWriteHash) GetIsDelete() bool
func (m *KVWriteHash) GetKeyHash() []byte
func (m *KVWriteHash) GetValueHash() []byte
func (*KVWriteHash) ProtoMessage()
func (m *KVWriteHash) Reset()
func (m *KVWriteHash) String() string
func (m *KVWriteHash) XXX_DiscardUnknown()
func (m *KVWriteHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *KVWriteHash) XXX_Merge(src proto.Message)
func (m *KVWriteHash) XXX_Size() int
func (m *KVWriteHash) XXX_Unmarshal(b []byte) error
QueryReads encapsulates the KVReads for the items read by a transaction as a result of a query execution
type QueryReads struct { KvReads []*KVRead `protobuf:"bytes,1,rep,name=kv_reads,json=kvReads,proto3" json:"kv_reads,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*QueryReads) Descriptor() ([]byte, []int)
func (m *QueryReads) GetKvReads() []*KVRead
func (*QueryReads) ProtoMessage()
func (m *QueryReads) Reset()
func (m *QueryReads) String() string
func (m *QueryReads) XXX_DiscardUnknown()
func (m *QueryReads) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *QueryReads) XXX_Merge(src proto.Message)
func (m *QueryReads) XXX_Size() int
func (m *QueryReads) XXX_Unmarshal(b []byte) error
QueryReadsMerkleSummary encapsulates the Merkle-tree hashes for the QueryReads This allows to reduce the size of RWSet in the presence of query results by storing certain hashes instead of actual results. maxDegree field refers to the maximum number of children in the tree at any level maxLevel field contains the lowest level which has lesser nodes than maxDegree (starting from leaf level)
type QueryReadsMerkleSummary struct { MaxDegree uint32 `protobuf:"varint,1,opt,name=max_degree,json=maxDegree,proto3" json:"max_degree,omitempty"` MaxLevel uint32 `protobuf:"varint,2,opt,name=max_level,json=maxLevel,proto3" json:"max_level,omitempty"` MaxLevelHashes [][]byte `protobuf:"bytes,3,rep,name=max_level_hashes,json=maxLevelHashes,proto3" json:"max_level_hashes,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*QueryReadsMerkleSummary) Descriptor() ([]byte, []int)
func (ms *QueryReadsMerkleSummary) Equal(anotherMS *QueryReadsMerkleSummary) bool
Equal verifies whether the give MerkleSummary is equals to this
func (m *QueryReadsMerkleSummary) GetMaxDegree() uint32
func (m *QueryReadsMerkleSummary) GetMaxLevel() uint32
func (m *QueryReadsMerkleSummary) GetMaxLevelHashes() [][]byte
func (*QueryReadsMerkleSummary) ProtoMessage()
func (m *QueryReadsMerkleSummary) Reset()
func (m *QueryReadsMerkleSummary) String() string
func (m *QueryReadsMerkleSummary) XXX_DiscardUnknown()
func (m *QueryReadsMerkleSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *QueryReadsMerkleSummary) XXX_Merge(src proto.Message)
func (m *QueryReadsMerkleSummary) XXX_Size() int
func (m *QueryReadsMerkleSummary) XXX_Unmarshal(b []byte) error
RangeQueryInfo encapsulates the details of a range query performed by a transaction during simulation. This helps protect transactions from phantom reads by varifying during validation whether any new items got committed within the given range between transaction simuation and validation (in addition to regular checks for updates/deletes of the existing items). readInfo field contains either the KVReads (for the items read by the range query) or a merkle-tree hash if the KVReads exceeds a pre-configured numbers
type RangeQueryInfo struct { StartKey string `protobuf:"bytes,1,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"` EndKey string `protobuf:"bytes,2,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"` ItrExhausted bool `protobuf:"varint,3,opt,name=itr_exhausted,json=itrExhausted,proto3" json:"itr_exhausted,omitempty"` // Types that are valid to be assigned to ReadsInfo: // *RangeQueryInfo_RawReads // *RangeQueryInfo_ReadsMerkleHashes ReadsInfo isRangeQueryInfo_ReadsInfo `protobuf_oneof:"reads_info"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*RangeQueryInfo) Descriptor() ([]byte, []int)
func (m *RangeQueryInfo) GetEndKey() string
func (m *RangeQueryInfo) GetItrExhausted() bool
func (m *RangeQueryInfo) GetRawReads() *QueryReads
func (m *RangeQueryInfo) GetReadsInfo() isRangeQueryInfo_ReadsInfo
func (m *RangeQueryInfo) GetReadsMerkleHashes() *QueryReadsMerkleSummary
func (m *RangeQueryInfo) GetStartKey() string
func (*RangeQueryInfo) ProtoMessage()
func (m *RangeQueryInfo) Reset()
func (rqi *RangeQueryInfo) SetMerkelSummary(merkleSummary *QueryReadsMerkleSummary)
SetMerkelSummary sets the 'readsInfo' field to merkle summary of the raw KVReads of query results
func (rqi *RangeQueryInfo) SetRawReads(kvReads []*KVRead)
SetRawReads sets the 'readsInfo' field to raw KVReads performed by the query
func (m *RangeQueryInfo) String() string
func (m *RangeQueryInfo) XXX_DiscardUnknown()
func (m *RangeQueryInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *RangeQueryInfo) XXX_Merge(src proto.Message)
func (*RangeQueryInfo) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{})
XXX_OneofFuncs is for the internal use of the proto package.
func (m *RangeQueryInfo) XXX_Size() int
func (m *RangeQueryInfo) XXX_Unmarshal(b []byte) error
type RangeQueryInfo_RawReads struct { RawReads *QueryReads `protobuf:"bytes,4,opt,name=raw_reads,json=rawReads,proto3,oneof"` }
type RangeQueryInfo_ReadsMerkleHashes struct { ReadsMerkleHashes *QueryReadsMerkleSummary `protobuf:"bytes,5,opt,name=reads_merkle_hashes,json=readsMerkleHashes,proto3,oneof"` }
Version encapsulates the version of a Key A version of a committed key is maintained as the height of the transaction that committed the key. The height is represenetd as a tuple <blockNum, txNum> where the txNum is the position of the transaction (starting with 0) within block
type Version struct { BlockNum uint64 `protobuf:"varint,1,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` TxNum uint64 `protobuf:"varint,2,opt,name=tx_num,json=txNum,proto3" json:"tx_num,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*Version) Descriptor() ([]byte, []int)
func (m *Version) GetBlockNum() uint64
func (m *Version) GetTxNum() uint64
func (*Version) ProtoMessage()
func (m *Version) Reset()
func (m *Version) String() string
func (m *Version) XXX_DiscardUnknown()
func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (dst *Version) XXX_Merge(src proto.Message)
func (m *Version) XXX_Size() int
func (m *Version) XXX_Unmarshal(b []byte) error