Documentation ¶
Index ¶
- func NewPuller(cs privdata.CollectionStore, g gossip, dataRetriever PrivateDataRetriever, ...) *puller
- type CollectionAccessFactory
- type Coordinator
- type DataStore
- type Dig2PvtRWSetWithConfig
- type Fetcher
- type IdentityDeserializerFactory
- type NoOpReconciler
- type PrivateDataRetriever
- type PvtDataDistributor
- type PvtDataReconciler
- type Reconciler
- type ReconcilerConfig
- type ReconciliationFetcher
- type StorageDataRetriever
- type Support
- type TransientStore
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewPuller ¶
func NewPuller(cs privdata.CollectionStore, g gossip, dataRetriever PrivateDataRetriever, factory CollectionAccessFactory, channel string) *puller
new puller创建新的私有数据puller
Types ¶
type CollectionAccessFactory ¶
type CollectionAccessFactory interface { //基于集合配置的访问策略 AccessPolicy(config *common.CollectionConfig, chainID string) (privdata.CollectionAccessPolicy, error) }
CollectionAccessFactory用于生成集合访问策略的接口
func NewCollectionAccessFactory ¶
func NewCollectionAccessFactory(factory IdentityDeserializerFactory) CollectionAccessFactory
新收进厂
type Coordinator ¶
type Coordinator interface { //StoreBlock提供带有下划线的私有数据的新块 //返回缺少的事务ID StoreBlock(block *common.Block, data util.PvtDataCollections) error //storepvdtata用于将私有数据持久化到临时存储中 StorePvtData(txid string, privData *transientstore2.TxPvtReadWriteSetWithConfigInfo, blckHeight uint64) error //getpvtdata和blockbynum按编号获取block并返回所有相关的私有数据 //pvtDataCollections切片中私有数据的顺序并不意味着 //块中与这些私有数据相关的事务,以获得正确的位置 //需要读取txpvtdata.seqinblock字段 GetPvtDataAndBlockByNum(seqNum uint64, peerAuth common.SignedData) (*common.Block, util.PvtDataCollections, error) //获取最近的块序列号 LedgerHeight() (uint64, error) //关闭协调员,关闭协调员服务 Close() }
协调器协调新的流程 块到达和飞行中瞬态数据,负责 完成给定块的瞬态数据缺失部分。
func NewCoordinator ¶
func NewCoordinator(support Support, selfSignedData common.SignedData) Coordinator
NewCoordinator创建Coordinator的新实例
type DataStore ¶
type DataStore interface { //gettxpvtrwsetbytxid返回迭代器,因为txid可能有多个private //RWSets坚持来自不同的支持者(通过八卦) GetTxPvtRWSetByTxid(txid string, filter ledger.PvtNsCollFilter) (transientstore.RWSetScanner, error) //getpvdtatabynum从分类帐返回一部分私有数据 //对于给定的块并基于指示 //要检索的私有数据的集合和命名空间 GetPvtDataByNum(blockNum uint64, filter ledger.PvtNsCollFilter) ([]*ledger.TxPvtData, error) //getconfigHistoryRetriever返回configHistoryRetriever GetConfigHistoryRetriever() (ledger.ConfigHistoryRetriever, error) //获取最近的块序列号 LedgerHeight() (uint64, error) }
数据存储定义需要获取私有数据的一组API 来自带下划线的数据存储
type Dig2PvtRWSetWithConfig ¶
type Dig2PvtRWSetWithConfig map[privdatacommon.DigKey]*util.PrivateRWSetWithConfig
dig2pvtrwsetwithconfig(配置)
type Fetcher ¶
type Fetcher interface {
// contains filtered or unexported methods
}
缺少定义要获取的API的获取器接口 私有数据元素
type IdentityDeserializerFactory ¶
type IdentityDeserializerFactory interface { //GetIdentityDeserializer返回IdentityDeserializer //指定链的实例 GetIdentityDeserializer(chainID string) msp.IdentityDeserializer }
IdentityDeserializerFactory是要创建的工厂接口 给定通道的IdentityDeserializer
type NoOpReconciler ¶
type NoOpReconciler struct { }
要使用的noopecciler非功能调节器 如果已禁用对帐
func (*NoOpReconciler) Start ¶
func (*NoOpReconciler) Start()
func (*NoOpReconciler) Stop ¶
func (*NoOpReconciler) Stop()
type PrivateDataRetriever ¶
type PrivateDataRetriever interface { //collectionrwset返回给定txid的collectionpvtreadwriteset字节数,并从临时存储返回集合。 CollectionRWSet(dig []*proto.PvtDataDigest, blockNum uint64) (Dig2PvtRWSetWithConfig, bool, error) }
定义支持API的privatedataretriever接口 检索所需的私有数据
type PvtDataDistributor ¶
type PvtDataDistributor interface { //基于策略可靠地分发广播私有数据读写集 Distribute(txID string, privData *transientstore.TxPvtReadWriteSetWithConfigInfo, blkHt uint64) error }
用于定义分发私有数据的API的pvtDataDistributor接口
func NewDistributor ¶
func NewDistributor(chainID string, gossip gossipAdapter, factory CollectionAccessFactory) PvtDataDistributor
newdistributor能够发送的私有数据分发服务器的构造函数 基础集合的专用读写集
type PvtDataReconciler ¶
type PvtDataReconciler interface { //start函数根据调度程序启动协调器,如创建协调器时配置的那样。 Start() //停止功能停止调节器 Stop() }
协调器完成提交期间不可用的私有数据的缺失部分。 这是通过从分类帐中获取丢失的私有数据列表并从其他同行中提取该列表来完成的。
type Reconciler ¶
type Reconciler struct { ReconciliationFetcher committer.Committer // contains filtered or unexported fields }
func NewReconciler ¶
func NewReconciler(c committer.Committer, fetcher ReconciliationFetcher, config *ReconcilerConfig) *Reconciler
NewReconciler创建Reconciler的新实例
func (*Reconciler) Start ¶
func (r *Reconciler) Start()
func (*Reconciler) Stop ¶
func (r *Reconciler) Stop()
type ReconcilerConfig ¶
type ReconcilerConfig struct { IsEnabled bool // contains filtered or unexported fields }
reconcilerconfig保存从core.yaml读取的配置标志
func GetReconcilerConfig ¶
func GetReconcilerConfig() *ReconcilerConfig
此func从core.yaml读取协调器配置值并返回reconcilerconfig
type ReconciliationFetcher ¶
type ReconciliationFetcher interface {
FetchReconciledItems(dig2collectionConfig privdatacommon.Dig2CollectionConfig) (*privdatacommon.FetchedPvtDataContainer, error)
}
定义要获取的API的ReconciliationFetcher接口 必须协调的私有数据元素
type StorageDataRetriever ¶
type StorageDataRetriever interface { //collectionrwset检索give digest相关的私有数据,如果 //否则,available将返回nil、bool,如果从分类帐中提取数据,则返回true;如果从临时存储中提取数据,则返回false,并返回错误。 CollectionRWSet(dig []*gossip2.PvtDataDigest, blockNum uint64) (Dig2PvtRWSetWithConfig, bool, error) }
StorageDataRetriever定义从存储中检索私有日期的API
func NewDataRetriever ¶
func NewDataRetriever(store DataStore) StorageDataRetriever
NewDataRetriever为实现 存储数据检索器接口
type Support ¶
type Support struct { ChainID string privdata.CollectionStore txvalidator.Validator committer.Committer TransientStore Fetcher }
支持将一组接口封装到 按单个结构聚合所需功能
type TransientStore ¶
type TransientStore interface { //PersisteWithConfig存储事务的私有写入集以及集合配置 //在基于txid和块高度的临时存储中,在 PersistWithConfig(txid string, blockHeight uint64, privateSimulationResultsWithConfig *transientstore2.TxPvtReadWriteSetWithConfigInfo) error //持久性将事务的私有写入集存储在临时存储中 Persist(txid string, blockHeight uint64, privateSimulationResults *rwset.TxPvtReadWriteSet) error //gettxpvtrwsetbytxid返回迭代器,因为txid可能有多个private //来自不同代言人的写集(通过八卦) GetTxPvtRWSetByTxid(txid string, filter ledger.PvtNsCollFilter) (transientstore.RWSetScanner, error) //purgebytxids从 //瞬态存储 PurgeByTxids(txids []string) error //purgebyHeight删除块高度小于 //给定的最大阻塞数。换句话说,清除只保留私有写集。 //保留在MaxBlockNumtoretain或更高的块高度。尽管是私人的 //用PurgBytxIdx()将存储在瞬态存储中的写集由协调器删除。 //块提交成功后,仍需要purgeByHeight()来删除孤立的条目(如 //获得批准的事务不能由客户端提交以供提交) PurgeByHeight(maxBlockNumToRetain uint64) error }
TransientStore保留尚未提交到分类帐中的相应块的私有数据。