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{})
}