 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Communicator ¶
type Communicator interface {
	Broadcast(msg *pb.OpenchainMessage, peerType pb.PeerEndpoint_Type) error
	Unicast(msg *pb.OpenchainMessage, receiverHandle *pb.PeerID) error
}
    Communicator is used to send messages to other validators
type Consenter ¶
type Consenter interface {
	RecvMsg(msg *pb.OpenchainMessage, senderHandle *pb.PeerID) error
}
    Consenter is used to receive messages from the network Every consensus plugin needs to implement this interface
type Executor ¶
type Executor interface {
	BeginTxBatch(id interface{}) error
	ExecTxs(id interface{}, txs []*pb.Transaction) ([]byte, error)
	CommitTxBatch(id interface{}, metadata []byte) (*pb.Block, error)
	RollbackTxBatch(id interface{}) error
	PreviewCommitTxBatch(id interface{}, metadata []byte) (*pb.Block, error)
}
    Executor is used to invoke transactions, potentially modifying the backing ledger
type Inquirer ¶
type Inquirer interface {
	GetNetworkInfo() (self *pb.PeerEndpoint, network []*pb.PeerEndpoint, err error)
	GetNetworkHandles() (self *pb.PeerID, network []*pb.PeerID, err error)
}
    Inquirer is used to retrieve info about the validating network
type Ledger ¶
type Ledger interface {
	ReadOnlyLedger
	UtilLedger
	WritableLedger
}
    Ledger is an unrestricted union of reads, utilities, and updates
type LedgerStack ¶
type LedgerStack interface {
	Executor
	Ledger
	RemoteLedgers
}
    LedgerStack serves as interface to the blockchain-oriented activities, such as executing transactions, querying, and updating the ledger
type ReadOnlyLedger ¶
type ReadOnlyLedger interface {
	GetBlock(id uint64) (block *pb.Block, err error)
	GetCurrentStateHash() (stateHash []byte, err error)
	GetBlockchainSize() (uint64, error)
}
    ReadOnlyLedger is used for interrogating the blockchain
type RemoteLedgers ¶
type RemoteLedgers interface {
	GetRemoteBlocks(replicaID *pb.PeerID, start, finish uint64) (<-chan *pb.SyncBlocks, error)
	GetRemoteStateSnapshot(replicaID *pb.PeerID) (<-chan *pb.SyncStateSnapshot, error)
	GetRemoteStateDeltas(replicaID *pb.PeerID, start, finish uint64) (<-chan *pb.SyncStateDeltas, error)
}
    RemoteLedgers is used to interrogate the blockchain of other replicas
type SecurityUtils ¶
type SecurityUtils interface {
	Sign(msg []byte) ([]byte, error)
	Verify(peerID *pb.PeerID, signature []byte, message []byte) error
}
    SecurityUtils is used to access the sign/verify methods from the crypto package
type Stack ¶
type Stack interface {
	Inquirer
	Communicator
	SecurityUtils
	LedgerStack
}
    Stack is the set of stack-facing methods available to the consensus plugin
type UtilLedger ¶
type UtilLedger interface {
	HashBlock(block *pb.Block) ([]byte, error)
	VerifyBlockchain(start, finish uint64) (uint64, error)
}
    UtilLedger contains additional useful utility functions for interrogating the blockchain
type WritableLedger ¶
type WritableLedger interface {
	PutBlock(blockNumber uint64, block *pb.Block) error
	ApplyStateDelta(id interface{}, delta *statemgmt.StateDelta) error
	CommitStateDelta(id interface{}) error
	RollbackStateDelta(id interface{}) error
	EmptyState() error
}
    WritableLedger is useful for updating the blockchain during state transfer
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| Package obcpbft is a generated protocol buffer package. | Package obcpbft is a generated protocol buffer package. |