Documentation ¶
Index ¶
- Constants
- Variables
- func CompareBLSPublicKey(k1, k2 bls.SerializedPublicKey) int
- func CompareCommittee(c1, c2 *Committee) int
- func CompareNodeID(id1, id2 *Slot) int
- func CompareNodeIDList(l1, l2 SlotList) int
- func EncodeWrapper(shardState State, isStaking bool) ([]byte, error)
- func ExternalSlotsAvailableForEpoch(epoch *big.Int) int
- func GetHashFromNodeList(nodeList []Slot) []byte
- type Committee
- type CommitteeLegacy
- type Slot
- type SlotLegacy
- type SlotList
- type SlotListLegacy
- type StakedSlots
- type State
- type StateLegacy
Constants ¶
const (
// BeaconChainShardID is the ShardID of the BeaconChain
BeaconChainShardID = 0
)
Variables ¶
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") )
var ( // ErrShardIDNotInSuperCommittee .. ErrShardIDNotInSuperCommittee = errors.New("shardID not in super committee") )
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 bls.SerializedPublicKey) int
CompareBLSPublicKey compares two SerializedPublicKey, lexicographically.
func CompareCommittee ¶
CompareCommittee compares two committees and their leader/node list.
func CompareNodeIDList ¶
CompareNodeIDList compares two node ID lists.
func EncodeWrapper ¶
EncodeWrapper ..
func ExternalSlotsAvailableForEpoch ¶
ExternalSlotsAvailableForEpoch ..
func GetHashFromNodeList ¶
GetHashFromNodeList will sort the list, then use Keccak256 to hash the list NOTE: do not modify the underlining content for hash
Types ¶
type Committee ¶
Committee contains the active nodes in one shard
func (*Committee) AddressForBLSKey ¶
AddressForBLSKey ..
func (*Committee) BLSPublicKeys ¶
func (c *Committee) BLSPublicKeys() ([]bls.PublicKeyWrapper, error)
BLSPublicKeys ..
func (Committee) StakedValidators ¶
func (c Committee) StakedValidators() *StakedSlots
StakedValidators ..
type CommitteeLegacy ¶
type CommitteeLegacy struct { ShardID uint32 `json:"shard-id"` Slots SlotListLegacy `json:"subcommittee"` }
CommitteeLegacy contains the active nodes in one shard
type Slot ¶
type Slot struct { EcdsaAddress common.Address `json:"ecdsa-address"` BLSPublicKey bls.SerializedPublicKey `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)
type SlotLegacy ¶
type SlotLegacy struct { EcdsaAddress common.Address `json:"ecdsa-address"` BLSPublicKey bls.SerializedPublicKey `json:"bls-pubkey"` }
SlotLegacy represents node id (BLS address)
type SlotList ¶
type SlotList []Slot
SlotList is a list of Slot.
type StakedSlots ¶
type StakedSlots struct { CountStakedValidator int CountStakedBLSKey int Addrs []common.Address LookupSet map[common.Address]struct{} TotalEffectiveStaked numeric.Dec }
StakedSlots gives overview of members in a subcommittee (aka a shard)
type State ¶
type State struct { // Epoch can be nil Epoch *big.Int `json:"epoch"` Shards []Committee `json:"shards"` }
State is the collection of all committees
func (*State) FindCommitteeByID ¶
FindCommitteeByID returns the committee configuration for the given shard, or nil if the given shard is not found.
func (*State) StakedValidators ¶
func (ss *State) StakedValidators() *StakedSlots
StakedValidators here is supercommittee wide