Documentation ¶
Index ¶
- func NewKVRead(key string, version *version.Height) *kvrwset.KVRead
- func NewVersion(protoVersion *kvrwset.Version) *version.Height
- type CollHashedRwSet
- type CollPvtRwSet
- type Hash
- type MerkleTreeLevel
- type NsPvtRwSet
- type NsRwSet
- type RWSetBuilder
- func (b *RWSetBuilder) AddToHashedMetadataWriteSet(ns, coll, key string, metadata map[string][]byte)
- func (b *RWSetBuilder) AddToHashedReadSet(ns string, coll string, key string, version *version.Height)
- func (b *RWSetBuilder) AddToMetadataWriteSet(ns, key string, metadata map[string][]byte)
- func (b *RWSetBuilder) AddToPvtAndHashedWriteSet(ns string, coll string, key string, value []byte)
- func (b *RWSetBuilder) AddToRangeQuerySet(ns string, rqi *kvrwset.RangeQueryInfo)
- func (b *RWSetBuilder) AddToReadSet(ns string, key string, version *version.Height)
- func (b *RWSetBuilder) AddToWriteSet(ns string, key string, value []byte)
- func (b *RWSetBuilder) GetTxReadWriteSet() *TxRwSet
- func (b *RWSetBuilder) GetTxSimulationResults() (*ledger.TxSimulationResults, error)
- type RangeQueryResultsHelper
- type TxPvtRwSet
- type TxRwSet
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CollHashedRwSet ¶
type CollHashedRwSet struct { CollectionName string HashedRwSet *kvrwset.HashedRWSet PvtRwSetHash []byte }
collhashedrwset封装特定集合的“kvrwset.hashedrwset”协议消息
type CollPvtRwSet ¶
collpvtrwset为特定集合的私有rwset封装“kvrwset.kvrwset”协议消息 私有rwset中的kvrwset不应包含范围查询信息
type NsPvtRwSet ¶
type NsPvtRwSet struct { NameSpace string CollPvtRwSets []*CollPvtRwSet }
nspvtrwset表示“rwset.nspvtreadwriteset”协议消息
type NsRwSet ¶
type NsRwSet struct { NameSpace string KvRwSet *kvrwset.KVRWSet CollHashedRwSets []*CollHashedRwSet }
NSRwset为特定的名称空间(链码)封装“kvrwset.kvrwset”协议消息
type RWSetBuilder ¶
type RWSetBuilder struct {
// contains filtered or unexported fields
}
rwsetbuilder帮助构建读写集
func (*RWSetBuilder) AddToHashedMetadataWriteSet ¶
func (b *RWSetBuilder) AddToHashedMetadataWriteSet(ns, coll, key string, metadata map[string][]byte)
addToHashedMetadataWriteSet向哈希写入集中的键添加元数据
func (*RWSetBuilder) AddToHashedReadSet ¶
func (b *RWSetBuilder) AddToHashedReadSet(ns string, coll string, key string, version *version.Height)
addtohashedreadset向散列读取集添加键和相应的版本
func (*RWSetBuilder) AddToMetadataWriteSet ¶
func (b *RWSetBuilder) AddToMetadataWriteSet(ns, key string, metadata map[string][]byte)
AddToMetadataWriteSet adds a metadata to a key in the write-set “metadata”参数的nil/empty映射指示删除元数据
func (*RWSetBuilder) AddToPvtAndHashedWriteSet ¶
func (b *RWSetBuilder) AddToPvtAndHashedWriteSet(ns string, coll string, key string, value []byte)
addtopvtandhashedwriteset向私有和哈希写入集添加键和值
func (*RWSetBuilder) AddToRangeQuerySet ¶
func (b *RWSetBuilder) AddToRangeQuerySet(ns string, rqi *kvrwset.RangeQueryInfo)
addtorangequeryset添加用于执行幻象读取验证的范围查询信息
func (*RWSetBuilder) AddToReadSet ¶
func (b *RWSetBuilder) AddToReadSet(ns string, key string, version *version.Height)
addtoreadset向读取集添加一个键和相应的版本
func (*RWSetBuilder) AddToWriteSet ¶
func (b *RWSetBuilder) AddToWriteSet(ns string, key string, value []byte)
addToWriteset向写入集添加键和值
func (*RWSetBuilder) GetTxReadWriteSet ¶
func (b *RWSetBuilder) GetTxReadWriteSet() *TxRwSet
gettxreadwriteset返回读写集 todo在txmgr开始使用此处介绍的新函数“gettxSimulationResults”时将此函数设为私有
func (*RWSetBuilder) GetTxSimulationResults ¶
func (b *RWSetBuilder) GetTxSimulationResults() (*ledger.TxSimulationResults, error)
GetTxSimulationResults返回公共RWset的协议字节 (公共数据+私有数据散列)和事务的私有RWset
type RangeQueryResultsHelper ¶
type RangeQueryResultsHelper struct {
// contains filtered or unexported fields
}
RangeQueryResultsHelper有助于在验证期间为幻象项检测准备范围查询结果。 在迭代过程中,结果将被发送。 如果“hashingnabled”设置为true,则会在结果上使用散列构建merkle树。 Merkle树有助于减小rwset的大小,否则将需要存储所有原始kvreads
树的心理模型可以描述如下: 所有结果都被视为树的叶节点(级别0)。树的下一级是通过收集“maxdegree+1”来构建的。 上一级别的项,并对整个集合进行哈希处理。 树的更高层次以类似的方式构建,但是唯一的区别是不同于0级 (其中集合由原始kvreads组成),级别1及以上的集合由哈希组成 (上一级的集合)。 重复这个过程,直到我们达到一个水平,我们剩下的项目数小于或等于“maxdegree”。 在上一个集合中,项数可以小于“maxdegree”(除非这是给定级别上唯一的集合)。
因此,如果输入结果总数小于或等于“maxdegree”,则根本不执行哈希操作。 计算的最终输出是原始结果的集合(如果小于或等于“maxdegree”),或者 树中某一级别的哈希(等于“maxdegree”)的集合。
应调用“addresult”函数以提供下一个结果,并在末尾调用“done”函数。 “done”函数执行最终处理并返回最终输出
func NewRangeQueryResultsHelper ¶
func NewRangeQueryResultsHelper(enableHashing bool, maxDegree uint32) (*RangeQueryResultsHelper, error)
NewRangeQueryResultShelper构造RangeQueryResultShelper
func (*RangeQueryResultsHelper) AddResult ¶
func (helper *RangeQueryResultsHelper) AddResult(kvRead *kvrwset.KVRead) error
addresult添加新的查询结果进行处理。 将结果放入挂起结果列表。如果挂起的结果数超过“maxdegree”, 使用结果以逐步更新Merkle树
func (*RangeQueryResultsHelper) Done ¶
func (helper *RangeQueryResultsHelper) Done() ([]*kvrwset.KVRead, *kvrwset.QueryReadsMerkleSummary, error)
完成如果需要处理任何挂起的结果 这将返回最终挂起的结果(即[]*kvread)和结果的散列(即*merklesummary) 这两个结果中只有一个是非零的(除非从未添加任何结果)。 如果且仅当'enableHashing'设置为false,则'merklesummary'将为nil 或者总结果数小于'maxdegree'
func (*RangeQueryResultsHelper) GetMerkleSummary ¶
func (helper *RangeQueryResultsHelper) GetMerkleSummary() *kvrwset.QueryReadsMerkleSummary
getmerklesummary返回merklesummary的当前状态 Merkle树的这种中间状态有助于在验证期间及早检测到不匹配。 这有助于在验证期间不需要构建完整的Merkle树。 如果结果集的早期部分不匹配。
type TxPvtRwSet ¶
type TxPvtRwSet struct {
NsPvtRwSet []*NsPvtRwSet
}
txpvtrwset表示“rwset.txpvtreadwriteset”协议消息
func TxPvtRwSetFromProtoMsg ¶
func TxPvtRwSetFromProtoMsg(protoMsg *rwset.TxPvtReadWriteSet) (*TxPvtRwSet, error)
func (*TxPvtRwSet) FromProtoBytes ¶
func (txPvtRwSet *TxPvtRwSet) FromProtoBytes(protoBytes []byte) error
FromProtoBytes将ProtoBytes反序列化为“TxPvTreadWriteSet”Proto消息并填充“TxPvTrwset”
func (*TxPvtRwSet) ToProtoBytes ¶
func (txPvtRwSet *TxPvtRwSet) ToProtoBytes() ([]byte, error)
toprotobytes使用protobuf marshal构造“txpvtreadwriteset”proto消息并序列化
type TxRwSet ¶
type TxRwSet struct {
NsRwSets []*NsRwSet
}
txrwset充当'rwset.txreadwriteset'协议消息的代理,并帮助专门为kv数据模型构造读写集。
func TxRwSetFromProtoMsg ¶
func TxRwSetFromProtoMsg(protoMsg *rwset.TxReadWriteSet) (*TxRwSet, error)
func (*TxRwSet) FromProtoBytes ¶
FromProtoBytes将ProtoBytes反序列化为TxReadWriteSet Proto消息并填充“TxRwset”
func (*TxRwSet) GetPvtDataHash ¶
getpvtdatahash返回给定命名空间和集合的pvtrwsethash
func (*TxRwSet) NumCollections ¶
func (*TxRwSet) ToProtoBytes ¶
toprotobytes构造txreadwriteset proto消息并使用protobuf marshal进行序列化