# Functions
No description provided by the author
ConditionSeed takes a 32 byte input and XOR's it into a single uint64.
No description provided by the author
IdentInit creates, or extends, the identity initialisation vector for the extraData in the genesis block.
Keccak256Hash hashes a variable number of byte slices and returns a Hash.
No description provided by the author
No description provided by the author
No description provided by the author
NewEngine a new instance of the rrr consensus engine.
NewRoundState creates and initialises a RoundState.
NewRoundTime creates and configures a RoundTime.
NodeIDBytesFromPub NodeID is Keccak256 (Pub.X || Pub.Y ) In contexts where we have the id and a signature, we can recover the pub key of the signer using Ecrecover.
NodeIDFromPub gets a node id from an ecdsa pub key.
NodeIDFromPubBytes gets a node id from the bytes of an ecdsa public key.
PubMarshal converts public ecdsa key into the uncompressed form specified in section 4.3.6 of ANSI X9.62.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
RecoverPublic ...
No description provided by the author
RoundsSince returns the number of rounds since the provided time for the given round length in seconds.
VerifyNodeSig verifies if sig over digest was produced using the private key corresponding to nodeID.
No description provided by the author
No description provided by the author
# Constants
No description provided by the author
No description provided by the author
RMsgConfirm identifies RRR endorsement messages (confirmations).
RMsgEnrol is used to alow nodes to self enrol and automatically re-enrol without needing to go through the rpc mechanism.
RMsgIntent identifies RRR intent messages.
RMsgInvalid is the *never set* invalid message code.
RMsgRandAgreement ...
RMsgRandAgreementSolicit ...
RMsgRandContrib ...
RMsgRandContribSolicit ...
RoundPhaseBroadcast during the Broadcast phase all nodes are waiting for a NewChainHead event for the current round (including the c nsensus leaders).
RoundPhaseConfirm During the confirmation phase leaders are waiting for all the endorsements to come in so they fairly represent activity.
RoundPhaseIntent During the Intent phase, the endorser committee is allowing for intents to arrive so they can, with high probability, pick the oldest active leader candidate.
RoundPhaseInvalid is the invalid state for RoundPhase.
Used to absorb and align the start time with the round time.
Has endorsed or mined in some time in the last Ta rounds.
RoundStateEndorserCommittee Is in the endorser committee for the current round.
Indicates conditions we expect to be transitor - endorsers not online etc.
RoundStateInvalid is the invalid and never set state.
RoundStateLeaderCandidate selected as leader candidate for current round.
RRRActiveMethodRotateCandidates is implemented as a variant on sortendorsers where rather than idling leaders that fail to produce within Nc, we 'rotate' the candidate selection through the active selection acording to the number of failed rounds.
No description provided by the author
No description provided by the author
# Variables
DefaultConfig provides the default rrr consensus configuration.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
Alpha encodes the seed contribution for a single genesis identity.
BlockActivity is the decoded RRR consensus block activity data from the block header extra data.
ChainInit holds the RRR consensus genesis configuration, including genesis enroled identities.
No description provided by the author
Config carries the RRR consensus configuration.
Endorsement represents the unsigned approval of a leader candidates intent.
EndorsmentProtocol implements 5.2 "Endorsement Protocol" and 5.3 "Chain Validation" (from the paper).
No description provided by the author
Engine implements consensus.Engine using Robust Round Robin consensus https://arxiv.org/abs/1804.07391.
EngNewChainHead notifies the run loop of a NewChainHead event.
EngSealTask is sent to the engines runningCh to request endorsment to create a block.
No description provided by the author
eng* types can be sent at any tome the the engines runningCh.
Enrolment provides the RRR identity enrolment data.
EnrolmentBinding is rlp encoded, hashed and signed to introduce NodeID as a member.
ExtraData is the complete (minus sig) RRR consensus data included on each block.
ExtraHeader is the common header for the genesis block and consensus produced blocks.
GenesisExtraData adds the ChainID which is the hash of the ChainInit.
Intent declares a leader candidates intent to seal a block.
No description provided by the author
RMsg is the dev p2p (eth) message for RRR.
RoundTime takes (some) of the sharp edges of go's time.Timer and provides conveniences for manaing the time based RRR state.
SignedEndorsement is the approval with the appropriate sig.
SignedExtraData is ExtraData with signature.
SignedIntent holds the Intent plus its sig.
# Interfaces
No description provided by the author
No description provided by the author
BlockHeaderReader defines the interface required by AccumulateActive.
The engine supplies these so that the roundstate can call out to the network at the right points.
No description provided by the author
No description provided by the author
No description provided by the author
CipherSuite abstracts essential cryptographic primitives used by rrr.
No description provided by the author
No description provided by the author
Logger is the go-ethereum compatible logging interface used in rrr.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Type aliases
Address is the ethereum style right most 20 bytes of Keccak256 (pub.X || pub.Y ).
No description provided by the author
No description provided by the author
Hash is a hash.
No description provided by the author
No description provided by the author
Quote is the 'pseudo' attestation of identity performed using node private keys rather than SGX.
RMsgCode identifies the rrr message type.
RoundPhase is the type for the round phase.
RoundState type for the round state.
No description provided by the author
No description provided by the author