rwsetutil

package
v0.0.0-...-fbe82ab Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2019 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewKVRead

func NewKVRead(key string, version *version.Height) *kvrwset.KVRead

newkvread有助于构造原型消息kvrwset.kvread

func NewVersion

func NewVersion(protoVersion *kvrwset.Version) *version.Height

newversion有助于将原型消息kvrwset.version转换为version.height

Types

type CollHashedRwSet

type CollHashedRwSet struct {
	CollectionName string
	HashedRwSet    *kvrwset.HashedRWSet
	PvtRwSetHash   []byte
}

collhashedrwset封装特定集合的“kvrwset.hashedrwset”协议消息

type CollPvtRwSet

type CollPvtRwSet struct {
	CollectionName string
	KvRwSet        *kvrwset.KVRWSet
}

collpvtrwset为特定集合的私有rwset封装“kvrwset.kvrwset”协议消息 私有rwset中的kvrwset不应包含范围查询信息

type Hash

type Hash []byte

哈希表示哈希的字节数

type MerkleTreeLevel

type MerkleTreeLevel uint32

用于表示merkle树级别的merkletelevel

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 NewRWSetBuilder

func NewRWSetBuilder() *RWSetBuilder

new rwsetbuilder构造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

完成如果需要处理任何挂起的结果 这将返回最终挂起的结果(即[]*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

func (txRwSet *TxRwSet) FromProtoBytes(protoBytes []byte) error

FromProtoBytes将ProtoBytes反序列化为TxReadWriteSet Proto消息并填充“TxRwset”

func (*TxRwSet) GetPvtDataHash

func (txRwSet *TxRwSet) GetPvtDataHash(ns, coll string) []byte

getpvtdatahash返回给定命名空间和集合的pvtrwsethash

func (*TxRwSet) NumCollections

func (txRwSet *TxRwSet) NumCollections() int

func (*TxRwSet) ToProtoBytes

func (txRwSet *TxRwSet) ToProtoBytes() ([]byte, error)

toprotobytes构造txreadwriteset proto消息并使用protobuf marshal进行序列化

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL