Documentation ¶
Index ¶
- func NewPuller(metrics *metrics.PrivdataMetrics, cs privdata.CollectionStore, g gossip, ...) *puller
- type AppCapabilities
- type CapabilityProvider
- type CollectionAccessFactory
- type CollectionAccessPolicy
- type CollectionStore
- type Committer
- type ConfigHistoryRetriever
- type Coordinator
- type CoordinatorConfig
- type Dig2PvtRWSetWithConfig
- type Fetcher
- type IdentityDeserializerFactory
- type IdentityDeserializerFactoryFunc
- type ImplicitCollectionDisseminationPolicy
- type MissingPvtDataTracker
- type NoOpReconciler
- type PrivateDataRetriever
- type PrivdataConfig
- type PvtDataDistributor
- type PvtDataReconciler
- type PvtdataProvider
- type RWSetScanner
- type Reconciler
- type ReconciliationFetcher
- type RetrievedPvtdata
- type StorageDataRetriever
- type Support
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewPuller ¶
func NewPuller(metrics *metrics.PrivdataMetrics, cs privdata.CollectionStore, g gossip, dataRetriever PrivateDataRetriever, factory CollectionAccessFactory, channel string, btlPullMargin uint64) *puller
NewPuller creates new private data puller
Types ¶
type AppCapabilities ¶
type AppCapabilities interface { channelconfig.ApplicationCapabilities }
appCapabilities local interface used to generate mock for foreign interface.
type CapabilityProvider ¶
type CapabilityProvider interface { // Capabilities defines the capabilities for the application portion of this channel Capabilities() channelconfig.ApplicationCapabilities }
CapabilityProvider contains functions to retrieve capability information for a channel
type CollectionAccessFactory ¶
type CollectionAccessFactory interface { // AccessPolicy based on collection configuration AccessPolicy(config *peer.CollectionConfig, chainID string) (privdata.CollectionAccessPolicy, error) }
CollectionAccessFactory an interface to generate collection access policy
func NewCollectionAccessFactory ¶
func NewCollectionAccessFactory(factory IdentityDeserializerFactory) CollectionAccessFactory
NewCollectionAccessFactory
type CollectionAccessPolicy ¶
type CollectionAccessPolicy interface { privdata.CollectionAccessPolicy }
type CollectionStore ¶
type CollectionStore interface { privdata.CollectionStore }
CollectionStore is the local interface used to generate mocks for foreign interface.
type ConfigHistoryRetriever ¶
type ConfigHistoryRetriever interface { ledger.ConfigHistoryRetriever }
ConfigHistoryRetriever is the local interface used to generate mocks for foreign interface.
type Coordinator ¶
type Coordinator interface { // StoreBlock deliver new block with underlined private data // returns missing transaction ids StoreBlock(block *common.Block, data util.PvtDataCollections) error // StorePvtData used to persist private data into transient store StorePvtData(txid string, privData *protostransientstore.TxPvtReadWriteSetWithConfigInfo, blckHeight uint64) error // GetPvtDataAndBlockByNum gets block by number and also returns all related private data // that requesting peer is eligible for. // The order of private data in slice of PvtDataCollections doesn't imply the order of // transactions in the block related to these private data, to get the correct placement // need to read TxPvtData.SeqInBlock field GetPvtDataAndBlockByNum(seqNum uint64, peerAuth protoutil.SignedData) (*common.Block, util.PvtDataCollections, error) // Get recent block sequence number LedgerHeight() (uint64, error) // Close coordinator, shuts down coordinator service Close() }
Coordinator orchestrates the flow of the new blocks arrival and in flight transient data, responsible to complete missing parts of transient data for given block.
func NewCoordinator ¶
func NewCoordinator(mspID string, support Support, store *transientstore.Store, selfSignedData protoutil.SignedData, metrics *metrics.PrivdataMetrics, config CoordinatorConfig, idDeserializerFactory IdentityDeserializerFactory) Coordinator
NewCoordinator creates a new instance of coordinator
type CoordinatorConfig ¶
type CoordinatorConfig struct { // TransientBlockRetention indicates the number of blocks to retain in the transient store // when purging below height on committing every TransientBlockRetention-th block TransientBlockRetention uint64 // PullRetryThreshold indicates the max duration an attempted fetch from a remote peer will retry // for before giving up and leaving the private data as missing PullRetryThreshold time.Duration // SkipPullingInvalidTransactions if true will skip the fetch from remote peer step for transactions // marked as invalid SkipPullingInvalidTransactions bool }
CoordinatorConfig encapsulates the config that is passed to a new coordinator
type Dig2PvtRWSetWithConfig ¶
type Dig2PvtRWSetWithConfig map[privdatacommon.DigKey]*util.PrivateRWSetWithConfig
Dig2PvtRWSetWithConfig
type Fetcher ¶
type Fetcher interface {
// contains filtered or unexported methods
}
Fetcher interface which defines API to fetch missing private data elements
type IdentityDeserializerFactory ¶
type IdentityDeserializerFactory interface { // GetIdentityDeserializer returns an IdentityDeserializer // instance for the specified chain GetIdentityDeserializer(chainID string) msp.IdentityDeserializer }
IdentityDeserializerFactory is a factory interface to create IdentityDeserializer for given channel
type IdentityDeserializerFactoryFunc ¶
type IdentityDeserializerFactoryFunc func(chainID string) msp.IdentityDeserializer
IdentityDeserializerFactoryFunc is a function adapter for IdentityDeserializerFactory.
func (IdentityDeserializerFactoryFunc) GetIdentityDeserializer ¶
func (i IdentityDeserializerFactoryFunc) GetIdentityDeserializer(chainID string) msp.IdentityDeserializer
type ImplicitCollectionDisseminationPolicy ¶
type ImplicitCollectionDisseminationPolicy struct { // RequiredPeerCount defines the minimum number of eligible peers to which each endorsing peer must successfully // disseminate private data for its own implicit collection. Default is 0. RequiredPeerCount int // MaxPeerCount defines the maximum number of eligible peers to which each endorsing peer will attempt to // disseminate private data for its own implicit collection. Default is 1. MaxPeerCount int }
ImplicitCollectionDisseminationPolicy specifies the dissemination policy for the peer's own implicit collection. It is not applicable to private data for other organizations' implicit collections.
type MissingPvtDataTracker ¶
type MissingPvtDataTracker interface { ledger.MissingPvtDataTracker }
MissingPvtDataTracker is the local interface used to generate mocks for foreign interface.
type NoOpReconciler ¶
type NoOpReconciler struct{}
NoOpReconciler non functional reconciler to be used in case reconciliation has been disabled
func (*NoOpReconciler) Start ¶
func (*NoOpReconciler) Start()
func (*NoOpReconciler) Stop ¶
func (*NoOpReconciler) Stop()
type PrivateDataRetriever ¶
type PrivateDataRetriever interface { // CollectionRWSet returns the bytes of CollectionPvtReadWriteSet for a given txID and collection from the transient store CollectionRWSet(dig []*protosgossip.PvtDataDigest, blockNum uint64) (Dig2PvtRWSetWithConfig, bool, error) }
PrivateDataRetriever interface which defines API capable of retrieving required private data
type PrivdataConfig ¶
type PrivdataConfig struct { // ReconcileSleepInterval determines the time reconciler sleeps from end of an interation until the beginning of the next // reconciliation iteration. ReconcileSleepInterval time.Duration // ReconcileBatchSize determines the maximum batch size of missing private data that will be reconciled in a single iteration. ReconcileBatchSize int // ReconciliationEnabled is a flag that indicates whether private data reconciliation is enabled or not. ReconciliationEnabled bool // ImplicitCollectionDisseminationPolicy specifies the dissemination policy for the peer's own implicit collection. ImplicitCollDisseminationPolicy ImplicitCollectionDisseminationPolicy }
PrivdataConfig is the struct that defines the Gossip Privdata configurations.
func GlobalConfig ¶
func GlobalConfig() *PrivdataConfig
GlobalConfig obtains a set of configuration from viper, build and returns the config struct.
type PvtDataDistributor ¶
type PvtDataDistributor interface { // Distribute broadcast reliably private data read write set based on policies Distribute(txID string, privData *transientstore.TxPvtReadWriteSetWithConfigInfo, blkHt uint64) error }
PvtDataDistributor interface to defines API of distributing private data
func NewDistributor ¶
func NewDistributor(chainID string, gossip gossipAdapter, factory CollectionAccessFactory, metrics *metrics.PrivdataMetrics, pushAckTimeout time.Duration) PvtDataDistributor
NewDistributor a constructor for private data distributor capable to send private read write sets for underlying collection
type PvtDataReconciler ¶
type PvtDataReconciler interface { // Start function start the reconciler based on a scheduler, as was configured in reconciler creation Start() // Stop function stops reconciler Stop() }
PvtDataReconciler completes missing parts of private data that weren't available during commit time. this is done by getting from the ledger a list of missing private data and pulling it from the other peers.
type PvtdataProvider ¶
type PvtdataProvider struct {
// contains filtered or unexported fields
}
func (*PvtdataProvider) RetrievePvtdata ¶
func (pdp *PvtdataProvider) RetrievePvtdata(pvtdataToRetrieve []*ledger.TxPvtdataInfo) (*RetrievedPvtdata, error)
RetrievePvtdata is passed a list of private data items from a block, it determines which private data items this peer is eligible for, and then retrieves the private data from local cache, local transient store, or a remote peer.
type RWSetScanner ¶
type RWSetScanner interface { transientstore.RWSetScanner }
RWSetScanner is the local interface used to generate mocks for foreign interface.
type Reconciler ¶
type Reconciler struct { ReconcileSleepInterval time.Duration ReconcileBatchSize int ReconciliationFetcher committer.Committer // contains filtered or unexported fields }
func NewReconciler ¶
func NewReconciler(channel string, metrics *metrics.PrivdataMetrics, c committer.Committer, fetcher ReconciliationFetcher, config *PrivdataConfig) *Reconciler
NewReconciler creates a new instance of reconciler
func (*Reconciler) Start ¶
func (r *Reconciler) Start()
func (*Reconciler) Stop ¶
func (r *Reconciler) Stop()
type ReconciliationFetcher ¶
type ReconciliationFetcher interface {
FetchReconciledItems(dig2collectionConfig privdatacommon.Dig2CollectionConfig) (*privdatacommon.FetchedPvtDataContainer, error)
}
ReconciliationFetcher interface which defines API to fetch private data elements that have to be reconciled.
type RetrievedPvtdata ¶
type RetrievedPvtdata struct {
// contains filtered or unexported fields
}
func (*RetrievedPvtdata) GetBlockPvtdata ¶
func (r *RetrievedPvtdata) GetBlockPvtdata() *ledger.BlockPvtdata
GetBlockPvtdata returns the BlockPvtdata
func (*RetrievedPvtdata) Purge ¶
func (r *RetrievedPvtdata) Purge()
Purge purges private data for transactions in the block from the transient store. Transactions older than the retention period are considered orphaned and also purged.
type StorageDataRetriever ¶
type StorageDataRetriever interface { // CollectionRWSet retrieves for give digest relevant private data if // available otherwise returns nil, bool which is true if data fetched from ledger and false if was fetched from transient store, and an error CollectionRWSet(dig []*protosgossip.PvtDataDigest, blockNum uint64) (Dig2PvtRWSetWithConfig, bool, error) }
StorageDataRetriever defines an API to retrieve private data from the storage.
func NewDataRetriever ¶
func NewDataRetriever(channelID string, store *transientstore.Store, committer committer.Committer) StorageDataRetriever
NewDataRetriever constructing function for implementation of the StorageDataRetriever interface
type Support ¶
type Support struct { ChainID string privdata.CollectionStore txvalidator.Validator committer.Committer Fetcher CapabilityProvider }
Support encapsulates set of interfaces to aggregate required functionality by single struct