Documentation
¶
Index ¶
- Variables
- func NewMultiShardCoordinator(numberOfShards, selfId uint32) (*multiShardCoordinator, error)
- func NewShuffledOutTrigger(ownPubKey []byte, currentShardID uint32, ...) (*shuffledOutTrigger, error)
- type Coordinator
- type EpochHandler
- type GenesisNodesSetupHandler
- type InitialNode
- type NodesSetup
- func (ns *NodesSetup) AllInitialNodes() []nodesCoordinator.GenesisNodeInfoHandler
- func (ns *NodesSetup) GetAdaptivity() bool
- func (ns *NodesSetup) GetHysteresis() float32
- func (ns *NodesSetup) GetMetaConsensusGroupSize() uint32
- func (ns *NodesSetup) GetRoundDuration() uint64
- func (ns *NodesSetup) GetShardConsensusGroupSize() uint32
- func (ns *NodesSetup) GetShardIDForPubKey(pubKey []byte) (uint32, error)
- func (ns *NodesSetup) GetStartTime() int64
- func (ns *NodesSetup) InitialEligibleNodesPubKeysForShard(shardId uint32) ([]string, error)
- func (ns *NodesSetup) InitialNodesInfo() (map[uint32][]nodesCoordinator.GenesisNodeInfoHandler, ...)
- func (ns *NodesSetup) InitialNodesInfoForShard(shardId uint32) ([]nodesCoordinator.GenesisNodeInfoHandler, ...)
- func (ns *NodesSetup) InitialNodesPubKeys() map[uint32][]string
- func (ns *NodesSetup) IsInterfaceNil() bool
- func (ns *NodesSetup) MinMetaHysteresisNodes() uint32
- func (ns *NodesSetup) MinNumberOfMetaNodes() uint32
- func (ns *NodesSetup) MinNumberOfNodes() uint32
- func (ns *NodesSetup) MinNumberOfNodesWithHysteresis() uint32
- func (ns *NodesSetup) MinNumberOfShardNodes() uint32
- func (ns *NodesSetup) MinShardHysteresisNodes() uint32
- func (ns *NodesSetup) NumberOfShards() uint32
- type OneShardCoordinator
- func (osc *OneShardCoordinator) CommunicationIdentifier(destShardID uint32) string
- func (osc *OneShardCoordinator) ComputeId(_ []byte) uint32
- func (osc *OneShardCoordinator) IsInterfaceNil() bool
- func (osc *OneShardCoordinator) NumberOfShards() uint32
- func (osc *OneShardCoordinator) SameShard(_, _ []byte) bool
- func (osc *OneShardCoordinator) SelfId() uint32
- type PeerAccountListAndRatingHandler
Constants ¶
This section is empty.
Variables ¶
var ErrCouldNotParseAddress = errors.New("could not parse node's address")
ErrCouldNotParseAddress signals that a given address could not be parsed
var ErrCouldNotParsePubKey = errors.New("could not parse node's public key")
ErrCouldNotParsePubKey signals that a given public key could not be parsed
var ErrInvalidMaximumNumberOfShards = errors.New("trying to set an invalid maximum number of shards")
ErrInvalidMaximumNumberOfShards signals that an invalid maximum number of shards has been provided
var ErrMinNodesPerShardSmallerThanConsensusSize = errors.New("minimum nodes per shard is smaller than consensus group size")
ErrMinNodesPerShardSmallerThanConsensusSize signals that an invalid min nodes per shard has been provided
var ErrNegativeOrZeroConsensusGroupSize = errors.New("negative or zero consensus group size")
ErrNegativeOrZeroConsensusGroupSize signals that an invalid consensus group size has been provided
var ErrNilEndOfProcessingHandler = errors.New("nil end of processing handler")
ErrNilEndOfProcessingHandler signals that a nil end of processing handler has been provided
var ErrNilOwnPublicKey = errors.New("nil own public key")
ErrNilOwnPublicKey signals that a nil own public key has been provided
var ErrNilPubkeyConverter = errors.New("trying to set nil pubkey converter")
ErrNilPubkeyConverter signals that a nil public key converter has been provided
var ErrNoPubKeys = errors.New("no public keys defined")
ErrNoPubKeys signals an error when public keys are missing
var ErrNodesSizeSmallerThanMinNoOfNodes = errors.New("length of nodes defined is smaller than min nodes per shard required")
ErrNodesSizeSmallerThanMinNoOfNodes signals that there are not enough nodes defined in genesis file
var ErrPublicKeyNotFoundInGenesis = errors.New("public key is not valid, it is missing from genesis file")
ErrPublicKeyNotFoundInGenesis signals an error when the public key is not in genesis file
var ErrShardIdOutOfRange = errors.New("shard id out of range")
ErrShardIdOutOfRange signals an error when shard id is out of range
Functions ¶
func NewMultiShardCoordinator ¶
NewMultiShardCoordinator returns a new multiShardCoordinator and initializes the masks
func NewShuffledOutTrigger ¶
func NewShuffledOutTrigger( ownPubKey []byte, currentShardID uint32, endProcessHandler func(argument endProcess.ArgEndProcess) error, ) (*shuffledOutTrigger, error)
NewShuffledOutTrigger returns a new instance of shuffledOutTrigger
Types ¶
type Coordinator ¶
type Coordinator interface {
NumberOfShards() uint32
ComputeId(address []byte) uint32
SelfId() uint32
SameShard(firstAddress, secondAddress []byte) bool
CommunicationIdentifier(destShardID uint32) string
IsInterfaceNil() bool
}
Coordinator defines what a shard state coordinator should hold
type EpochHandler ¶
EpochHandler defines what a component which handles current epoch should be able to do
type GenesisNodesSetupHandler ¶
type GenesisNodesSetupHandler interface {
AllInitialNodes() []nodesCoordinator.GenesisNodeInfoHandler
InitialNodesPubKeys() map[uint32][]string
GetShardIDForPubKey(pubkey []byte) (uint32, error)
InitialEligibleNodesPubKeysForShard(shardId uint32) ([]string, error)
InitialNodesInfoForShard(shardId uint32) ([]nodesCoordinator.GenesisNodeInfoHandler, []nodesCoordinator.GenesisNodeInfoHandler, error)
InitialNodesInfo() (map[uint32][]nodesCoordinator.GenesisNodeInfoHandler, map[uint32][]nodesCoordinator.GenesisNodeInfoHandler)
GetStartTime() int64
GetRoundDuration() uint64
GetShardConsensusGroupSize() uint32
GetMetaConsensusGroupSize() uint32
NumberOfShards() uint32
MinNumberOfNodes() uint32
MinNumberOfShardNodes() uint32
MinNumberOfMetaNodes() uint32
GetHysteresis() float32
GetAdaptivity() bool
MinNumberOfNodesWithHysteresis() uint32
MinShardHysteresisNodes() uint32
MinMetaHysteresisNodes() uint32
IsInterfaceNil() bool
}
GenesisNodesSetupHandler returns the genesis nodes info
type InitialNode ¶
type InitialNode struct {
PubKey string `json:"pubkey"`
Address string `json:"address"`
InitialRating uint32 `json:"initialRating"`
// contains filtered or unexported fields
}
InitialNode holds data from json
func (*InitialNode) AddressBytes ¶
func (ni *InitialNode) AddressBytes() []byte
AddressBytes gets the node address as bytes
func (*InitialNode) AssignedShard ¶
func (ni *InitialNode) AssignedShard() uint32
AssignedShard gets the node assigned shard
func (*InitialNode) GetInitialRating ¶
func (ni *InitialNode) GetInitialRating() uint32
GetInitialRating gets the initial rating for a node
func (*InitialNode) IsInterfaceNil ¶
func (ni *InitialNode) IsInterfaceNil() bool
IsInterfaceNil returns true if underlying object is nil
func (*InitialNode) PubKeyBytes ¶
func (ni *InitialNode) PubKeyBytes() []byte
PubKeyBytes gets the node public key as bytes
type NodesSetup ¶
type NodesSetup struct {
StartTime int64 `json:"startTime"`
RoundDuration uint64 `json:"roundDuration"`
ConsensusGroupSize uint32 `json:"consensusGroupSize"`
MinNodesPerShard uint32 `json:"minNodesPerShard"`
MetaChainConsensusGroupSize uint32 `json:"metaChainConsensusGroupSize"`
MetaChainMinNodes uint32 `json:"metaChainMinNodes"`
Hysteresis float32 `json:"hysteresis"`
Adaptivity bool `json:"adaptivity"`
InitialNodes []*InitialNode `json:"initialNodes"`
// contains filtered or unexported fields
}
NodesSetup hold data for decoded data from json file
func NewNodesSetup ¶
func NewNodesSetup( nodesFilePath string, addressPubkeyConverter core.PubkeyConverter, validatorPubkeyConverter core.PubkeyConverter, genesisMaxNumShards uint32, ) (*NodesSetup, error)
NewNodesSetup creates a new decoded nodes structure from json config file
func (*NodesSetup) AllInitialNodes ¶
func (ns *NodesSetup) AllInitialNodes() []nodesCoordinator.GenesisNodeInfoHandler
AllInitialNodes returns all initial nodes loaded
func (*NodesSetup) GetAdaptivity ¶
func (ns *NodesSetup) GetAdaptivity() bool
GetAdaptivity returns the value of the adaptivity boolean flag
func (*NodesSetup) GetHysteresis ¶
func (ns *NodesSetup) GetHysteresis() float32
GetHysteresis returns the hysteresis value
func (*NodesSetup) GetMetaConsensusGroupSize ¶
func (ns *NodesSetup) GetMetaConsensusGroupSize() uint32
GetMetaConsensusGroupSize returns the metachain consensus group size
func (*NodesSetup) GetRoundDuration ¶
func (ns *NodesSetup) GetRoundDuration() uint64
GetRoundDuration returns the round duration
func (*NodesSetup) GetShardConsensusGroupSize ¶
func (ns *NodesSetup) GetShardConsensusGroupSize() uint32
GetShardConsensusGroupSize returns the shard consensus group size
func (*NodesSetup) GetShardIDForPubKey ¶
func (ns *NodesSetup) GetShardIDForPubKey(pubKey []byte) (uint32, error)
GetShardIDForPubKey returns the allocated shard ID from public key
func (*NodesSetup) GetStartTime ¶
func (ns *NodesSetup) GetStartTime() int64
GetStartTime returns the start time
func (*NodesSetup) InitialEligibleNodesPubKeysForShard ¶
func (ns *NodesSetup) InitialEligibleNodesPubKeysForShard(shardId uint32) ([]string, error)
InitialEligibleNodesPubKeysForShard - gets initial nodes public keys for shard
func (*NodesSetup) InitialNodesInfo ¶
func (ns *NodesSetup) InitialNodesInfo() (map[uint32][]nodesCoordinator.GenesisNodeInfoHandler, map[uint32][]nodesCoordinator.GenesisNodeInfoHandler)
InitialNodesInfo - gets initial nodes info
func (*NodesSetup) InitialNodesInfoForShard ¶
func (ns *NodesSetup) InitialNodesInfoForShard(shardId uint32) ([]nodesCoordinator.GenesisNodeInfoHandler, []nodesCoordinator.GenesisNodeInfoHandler, error)
InitialNodesInfoForShard - gets initial nodes info for shard
func (*NodesSetup) InitialNodesPubKeys ¶
func (ns *NodesSetup) InitialNodesPubKeys() map[uint32][]string
InitialNodesPubKeys - gets initial nodes public keys
func (*NodesSetup) IsInterfaceNil ¶
func (ns *NodesSetup) IsInterfaceNil() bool
IsInterfaceNil returns true if underlying object is nil
func (*NodesSetup) MinMetaHysteresisNodes ¶
func (ns *NodesSetup) MinMetaHysteresisNodes() uint32
MinMetaHysteresisNodes returns the minimum number of hysteresis nodes in metachain
func (*NodesSetup) MinNumberOfMetaNodes ¶
func (ns *NodesSetup) MinNumberOfMetaNodes() uint32
MinNumberOfMetaNodes returns the minimum number of nodes in metachain
func (*NodesSetup) MinNumberOfNodes ¶
func (ns *NodesSetup) MinNumberOfNodes() uint32
MinNumberOfNodes returns the minimum number of nodes
func (*NodesSetup) MinNumberOfNodesWithHysteresis ¶
func (ns *NodesSetup) MinNumberOfNodesWithHysteresis() uint32
MinNumberOfNodesWithHysteresis returns the minimum number of nodes with hysteresis
func (*NodesSetup) MinNumberOfShardNodes ¶
func (ns *NodesSetup) MinNumberOfShardNodes() uint32
MinNumberOfShardNodes returns the minimum number of nodes per shard
func (*NodesSetup) MinShardHysteresisNodes ¶
func (ns *NodesSetup) MinShardHysteresisNodes() uint32
MinShardHysteresisNodes returns the minimum number of hysteresis nodes per shard
func (*NodesSetup) NumberOfShards ¶
func (ns *NodesSetup) NumberOfShards() uint32
NumberOfShards returns the calculated number of shards
type OneShardCoordinator ¶
type OneShardCoordinator struct{}
OneShardCoordinator creates a shard coordinator object
func (*OneShardCoordinator) CommunicationIdentifier ¶
func (osc *OneShardCoordinator) CommunicationIdentifier(destShardID uint32) string
CommunicationIdentifier returns the identifier between current shard ID and destination shard ID for this implementation, it will always return "_0" as there is a single shard
func (*OneShardCoordinator) ComputeId ¶
func (osc *OneShardCoordinator) ComputeId(_ []byte) uint32
ComputeId gets shard for the given address
func (*OneShardCoordinator) IsInterfaceNil ¶
func (osc *OneShardCoordinator) IsInterfaceNil() bool
IsInterfaceNil returns true if there is no value under the interface
func (*OneShardCoordinator) NumberOfShards ¶
func (osc *OneShardCoordinator) NumberOfShards() uint32
NumberOfShards gets number of shards
func (*OneShardCoordinator) SameShard ¶
func (osc *OneShardCoordinator) SameShard(_, _ []byte) bool
SameShard returns weather two addresses belong to the same shard
func (*OneShardCoordinator) SelfId ¶
func (osc *OneShardCoordinator) SelfId() uint32
SelfId gets shard of the current node
type PeerAccountListAndRatingHandler ¶
type PeerAccountListAndRatingHandler interface {
// GetChance returns the chances for the rating
GetChance(uint32) uint32
// GetStartRating gets the start rating values
GetStartRating() uint32
// GetSignedBlocksThreshold gets the threshold for the minimum signed blocks
GetSignedBlocksThreshold() float32
// ComputeIncreaseProposer computes the new rating for the increaseLeader
ComputeIncreaseProposer(shardId uint32, currentRating uint32) uint32
// ComputeDecreaseProposer computes the new rating for the decreaseLeader
ComputeDecreaseProposer(shardId uint32, currentRating uint32, consecutiveMisses uint32) uint32
// RevertIncreaseValidator computes the new rating if a revert for increaseProposer should be done
RevertIncreaseValidator(shardId uint32, currentRating uint32, nrReverts uint32) uint32
// ComputeIncreaseValidator computes the new rating for the increaseValidator
ComputeIncreaseValidator(shardId uint32, currentRating uint32) uint32
// ComputeDecreaseValidator computes the new rating for the decreaseValidator
ComputeDecreaseValidator(shardId uint32, currentRating uint32) uint32
// IsInterfaceNil verifies if the interface is nil
IsInterfaceNil() bool
}
PeerAccountListAndRatingHandler provides Rating Computation Capabilites for the Nodes Coordinator and ValidatorStatistics