Documentation ¶
Index ¶
- Constants
- Variables
- func NewMultiShardCoordinator(numberOfShards, selfId uint32) (*multiShardCoordinator, error)
- type Coordinator
- type Genesis
- type InitialBalance
- type InitialNode
- type NodesSetup
- func (ns *NodesSetup) GetShardIDForPubKey(pubKey []byte) (uint32, error)
- func (ns *NodesSetup) InitialNodesPubKeys() map[uint32][]string
- func (ns *NodesSetup) InitialNodesPubKeysForShard(shardId uint32) ([]string, error)
- func (ns *NodesSetup) IsMetaChainActive() bool
- func (ns *NodesSetup) NumberOfShards() uint32
- type OneShardCoordinator
- func (osc *OneShardCoordinator) CommunicationIdentifier(destShardID uint32) string
- func (osc *OneShardCoordinator) ComputeId(address state.AddressContainer) uint32
- func (osc *OneShardCoordinator) NumberOfShards() uint32
- func (osc *OneShardCoordinator) SameShard(firstAddress, secondAddress state.AddressContainer) bool
- func (osc *OneShardCoordinator) SelfId() uint32
Constants ¶
const MetachainShardId = uint32(0xFFFFFFFF)
MetachainShardId will be used to identify a shard ID as metachain
Variables ¶
var ErrCouldNotParsePubKey = errors.New("could not parse node's public key")
ErrCouldNotParsePubKey signals that a given public key could not be parsed
var ErrInvalidNumberOfShards = errors.New("the number of shards must be greater than zero")
ErrInvalidNumberOfShards signals that an invalid number of shards was passed to the sharding registry
var ErrInvalidShardId = errors.New("shard id must be smaller than the total number of shards")
ErrInvalidShardId signals that an invalid shard is was passed
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 ErrNilAddressConverter = errors.New("trying to set nil address converter")
ErrNilAddressConverter signals that a nil address converter has been provided
var ErrNilShardCoordinator = errors.New("trying to set nil shard coordinator")
ErrNilShardCoordinator signals that a nil shard coordinator has been provided
var ErrNoPubKeys = errors.New("no public keys defined")
ErrNoPubKeys signals an error when public keys are missing
var ErrNoValidPublicKey = errors.New("public key is not valid, it is missing from genesis file")
ErrNoValidPublicKey signals an error when the public key is not in genesis file
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 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
Types ¶
type Coordinator ¶
type Coordinator interface { NumberOfShards() uint32 ComputeId(address state.AddressContainer) uint32 SelfId() uint32 SameShard(firstAddress, secondAddress state.AddressContainer) bool CommunicationIdentifier(destShardID uint32) string }
Coordinator defines what a shard state coordinator should hold
type Genesis ¶
type Genesis struct {
InitialBalances []*InitialBalance `json:"initialBalances"`
}
Genesis hold data for decoded data from json file
func NewGenesisConfig ¶
NewGenesisConfig creates a new decoded genesis structure from json config file
func (*Genesis) InitialNodesBalances ¶
func (g *Genesis) InitialNodesBalances(shardCoordinator Coordinator, adrConv state.AddressConverter) (map[string]*big.Int, error)
InitialNodesBalances - gets the initial balances of the nodes
type InitialBalance ¶
type InitialBalance struct { PubKey string `json:"pubkey"` Balance string `json:"balance"` // contains filtered or unexported fields }
InitialBalance holds data from json and decoded data from genesis process
type InitialNode ¶
type InitialNode struct { PubKey string `json:"pubkey"` // contains filtered or unexported fields }
InitialNode holds data from json
type NodesSetup ¶
type NodesSetup struct { StartTime int64 `json:"startTime"` RoundDuration uint64 `json:"roundDuration"` ConsensusGroupSize uint32 `json:"consensusGroupSize"` MinNodesPerShard uint32 `json:"minNodesPerShard"` MetaChainActive bool `json:"metaChainActive"` MetaChainConsensusGroupSize uint32 `json:"metaChainConsensusGroupSize"` MetaChainMinNodes uint32 `json:"metaChainMinNodes"` InitialNodes []*InitialNode `json:"initialNodes"` // contains filtered or unexported fields }
NodesSetup hold data for decoded data from json file
func NewNodesSetup ¶
func NewNodesSetup(nodesFilePath string, numOfNodes uint64) (*NodesSetup, error)
NewNodesSetup creates a new decoded nodes structure from json config file
func (*NodesSetup) GetShardIDForPubKey ¶
func (ns *NodesSetup) GetShardIDForPubKey(pubKey []byte) (uint32, error)
GetShardIDForPubKey returns the allocated shard ID from public key
func (*NodesSetup) InitialNodesPubKeys ¶
func (ns *NodesSetup) InitialNodesPubKeys() map[uint32][]string
InitialNodesPubKeys - gets initial public keys
func (*NodesSetup) InitialNodesPubKeysForShard ¶ added in v1.0.3
func (ns *NodesSetup) InitialNodesPubKeysForShard(shardId uint32) ([]string, error)
InitialNodesPubKeysForShard - gets initial public keys
func (*NodesSetup) IsMetaChainActive ¶ added in v1.0.3
func (ns *NodesSetup) IsMetaChainActive() bool
IsMetaChainActive returns if MetaChain is active
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(address state.AddressContainer) uint32
ComputeId gets shard for the given address
func (*OneShardCoordinator) NumberOfShards ¶
func (osc *OneShardCoordinator) NumberOfShards() uint32
NumberOfShards gets number of shards
func (*OneShardCoordinator) SameShard ¶
func (osc *OneShardCoordinator) SameShard(firstAddress, secondAddress state.AddressContainer) 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