shard

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2020 License: MIT Imports: 13 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 (
	// 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 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) MarshalJSON added in v1.3.0

func (pk BlsPublicKey) MarshalJSON() ([]byte, error)

MarshalJSON ..

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) DeepCopy

func (c Committee) DeepCopy() Committee

DeepCopy returns a deep copy of the receiver.

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.

type SlotListLegacy added in v1.3.0

type SlotListLegacy []SlotLegacy

SlotListLegacy is a list of SlotList.

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) ExternalValidators added in v1.3.1

func (ss *State) ExternalValidators() []common.Address

ExternalValidators returns only the staking era, external validators aka non-harmony nodes

func (*State) FindCommitteeByID

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

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) String added in v1.3.2

func (ss *State) String() string

String ..

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