shard

package
v1.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2020 License: MIT Imports: 18 Imported by: 9

Documentation

Index

Constants

View Source
const (
	PublicKeySizeInBytes    = 48
	BLSSignatureSizeInBytes = 96
)

PublicKeySizeInBytes ..

View Source
const (
	// BeaconChainShardID is the ShardID of the BeaconChain
	BeaconChainShardID = 0
)

Variables

View Source
var (
	// ErrValidNotInCommittee ..
	ErrValidNotInCommittee = errors.New("slot signer not this slot's subcommittee")
	// ErrSubCommitteeNil ..
	ErrSubCommitteeNil = errors.New("subcommittee is nil pointer")
	// ErrSuperCommitteeNil ..
	ErrSuperCommitteeNil = errors.New("supercommittee is nil pointer")
)
View Source
var (

	// ErrShardIDNotInSuperCommittee ..
	ErrShardIDNotInSuperCommittee = errors.New("shardID not in super committee")
)
View Source
var (
	// Schedule is the sharding configuration schedule.
	// Depends on the type of the network.  Defaults to the mainnet schedule.
	Schedule shardingconfig.Schedule = shardingconfig.MainnetSchedule
)

TODO ek – Schedule should really be part of a general-purpose network

configuration.  We are OK for the time being,
until the day we should let one node process join multiple networks.

Functions

func CompareBlsPublicKey

func CompareBlsPublicKey(k1, k2 BlsPublicKey) int

CompareBlsPublicKey compares two BlsPublicKey, lexicographically.

func CompareCommittee

func CompareCommittee(c1, c2 *Committee) int

CompareCommittee compares two committees and their leader/node list.

func CompareNodeID

func CompareNodeID(id1, id2 *Slot) int

CompareNodeID compares two node IDs.

func CompareNodeIDList

func CompareNodeIDList(l1, l2 SlotList) int

CompareNodeIDList compares two node ID lists.

func EncodeWrapper added in v1.3.0

func EncodeWrapper(shardState State, isStaking bool) ([]byte, error)

EncodeWrapper ..

func ExternalSlotsAvailableForEpoch added in v1.3.5

func ExternalSlotsAvailableForEpoch(epoch *big.Int) int

ExternalSlotsAvailableForEpoch ..

func GetHashFromNodeList

func GetHashFromNodeList(nodeList []Slot) []byte

GetHashFromNodeList will sort the list, then use Keccak256 to hash the list NOTE: do not modify the underlining content for hash

Types

type BLSSignature added in v1.3.1

type BLSSignature [BLSSignatureSizeInBytes]byte

BLSSignature defines the bls signature

type BlsPublicKey

type BlsPublicKey [PublicKeySizeInBytes]byte

BlsPublicKey defines the bls public key

func FromLibBLSPublicKeyUnsafe added in v1.3.0

func FromLibBLSPublicKeyUnsafe(key *bls.PublicKey) *BlsPublicKey

FromLibBLSPublicKeyUnsafe could give back nil, use only in cases when have invariant that return value won't be nil

func (BlsPublicKey) Big added in v1.3.0

func (pk BlsPublicKey) Big() *big.Int

Big ..

func (*BlsPublicKey) FromLibBLSPublicKey

func (pk *BlsPublicKey) FromLibBLSPublicKey(key *bls.PublicKey) error

FromLibBLSPublicKey replaces the key contents with the given key,

func (BlsPublicKey) Hex

func (pk BlsPublicKey) Hex() string

Hex returns the hex string of bls public key

func (BlsPublicKey) IsEmpty

func (pk BlsPublicKey) IsEmpty() bool

IsEmpty returns whether the bls public key is empty 0 bytes

func (BlsPublicKey) MarshalText added in v1.3.5

func (pk BlsPublicKey) MarshalText() (text []byte, err error)

MarshalText so that we can use this as JSON printable when used as key in a map

func (*BlsPublicKey) ToLibBLSPublicKey

func (pk *BlsPublicKey) ToLibBLSPublicKey(key *bls.PublicKey) error

ToLibBLSPublicKey copies the key contents into the given key.

type Committee

type Committee struct {
	ShardID uint32   `json:"shard-id"`
	Slots   SlotList `json:"subcommittee"`
}

