Documentation
¶
Index ¶
- Variables
- func NewChainParametersHolder(args ArgsChainParametersHolder) (*chainParametersHolder, error)
- func NewMultiShardCoordinator(numberOfShards, selfId uint32) (*multiShardCoordinator, error)
- func NewShuffledOutTrigger(ownPubKey []byte, currentShardID uint32, ...) (*shuffledOutTrigger, error)
- type ArgsChainParametersHolder
- type ChainParametersHandler
- type ChainParametersNotifierHandler
- type ConsensusConfiguration
- type Coordinator
- type EpochHandler
- type EpochStartEventNotifier
- type GenesisNodesSetupHandler
- type InitialNode
- type NodesSetup
- func (ns *NodesSetup) AllInitialNodes() []nodesCoordinator.GenesisNodeInfoHandler
- func (ns *NodesSetup) ExportNodesConfig() config.NodesConfig
- 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 NodesSetupDTO
- 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 ErrInvalidChainParametersForEpoch = errors.New("invalid chain parameters for epoch")
ErrInvalidChainParametersForEpoch signals that an invalid chain parameters for epoch has been provided
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 ErrMissingChainParameters = errors.New("empty chain parameters array")
ErrMissingChainParameters signals that a nil chain parameters array has been provided
var ErrMissingConfigurationForEpochZero = errors.New("missing configuration for epoch 0")
ErrMissingConfigurationForEpochZero signals that no configuration for epoch 0 exists
var ErrNegativeOrZeroConsensusGroupSize = errors.New("negative or zero consensus group size")
ErrNegativeOrZeroConsensusGroupSize signals that an invalid consensus group size has been provided
var ErrNilChainParametersNotifier = errors.New("nil chain parameters notifier")
ErrNilChainParametersNotifier signals that a nil chain parameters notifier has been provided
var ErrNilChainParametersProvider = errors.New("nil chain parameters provider")
ErrNilChainParametersProvider signals that a nil chain parameters provider has been given
var ErrNilEndOfProcessingHandler = errors.New("nil end of processing handler")
ErrNilEndOfProcessingHandler signals that a nil end of processing handler has been provided
var ErrNilEpochStartEventNotifier = errors.New("nil epoch start event notifier")
ErrNilEpochStartEventNotifier signals that a nil epoch start event notifier 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 ErrNoMatchingConfigurationFound = errors.New("no matching configuration found")
ErrNoMatchingConfigurationFound signals that no matching configuration is found
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 NewChainParametersHolder ¶ added in v1.9.0
func NewChainParametersHolder(args ArgsChainParametersHolder) (*chainParametersHolder, error)
NewChainParametersHolder returns a new instance of chainParametersHolder
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 ArgsChainParametersHolder ¶ added in v1.9.0
type ArgsChainParametersHolder struct {
EpochStartEventNotifier EpochStartEventNotifier
ChainParameters []config.ChainParametersByEpochConfig
ChainParametersNotifier ChainParametersNotifierHandler
}
ArgsChainParametersHolder holds the arguments needed for creating a new chainParametersHolder
type ChainParametersHandler ¶ added in v1.9.0
type ChainParametersHandler interface {
CurrentChainParameters() config.ChainParametersByEpochConfig
ChainParametersForEpoch(epoch uint32) (config.ChainParametersByEpochConfig, error)
IsInterfaceNil() bool
}
ChainParametersHandler defines the actions that need to be done by a component that can handle chain parameters
type ChainParametersNotifierHandler ¶ added in v1.9.0
type ChainParametersNotifierHandler interface {
UpdateCurrentChainParameters(params config.ChainParametersByEpochConfig)
IsInterfaceNil() bool
}
ChainParametersNotifierHandler defines the actions that need to be done by a component that can handle chain parameters changes
type ConsensusConfiguration ¶ added in v1.9.0
ConsensusConfiguration holds the consensus configuration that can be used by both the shard and the metachain
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 EpochStartEventNotifier ¶ added in v1.9.0
type EpochStartEventNotifier interface {
RegisterHandler(handler epochStart.ActionHandler)
UnregisterHandler(handler epochStart.ActionHandler)
IsInterfaceNil() bool
}
EpochStartEventNotifier provides Register and Unregister functionality for the end of epoch events
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
ExportNodesConfig() config.NodesConfig
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 {
NodesSetupDTO
// contains filtered or unexported fields
}
NodesSetup hold data for decoded data from json file
func NewNodesSetup ¶
func NewNodesSetup( nodesConfig config.NodesConfig, chainParametersProvider ChainParametersHandler, 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) ExportNodesConfig ¶ added in v1.9.0
func (ns *NodesSetup) ExportNodesConfig() config.NodesConfig
ExportNodesConfig will create and return the nodes' configuration
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 NodesSetupDTO ¶ added in v1.9.0
type NodesSetupDTO struct {
StartTime int64 `json:"startTime"`
RoundDuration uint64 `json:"roundDuration"`
Hysteresis float32 `json:"hysteresis"`
Adaptivity bool `json:"adaptivity"`
InitialNodes []*InitialNode `json:"initialNodes"`
}
NodesSetupDTO is the data transfer object used to map the nodes' configuration in regard to the genesis nodes setup
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