Documentation
¶
Index ¶
- func ConfigurationEnvelop(configBlock *common.Block) (*common.ConfigEnvelope, error)
- func LastBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
- func LastConfigBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
- func New(pmr PolicyManagerRetriever, signerSerializer signerSerializer, ...) consensus.Consenter
- func PreviousConfigBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
- func ProposalToBlock(proposal types.Proposal) (*common.Block, error)
- type AccessController
- type Assembler
- type BFTChain
- func (c *BFTChain) Configure(config *common.Envelope, configSeq uint64) error
- func (c *BFTChain) Deliver(proposal types.Proposal, signatures []types.Signature)
- func (c *BFTChain) Errored() <-chan struct{}
- func (c *BFTChain) Halt()
- func (c *BFTChain) HandleMessage(sender uint64, m *smartbftprotos.Message)
- func (c *BFTChain) HandleRequest(sender uint64, req []byte)
- func (c *BFTChain) Order(env *common.Envelope, configSeq uint64) error
- func (c *BFTChain) Start()
- func (c *BFTChain) WaitReady() error
- type BlockPuller
- type Bundle
- type ByteBufferTuple
- type ChainGetter
- type ChannelConfigTemplator
- type ConfigBlockValidator
- type ConfigTxValidator
- type ConfigUpdateProposer
- type ConfigValidator
- type Consenter
- type ConsenterCertificate
- type ConsenterVerifier
- type Egress
- type Filters
- type Ingreess
- type Ledger
- type MessageReceiver
- type Metrics
- type NodeIdentitiesByID
- type PanicLogger
- type PolicyManagerRetriever
- type RPC
- type ReceiverGetter
- type RequestInspector
- type Sequencer
- type Signature
- type Signer
- type SignerSerializer
- type Synchronizer
- type Verifier
- func (v *Verifier) VerificationSequence() uint64
- func (v *Verifier) VerifyConsenterSig(signature types.Signature, prop types.Proposal) error
- func (v *Verifier) VerifyProposal(proposal types.Proposal) ([]types.RequestInfo, error)
- func (v *Verifier) VerifyRequest(rawRequest []byte) (types.RequestInfo, error)
- func (v *Verifier) VerifySignature(signature types.Signature) error
- type WALConfig
- type WarningLogger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigurationEnvelop ¶
func ConfigurationEnvelop(configBlock *common.Block) (*common.ConfigEnvelope, error)
ConfigurationEnvelop extract configuration envelop
func LastBlockFromLedgerOrPanic ¶
func LastBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
func LastConfigBlockFromLedgerOrPanic ¶
func LastConfigBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
func New ¶
func New( pmr PolicyManagerRetriever, signerSerializer signerSerializer, clusterDialer *cluster.PredicateDialer, conf *localconfig.TopLevel, srvConf comm.ServerConfig, srv *comm.GRPCServer, r *multichannel.Registrar, metricsProvider metrics.Provider, ) consensus.Consenter
New creates Consenter of type smart bft
func PreviousConfigBlockFromLedgerOrPanic ¶
func PreviousConfigBlockFromLedgerOrPanic(ledger Ledger, logger PanicLogger) *common.Block
Types ¶
type AccessController ¶
type AccessController interface {
// Evaluate takes a set of SignedData and evaluates whether this set of signatures satisfies the policy
Evaluate(signatureSet []*common.SignedData) error
}
AccessController is used to determine if a signature of a certain client is valid
type Assembler ¶
type BFTChain ¶
type BFTChain struct {
Config smartbft.Configuration
BlockPuller BlockPuller
Comm cluster.Communicator
SignerSerializer signerSerializer
PolicyManager policies.Manager
RemoteNodes []cluster.RemoteNode
ID2Identities NodeIdentitiesByID
Logger *flogging.FabricLogger
WALDir string
Metrics *Metrics
// contains filtered or unexported fields
}
BFTChain implements Chain interface to wire with BFT smart library
func NewChain ¶
func NewChain( cv ConfigValidator, config smartbft.Configuration, walDir string, blockPuller BlockPuller, comm cluster.Communicator, signerSerializer signerSerializer, policyManager policies.Manager, remoteNodes []cluster.RemoteNode, id2Identities NodeIdentitiesByID, support consensus.ConsenterSupport, metrics *Metrics, ) (*BFTChain, error)
NewChain creates new BFT Smart chain
func (*BFTChain) HandleMessage ¶
func (c *BFTChain) HandleMessage(sender uint64, m *smartbftprotos.Message)
func (*BFTChain) HandleRequest ¶
type BlockPuller ¶
type BlockPuller interface {
PullBlock(seq uint64) *common.Block
HeightsByEndpoints() (map[string]uint64, error)
Close()
}
BlockPuller is used to pull blocks from other OSN
type Bundle ¶
type Bundle interface {
channelconfig.Resources
}
type ByteBufferTuple ¶
func (*ByteBufferTuple) FromBytes ¶
func (bbt *ByteBufferTuple) FromBytes(bytes []byte) error
func (*ByteBufferTuple) ToBytes ¶
func (bbt *ByteBufferTuple) ToBytes() []byte
type ChainGetter ¶
type ChainGetter interface {
// GetChain obtains the ChainSupport for the given channel.
// Returns nil, false when the ChainSupport for the given channel
// isn't found.
GetChain(chainID string) *multichannel.ChainSupport
}
ChainGetter obtains instances of ChainSupport for the given channel
type ChannelConfigTemplator ¶
type ChannelConfigTemplator interface {
NewChannelConfig(env *common.Envelope) (channelconfig.Resources, error)
}
type ConfigBlockValidator ¶
type ConfigBlockValidator struct {
ChannelConfigTemplator ChannelConfigTemplator
ConfigUpdateProposer ConfigUpdateProposer
ValidatingChannel string
Filters Filters
Logger *flogging.FabricLogger
}
func (*ConfigBlockValidator) ValidateConfig ¶
func (cbv *ConfigBlockValidator) ValidateConfig(envelope *common.Envelope) error
type ConfigTxValidator ¶
type ConfigUpdateProposer ¶
type ConfigValidator ¶
type Consenter ¶
type Consenter struct {
GetPolicyManager PolicyManagerRetriever
Logger *flogging.FabricLogger
Cert []byte
Comm *cluster.Comm
Chains ChainGetter
SignerSerializer signerSerializer
Registrar *multichannel.Registrar
WALBaseDir string
ClusterDialer *cluster.PredicateDialer
Conf *localconfig.TopLevel
Metrics *Metrics
}
Consenter implementation of the BFT smart based consenter
func (*Consenter) HandleChain ¶
func (*Consenter) ReceiverByChain ¶
func (c *Consenter) ReceiverByChain(channelID string) MessageReceiver
ReceiverByChain returns the MessageReceiver for the given channelID or nil if not found.
type ConsenterCertificate ¶
type ConsenterCertificate []byte
ConsenterCertificate denotes a TLS certificate of a consenter
func (ConsenterCertificate) IsConsenterOfChannel ¶
func (conCert ConsenterCertificate) IsConsenterOfChannel(configBlock *common.Block) error
IsConsenterOfChannel returns whether the caller is a consenter of a channel by inspecting the given configuration block. It returns nil if true, else returns an error.
type ConsenterVerifier ¶
type ConsenterVerifier interface {
// Evaluate takes a set of SignedData and evaluates whether this set of signatures satisfies the policy
Evaluate(signatureSet []*common.SignedData) error
}
ConsenterVerifier is used to determine whether a signature from one of the consenters is valid
type Egress ¶
type Egress struct {
Channel string
RPC RPC
Logger PanicLogger
// contains filtered or unexported fields
}
func (*Egress) SendTransaction ¶
type Ingreess ¶
type Ingreess struct {
Logger WarningLogger
ChainSelector ReceiverGetter
}
Ingreess dispatches Submit and Step requests to the designated per chain instances
func (*Ingreess) OnConsensus ¶
func (in *Ingreess) OnConsensus(channel string, sender uint64, request *orderer.ConsensusRequest) error
OnConsensus notifies the Ingreess for a reception of a StepRequest from a given sender on a given channel
type MessageReceiver ¶
type MessageReceiver interface {
HandleMessage(sender uint64, m *protos.Message)
HandleRequest(sender uint64, req []byte)
}
MessageReceiver receives messages
type Metrics ¶
type Metrics struct {
ClusterSize metrics.Gauge
CommittedBlockNumber metrics.Gauge
IsLeader metrics.Gauge
LeaderID metrics.Gauge
}
func NewMetrics ¶
type NodeIdentitiesByID ¶
func (NodeIdentitiesByID) IdentityToID ¶
func (nibd NodeIdentitiesByID) IdentityToID(identity []byte) (uint64, bool)
type PanicLogger ¶
type PanicLogger interface {
Panicf(template string, args ...interface{})
}
type PolicyManagerRetriever ¶
type RPC ¶
type RPC interface {
SendConsensus(dest uint64, msg *orderer.ConsensusRequest) error
SendSubmit(dest uint64, request *orderer.SubmitRequest) error
}
type ReceiverGetter ¶
type ReceiverGetter interface {
// ReceiverByChain returns the MessageReceiver if it exists, or nil if it doesn't
ReceiverByChain(channelID string) MessageReceiver
}
ReceiverGetter obtains instances of MessageReceiver given a channel ID
type RequestInspector ¶
type RequestInspector struct {
ValidateIdentityStructure func(identity *msp.SerializedIdentity) error
}
RequestInspector inspects incomming requests and validates serialized identity
func (*RequestInspector) RequestID ¶
func (ri *RequestInspector) RequestID(rawReq []byte) types.RequestInfo
type Signer ¶
type Signer struct {
ID uint64
SignerSerializer SignerSerializer
Logger PanicLogger
LastConfigBlockNum func(*common.Block) uint64
}
type SignerSerializer ¶
type SignerSerializer interface {
crypto.Signer
crypto.IdentitySerializer
}
type Synchronizer ¶
type Synchronizer struct {
BlockToDecision func(block *common.Block) *types.Decision
UpdateLastHash func(block *common.Block)
Support consensus.ConsenterSupport
BlockPuller BlockPuller
ClusterSize uint64
Logger *flogging.FabricLogger
}
func (*Synchronizer) Close ¶
func (s *Synchronizer) Close()
func (*Synchronizer) Sync ¶
func (s *Synchronizer) Sync() types.Decision
type Verifier ¶
type Verifier struct {
ReqInspector *RequestInspector
Id2Identity NodeIdentitiesByID
ConsenterVerifier ConsenterVerifier
AccessController AccessController
VerificationSequencer Sequencer
Ledger Ledger
LastCommittedBlockHash string
LastConfigBlockNum uint64
Logger *flogging.FabricLogger
ConfigValidator ConfigValidator
// contains filtered or unexported fields
}
func (*Verifier) VerificationSequence ¶
func (*Verifier) VerifyConsenterSig ¶
func (*Verifier) VerifyProposal ¶
func (*Verifier) VerifyRequest ¶
func (v *Verifier) VerifyRequest(rawRequest []byte) (types.RequestInfo, error)
type WALConfig ¶
type WALConfig struct {
WALDir string // WAL data of <my-channel> is stored in WALDir/<my-channel>
SnapDir string // Snapshots of <my-channel> are stored in SnapDir/<my-channel>
EvictionSuspicion string // Duration threshold that the node samples in order to suspect its eviction from the channel.
}
WALConfig consensus specific configuration parameters from orderer.yaml; for SmartBFT only WALDir is relevant.
type WarningLogger ¶
type WarningLogger interface {
Warningf(template string, args ...interface{})
}