Committee contains the active nodes in one shard

func (*Committee) AddressForBLSKey added in v1.3.3

func (c *Committee) AddressForBLSKey(key BlsPublicKey) (*common.Address, error)

AddressForBLSKey ..

func (*Committee) BLSPublicKeys added in v1.3.3

func (c *Committee) BLSPublicKeys() ([]*bls.PublicKey, error)

BLSPublicKeys ..

func (*Committee) DeepCopy

func (c *Committee) DeepCopy() Committee

DeepCopy returns a deep copy of the receiver.

func (*Committee) Hash added in v1.3.6

func (c *Committee) Hash() common.Hash

Hash ..

func (Committee) StakedValidators added in v1.3.3

func (c Committee) StakedValidators() *StakedSlots

StakedValidators filters for non-harmony operated nodes, returns (

totalStakedValidatorsCount, totalStakedBLSKeys,
addrsOnNetworkSlice, addrsOnNetworkSet,

)

type CommitteeLegacy added in v1.3.0

type CommitteeLegacy struct {
	ShardID uint32         `json:"shard-id"`
	Slots   SlotListLegacy `json:"subcommittee"`
}

CommitteeLegacy contains the active nodes in one shard

type Slot added in v1.3.0

type Slot struct {
	EcdsaAddress common.Address `json:"ecdsa-address"`
	BlsPublicKey BlsPublicKey   `json:"bls-pubkey"`
	// nil means our node, 0 means not active, > 0 means staked node
	EffectiveStake *numeric.Dec `json:"effective-stake" rlp:"nil"`
}

Slot represents node id (BLS address)

func (Slot) Serialize added in v1.3.0

func (n Slot) Serialize() []byte

Serialize serialize Slot into bytes

func (Slot) String added in v1.3.0

func (n Slot) String() string

type SlotLegacy added in v1.3.0

type SlotLegacy struct {
	EcdsaAddress common.Address `json:"ecdsa-address"`
	BlsPublicKey BlsPublicKey   `json:"bls-pubkey"`
}

SlotLegacy represents node id (BLS address)

type SlotList added in v1.3.0

type SlotList []Slot

SlotList is a list of Slot.

func (SlotList) DeepCopy added in v1.3.0

func (l SlotList) DeepCopy() SlotList

DeepCopy returns a deep copy of the receiver.

func (SlotList) String added in v1.3.3

func (l SlotList) String() string

type SlotListLegacy added in v1.3.0

type SlotListLegacy []SlotLegacy

SlotListLegacy is a list of SlotList.

type StakedSlots added in v1.3.3

type StakedSlots struct {
	CountStakedValidator int
	CountStakedBLSKey    int
	Addrs                []common.Address
	LookupSet            map[common.Address]struct{}
}

StakedSlots gives overview of subset of shard state that is coming via an stake, that is, view epos

type State

type State struct {
	Epoch  *big.Int    `json:"epoch"`
	Shards []Committee `json:"shards"`
}

State is the collection of all committees

func DecodeWrapper added in v1.3.0

func DecodeWrapper(shardState []byte) (*State, error)

DecodeWrapper ..

func (*State) DeepCopy

func (ss *State) DeepCopy() *State

DeepCopy returns a deep copy of the receiver.

func (*State) FindCommitteeByID

func (ss *State) FindCommitteeByID(shardID uint32) (*Committee, error)

FindCommitteeByID returns the committee configuration for the given shard, or nil if the given shard is not found.

func (*State) Hash

func (ss *State) Hash() (h common.Hash)

Hash is the root hash of State

func (*State) MarshalJSON added in v1.3.2

func (ss *State) MarshalJSON() ([]byte, error)

MarshalJSON ..

func (*State) StakedValidators added in v1.3.3

func (ss *State) StakedValidators() *StakedSlots

StakedValidators filters for non-harmony operated nodes, returns (

totalStakedValidatorsCount, totalStakedBLSKeys,
addrsOnNetworkSlice, addrsOnNetworkSet,

)

func (*State) String added in v1.3.2

func (ss *State) String() string

String produces a non-pretty printed JSON string of the SuperCommittee

type StateLegacy added in v1.3.0

type StateLegacy []CommitteeLegacy

StateLegacy ..

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL