primitives

package
v0.2.0-beta.2 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2021 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Code generated by fastssz. DO NOT EDIT.

Index

Constants

View Source
const (
	RewardMatchedFromEpoch uint64 = iota
	PenaltyMissingFromEpoch
	RewardMatchedToEpoch
	PenaltyMissingToEpoch
	RewardMatchedBeaconBlock
	PenaltyMissingBeaconBlock
	RewardIncludedVote
	RewardInclusionDistance
	PenaltyInactivityLeak
	PenaltyInactivityLeakNoVote
)
View Source
const (
	// EnterVotingPeriod can be done by anyone on the network to signal that they
	// want a voting period to start.
	EnterVotingPeriod uint64 = iota

	// VoteFor can be done by anyone on the network during a voting period to vote
	// for a specific assignment of managers.
	VoteFor

	// UpdateManagersInstantly updates the current managers on the condition that
	// the signature is signed by 5/5 of the managers.
	UpdateManagersInstantly

	// UpdateManagersVote immediately triggers a community vote to re-elect certain
	// managers on the condition that the signature is signed by 3/5 of the managers.
	UpdateManagersVote
)
View Source
const (
	// StatusStarting is when the validator is waiting to join.
	StatusStarting uint64 = iota

	// StatusActive is when the validator is currently in the queue.
	StatusActive

	// StatusActivePendingExit is when a validator is queued to be removed from the
	// active set.
	StatusActivePendingExit

	// StatusExitedWithPenalty is when the validator is exited due to a slashing condition
	// being violated.
	StatusExitedWithPenalty

	// StatusExitedWithoutPenalty is when a validator is exited due to a drop below
	// the ejection balance.
	StatusExitedWithoutPenalty
)
View Source
const BlockHeaderSize = 20 + (14 * 32) // 468 bytes

BlockHeader

View Source
const DepositDataSize = 48 + 96 + 20 // 164 bytes
View Source
const DepositSize = DepositDataSize + 48 + 96 // 308 bytes
View Source
const ExitSize = (48 * 2) + 96 // 192 bytes

MaxBlockSize defines the maximum bytes on a block object.

View Source
const MaxCoinProofSize = 8 + 25 + 192 + 44 + (32 * 64) + 8 // 2317 bytes
View Source
const MaxCoinProofsPerBlock = 64

CoinProofs

View Source
const MaxDepositsPerBlock = 32

Deposits

View Source
const MaxExecutionSize = 48 + 20 + (7168 + 4) + 96 + 8 + 8 // 32952 bytes
View Source
const MaxExecutionsPerBlock = 128

Execution

View Source
const MaxExitSize = 192

MaxExitSize is the maximum amount of bytes an exit can contain.

View Source
const MaxExitsPerBlock = 32

Exits

View Source
const MaxGovernanceVoteSize = 8 + 8 + 96 + 48 + 100 + 4 // 264 bytes
View Source
const MaxGovernanceVotesPerBlock = 128

GovernanceVote

View Source
const MaxMultiSignatureTxSize = MaxMultisigSize + 20 + (8 * 3) // 2231
View Source
const MaxMultiSignatureTxsOnBlock = 8

MultiSignatureTx

View Source
const MaxMultiValidatorVoteSize = VoteDataSize + 96 + 6255 // 6479 bytes
View Source
const MaxMultipubSize = 8 + (48 * 15) + 4 // 732
View Source
const MaxMultisigSize = MaxMultipubSize + (96 * 15) + 15 // 2187 bytes

Multisig

View Source
const MaxPartialExitsPerBlock = 32

PartialExits

View Source
const MaxProposerSlashingsPerBlock = 2

ProposerSlashing

View Source
const MaxPublicKeysOnMultipub = 15

Multipub

View Source
const MaxRANDAOSlashingsPerBlock = 20

RANDAOSlashing

View Source
const MaxTxsPerBlock = 5000

Tx

View Source
const MaxValidatorHelloMessageSize = 31250 + 16 + 96 + 5

ValidatorHelloMessage

View Source
const MaxVoteSlashingsPerBlock = 5

VoteSlashing

View Source
const MaxVotesPerBlock = 16

Vote

View Source
const MaxVotesSlashingSize = MaxMultiValidatorVoteSize*2 + 8 // 12948 bytes
View Source
const PartialExitsSize = (48 * 2) + 96 + 8 // 200 bytes
View Source
const ProposerSlashingSize = (96 * 2) + 48 + (BlockHeaderSize * 2) // 1240 bytes
View Source
const RANDAOSlashingSize = 96 + 48 + 8 // 152 bytes
View Source
const TxSize = 20 + 48 + (8 * 3) + 96 // 188 bytes
View Source
const VoteDataSize = 32 * 4 // 128 bytes

Variables

View Source
var (
	// ErrorInvalidSignature returned when a tx signature is invalid.
	ErrorInvalidSignature = errors.New("invalid tx signature")
)
View Source
var (
	// ErrorMultiInvalidSignature returned when a tx signature is invalid.
	ErrorMultiInvalidSignature = errors.New("invalid tx multi signature")
)

Functions

This section is empty.

Types

type AcceptedVoteInfo

type AcceptedVoteInfo struct {
	// Data is the data of the vote which specifies the signed part of the attestation.
	Data *VoteData

	// ParticipationBitfield is any validator that participated in the vote.
	// Max size is the same as the MultiValidatorVote bitlist size.
	ParticipationBitfield bitfield.Bitlist `ssz:"bitlist" ssz-max:"6250"`

	// Proposer is the proposer that included the attestation in a block.
	Proposer uint64

	// InclusionDelay is the delay from the attestation slot to the slot included.
	InclusionDelay uint64
}

AcceptedVoteInfo is vote data and participation for accepted votes.

func (*AcceptedVoteInfo) Copy

Copy returns a copy of the AcceptedVoteInfo.

func (*AcceptedVoteInfo) HashTreeRoot

func (a *AcceptedVoteInfo) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the AcceptedVoteInfo object

func (*AcceptedVoteInfo) HashTreeRootWith

func (a *AcceptedVoteInfo) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the AcceptedVoteInfo object with a hasher

func (*AcceptedVoteInfo) Marshal

func (a *AcceptedVoteInfo) Marshal() ([]byte, error)

Marshal encodes the data.

func (*AcceptedVoteInfo) MarshalSSZ

func (a *AcceptedVoteInfo) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the AcceptedVoteInfo object

func (*AcceptedVoteInfo) MarshalSSZTo

func (a *AcceptedVoteInfo) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the AcceptedVoteInfo object to a target array

func (*AcceptedVoteInfo) SizeSSZ

func (a *AcceptedVoteInfo) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the AcceptedVoteInfo object

func (*AcceptedVoteInfo) Unmarshal

func (a *AcceptedVoteInfo) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*AcceptedVoteInfo) UnmarshalSSZ

func (a *AcceptedVoteInfo) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the AcceptedVoteInfo object

type AccountInfo

type AccountInfo struct {
	Account [20]byte
	Info    uint64
}

AccountInfo is the information contained into both slices. It represents the account hash and a value.

func (*AccountInfo) HashTreeRoot

func (a *AccountInfo) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the AccountInfo object

func (*AccountInfo) HashTreeRootWith

func (a *AccountInfo) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the AccountInfo object with a hasher

func (*AccountInfo) MarshalSSZ

func (a *AccountInfo) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the AccountInfo object

func (*AccountInfo) MarshalSSZTo

func (a *AccountInfo) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the AccountInfo object to a target array

func (*AccountInfo) SizeSSZ

func (a *AccountInfo) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the AccountInfo object

func (*AccountInfo) UnmarshalSSZ

func (a *AccountInfo) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the AccountInfo object

type Block

type Block struct {
	Header            *BlockHeader                        // 																		= 500 bytes
	Signature         [96]byte                            // 																		= 96 bytes
	RandaoSignature   [96]byte                            // 																		= 96
	Votes             []*MultiValidatorVote               `ssz-max:"16"`   // MaxVotesPerBlock 						16 * 6479 		= 103664 bytes
	Deposits          []*Deposit                          `ssz-max:"32"`   // MaxDepositsPerBlock 					32 * 308 		= 9856 bytes
	Exits             []*Exit                             `ssz-max:"32"`   // MaxExitsPerBlock     					32 * 192 		= 6144 bytes
	PartialExit       []*PartialExit                      `ssz-max:"32"`   // MaxPartialExitsPerBlock            	32 * 200		= 6400 bytes
	CoinProofs        []*burnproof.CoinsProofSerializable `ssz-max:"64"`   // MaxCoinProofsPerBlock 				64 * 2317   	= 148288 bytes
	Executions        []*Execution                        `ssz-max:"128"`  // MaxExecutionsPerBlock					128 * 7168      = 917504 bytes
	Txs               []*Tx                               `ssz-max:"5000"` // MaxTxsPerBlock						5000 * 188  	= 940000 bytes
	ProposerSlashings []*ProposerSlashing                 `ssz-max:"2"`    // MaxProposerSlashingsPerBlock 			2 * 1240 		= 2480 bytes
	VoteSlashings     []*VoteSlashing                     `ssz-max:"5"`    // MaxVoteSlashingsPerBlock				10 * 12948 		= 129480 bytes
	RANDAOSlashings   []*RANDAOSlashing                   `ssz-max:"20"`   // MaxRANDAOSlashingsPerBlock  			20 * 152 		= 3040 bytes
	GovernanceVotes   []*GovernanceVote                   `ssz-max:"128"`  // MaxGovernanceVotesPerBlock			128 * 264		= 33792 bytes
	MultiSignatureTxs []*MultiSignatureTx                 `ssz-max:"8"`    // MaxMultiSignatureTxsOnBlock			8 * 2231      	= 17848 bytes
}

Block is a block in the blockchain.

func GetGenesisBlock

func GetGenesisBlock() Block

GetGenesisBlock gets the genesis block for a certain chain parameters.

func (*Block) CoinProofsMerkleRoot

func (b *Block) CoinProofsMerkleRoot() chainhash.Hash

CoinProofsMerkleRoot calculates the merkle root of the CoinProofs in the block.

func (*Block) DepositMerkleRoot

func (b *Block) DepositMerkleRoot() chainhash.Hash

DepositMerkleRoot calculates the merkle root of the Deposits in the block.

func (*Block) ExecutionsMerkleRoot

func (b *Block) ExecutionsMerkleRoot() chainhash.Hash

ExecutionsMarkleRoot calculates the merkle root of the Executions in the block.

func (*Block) ExitMerkleRoot

func (b *Block) ExitMerkleRoot() chainhash.Hash

ExitMerkleRoot calculates the merkle root of the Exits in the block.

func (*Block) GetTxs

func (b *Block) GetTxs() []string

GetTxs returns a slice with tx hashes

func (*Block) GovernanceVoteMerkleRoot

func (b *Block) GovernanceVoteMerkleRoot() chainhash.Hash

GovernanceVoteMerkleRoot calculates the merkle root of the GovernanceVotes in the block.

func (*Block) Hash

func (b *Block) Hash() chainhash.Hash

Hash calculates the hash of the block.

func (*Block) HashTreeRoot

func (b *Block) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Block object

func (*Block) HashTreeRootWith

func (b *Block) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Block object with a hasher

func (*Block) Marshal

func (b *Block) Marshal() ([]byte, error)

Marshal encodes the block.

func (*Block) MarshalSSZ

func (b *Block) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Block object

func (*Block) MarshalSSZTo

func (b *Block) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Block object to a target array

func (*Block) MultiSignatureTxsMerkleRoot

func (b *Block) MultiSignatureTxsMerkleRoot() chainhash.Hash

MultiSignatureTxsMerkleRoot calculates the merkle root of the TxsMulti in the block.

func (*Block) PartialExitsMerkleRoot

func (b *Block) PartialExitsMerkleRoot() chainhash.Hash

PartialExitsMerkleRoot calculates the merkle root of the PartialExit in the block.

func (*Block) ProposerSlashingsRoot

func (b *Block) ProposerSlashingsRoot() chainhash.Hash

ProposerSlashingsRoot calculates the merkle root of the ProposerSlashings in the block.

func (*Block) RANDAOSlashingsRoot

func (b *Block) RANDAOSlashingsRoot() chainhash.Hash

RANDAOSlashingsRoot calculates the merkle root of the RANDAOSlashings in the block.

func (*Block) SizeSSZ

func (b *Block) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Block object

func (*Block) TxsMerkleRoot

func (b *Block) TxsMerkleRoot() chainhash.Hash

TxsMerkleRoot calculates the merkle root of the Txs in the block.

func (*Block) Unmarshal

func (b *Block) Unmarshal(bb []byte) error

Unmarshal decodes the block.

func (*Block) UnmarshalSSZ

func (b *Block) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Block object

func (*Block) VoteSlashingRoot

func (b *Block) VoteSlashingRoot() chainhash.Hash

VoteSlashingRoot calculates the merkle root of the VoteSlashings in the block.

func (*Block) VotesMerkleRoot

func (b *Block) VotesMerkleRoot() chainhash.Hash

VotesMerkleRoot calculates the merkle root of the Votes in the block.

type BlockHeader

type BlockHeader struct {
	Version                     uint64
	Nonce                       uint64
	Timestamp                   uint64
	Slot                        uint64
	PrevBlockHash               [32]byte
	FeeAddress                  [20]byte
	VoteMerkleRoot              [32]byte
	DepositMerkleRoot           [32]byte
	ExitMerkleRoot              [32]byte
	PartialExitMerkleRoot       [32]byte
	CoinProofsMerkleRoot        [32]byte
	ExecutionsMerkleRoot        [32]byte
	TxsMerkleRoot               [32]byte
	ProposerSlashingMerkleRoot  [32]byte
	VoteSlashingMerkleRoot      [32]byte
	RANDAOSlashingMerkleRoot    [32]byte
	GovernanceVotesMerkleRoot   [32]byte
	MultiSignatureTxsMerkleRoot [32]byte
}

BlockHeader is the container of merkle roots for the blockchain

func (*BlockHeader) Hash

func (b *BlockHeader) Hash() chainhash.Hash

Hash calculates the hash of the block header.

func (*BlockHeader) HashTreeRoot

func (b *BlockHeader) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the BlockHeader object

func (*BlockHeader) HashTreeRootWith

func (b *BlockHeader) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the BlockHeader object with a hasher

func (*BlockHeader) Marshal

func (b *BlockHeader) Marshal() ([]byte, error)

Marshal encodes the data.

func (*BlockHeader) MarshalSSZ

func (b *BlockHeader) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the BlockHeader object

func (*BlockHeader) MarshalSSZTo

func (b *BlockHeader) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the BlockHeader object to a target array

func (*BlockHeader) SizeSSZ

func (b *BlockHeader) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the BlockHeader object

func (*BlockHeader) Unmarshal

func (b *BlockHeader) Unmarshal(by []byte) error

Unmarshal decodes the data.

func (*BlockHeader) UnmarshalSSZ

func (b *BlockHeader) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the BlockHeader object

type BlockNodeDisk

type BlockNodeDisk struct {
	Height   uint64
	Slot     uint64
	Children [][32]byte `ssz-max:"64"`
	Hash     [32]byte   `ssz-size:"32"`
	Parent   [32]byte   `ssz-size:"32"`
}

BlockNodeDisk is a block node stored on disk.

func (*BlockNodeDisk) HashTreeRoot

func (b *BlockNodeDisk) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the BlockNodeDisk object

func (*BlockNodeDisk) HashTreeRootWith

func (b *BlockNodeDisk) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the BlockNodeDisk object with a hasher

func (*BlockNodeDisk) Marshal

func (b *BlockNodeDisk) Marshal() ([]byte, error)

Marshal encodes de data

func (*BlockNodeDisk) MarshalSSZ

func (b *BlockNodeDisk) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the BlockNodeDisk object

func (*BlockNodeDisk) MarshalSSZTo

func (b *BlockNodeDisk) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the BlockNodeDisk object to a target array

func (*BlockNodeDisk) SizeSSZ

func (b *BlockNodeDisk) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the BlockNodeDisk object

func (*BlockNodeDisk) Unmarshal

func (b *BlockNodeDisk) Unmarshal(by []byte) error

Unmarshal decodes the data

func (*BlockNodeDisk) UnmarshalSSZ

func (b *BlockNodeDisk) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the BlockNodeDisk object

type CoinsState

type CoinsState struct {
	Balances       map[[20]byte]uint64
	Nonces         map[[20]byte]uint64
	ProofsVerified map[[32]byte]struct{}
}

CoinsState is the state that we use to store accounts balances and Nonces

func (*CoinsState) Copy

func (u *CoinsState) Copy() CoinsState

Copy copies CoinsState and returns a new one.

func (*CoinsState) FromSerializable

func (u *CoinsState) FromSerializable(ser *CoinsStateSerializable)

FromSerializable creates a CoinsState

func (*CoinsState) GetTotal

func (u *CoinsState) GetTotal() uint64

GetTotal returns the total supply on the state

func (*CoinsState) Marshal

func (u *CoinsState) Marshal() ([]byte, error)

Marshal serialize to bytes the struct

func (*CoinsState) ToSerializable

func (u *CoinsState) ToSerializable() CoinsStateSerializable

ToSerializable converts the struct from maps to slices.

func (*CoinsState) Unmarshal

func (u *CoinsState) Unmarshal(b []byte) error

Unmarshal deserialize the bytes to struct

type CoinsStateSerializable

type CoinsStateSerializable struct {
	Balances []*AccountInfo `ssz-max:"2097152"`
	Nonces   []*AccountInfo `ssz-max:"2097152"`
	Proofs   [][32]byte     `ssz-max:"2097152"`
}

CoinsStateSerializable is a struct to properly serialize the coinstate efficiently

func (*CoinsStateSerializable) HashTreeRoot

func (c *CoinsStateSerializable) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the CoinsStateSerializable object

func (*CoinsStateSerializable) HashTreeRootWith

func (c *CoinsStateSerializable) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the CoinsStateSerializable object with a hasher

func (*CoinsStateSerializable) Marshal

func (c *CoinsStateSerializable) Marshal() ([]byte, error)

func (*CoinsStateSerializable) MarshalSSZ

func (c *CoinsStateSerializable) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the CoinsStateSerializable object

func (*CoinsStateSerializable) MarshalSSZTo

func (c *CoinsStateSerializable) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the CoinsStateSerializable object to a target array

func (*CoinsStateSerializable) SizeSSZ

func (c *CoinsStateSerializable) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the CoinsStateSerializable object

func (*CoinsStateSerializable) Unmarshal

func (c *CoinsStateSerializable) Unmarshal(b []byte) error

func (*CoinsStateSerializable) UnmarshalSSZ

func (c *CoinsStateSerializable) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the CoinsStateSerializable object

type CommunityVoteData

type CommunityVoteData struct {
	ReplacementCandidates [][20]byte `ssz-max:"5"`
}

CommunityVoteData is the votes that users sign to vote for a specific candidate.

func (*CommunityVoteData) Copy

Copy copies the community vote data.

func (*CommunityVoteData) Hash

func (c *CommunityVoteData) Hash() chainhash.Hash

Hash calculates the hash of the vote data.

func (*CommunityVoteData) HashTreeRoot

func (c *CommunityVoteData) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the CommunityVoteData object

func (*CommunityVoteData) HashTreeRootWith

func (c *CommunityVoteData) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the CommunityVoteData object with a hasher

func (*CommunityVoteData) Marshal

func (c *CommunityVoteData) Marshal() ([]byte, error)

Marshal encodes the data.

func (*CommunityVoteData) MarshalSSZ

func (c *CommunityVoteData) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the CommunityVoteData object

func (*CommunityVoteData) MarshalSSZTo

func (c *CommunityVoteData) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the CommunityVoteData object to a target array

func (*CommunityVoteData) SizeSSZ

func (c *CommunityVoteData) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the CommunityVoteData object

func (*CommunityVoteData) Unmarshal

func (c *CommunityVoteData) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*CommunityVoteData) UnmarshalSSZ

func (c *CommunityVoteData) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the CommunityVoteData object

type CommunityVoteDataInfo

type CommunityVoteDataInfo struct {
	Hash [32]byte `ssz-size:"32"`
	Data *CommunityVoteData
}

CommunityVoteDataInfo contains information about a community vote.

func (*CommunityVoteDataInfo) HashTreeRoot

func (c *CommunityVoteDataInfo) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the CommunityVoteDataInfo object

func (*CommunityVoteDataInfo) HashTreeRootWith

func (c *CommunityVoteDataInfo) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the CommunityVoteDataInfo object with a hasher

func (*CommunityVoteDataInfo) MarshalSSZ

func (c *CommunityVoteDataInfo) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the CommunityVoteDataInfo object

func (*CommunityVoteDataInfo) MarshalSSZTo

func (c *CommunityVoteDataInfo) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the CommunityVoteDataInfo object to a target array

func (*CommunityVoteDataInfo) SizeSSZ

func (c *CommunityVoteDataInfo) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the CommunityVoteDataInfo object

func (*CommunityVoteDataInfo) UnmarshalSSZ

func (c *CommunityVoteDataInfo) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the CommunityVoteDataInfo object

type Deposit

type Deposit struct {
	// PublicKey is the public key of the address that is depositing.
	PublicKey [48]byte

	// Signature is the signature signing the deposit data.
	Signature [96]byte

	// Data is the data that describes the new validator.
	Data *DepositData
}

Deposit is a deposit a user can submit to queue as a validator.

func (*Deposit) GetPublicKey

func (d *Deposit) GetPublicKey() (common.PublicKey, error)

GetPublicKey returns the bls public key of the deposit.

func (*Deposit) GetSignature

func (d *Deposit) GetSignature() (common.Signature, error)

GetSignature returns the bls signature of the deposit.

func (*Deposit) Hash

func (d *Deposit) Hash() chainhash.Hash

Hash calculates the hash of the deposit

func (*Deposit) HashTreeRoot

func (d *Deposit) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Deposit object

func (*Deposit) HashTreeRootWith

func (d *Deposit) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Deposit object with a hasher

func (*Deposit) Marshal

func (d *Deposit) Marshal() ([]byte, error)

Marshal encodes the data.

func (*Deposit) MarshalSSZ

func (d *Deposit) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Deposit object

func (*Deposit) MarshalSSZTo

func (d *Deposit) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Deposit object to a target array

func (*Deposit) SizeSSZ

func (d *Deposit) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Deposit object

func (*Deposit) Unmarshal

func (d *Deposit) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*Deposit) UnmarshalSSZ

func (d *Deposit) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Deposit object

type DepositData

type DepositData struct {
	// PublicKey is the key used for the validator.
	PublicKey [48]byte

	// ProofOfPossession is the public key signed by the private key to prove that you own the address and prevent rogue public-key attacks.
	ProofOfPossession [96]byte

	// WithdrawalAddress is the address to withdraw to.
	WithdrawalAddress [20]byte
}

DepositData is the part of the deposit that is signed

func (*DepositData) GetPublicKey

func (d *DepositData) GetPublicKey() (common.PublicKey, error)

GetPublicKey returns the bls public key of the deposit data.

func (*DepositData) GetSignature

func (d *DepositData) GetSignature() (common.Signature, error)

GetSignature returns the bls signature of the deposit data.

func (*DepositData) HashTreeRoot

func (d *DepositData) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the DepositData object

func (*DepositData) HashTreeRootWith

func (d *DepositData) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the DepositData object with a hasher

func (*DepositData) Marshal

func (d *DepositData) Marshal() ([]byte, error)

Marshal encodes the data.

func (*DepositData) MarshalSSZ

func (d *DepositData) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the DepositData object

func (*DepositData) MarshalSSZTo

func (d *DepositData) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the DepositData object to a target array

func (*DepositData) SizeSSZ

func (d *DepositData) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the DepositData object

func (*DepositData) Unmarshal

func (d *DepositData) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*DepositData) UnmarshalSSZ

func (d *DepositData) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the DepositData object

type EpochReceipt

type EpochReceipt struct {
	Type      uint64
	Amount    int64
	Validator uint64
}

EpochReceipt is a balance change carried our by an epoch transition.

func (*EpochReceipt) String

func (e *EpochReceipt) String() string

func (EpochReceipt) TypeString

func (e EpochReceipt) TypeString() string

type Execution

type Execution struct {

	// FromPubKey is the public account of the user that wants to execute the input
	FromPubKey [48]byte

	// To is the account of the contract on which the input is executed.
	To [20]byte

	Input []byte `ssz-max:"7168"` // Maximum bytecode size is 7Kb

	// Signature is the signature of the user that executes the bytecode
	Signature [96]byte

	Gas      uint64
	GasLimit uint64
}

Execution is a block in the blockchain.

func (Execution) Hash

func (e Execution) Hash() chainhash.Hash

Hash gets the message the needs to be signed.

func (*Execution) HashTreeRoot

func (e *Execution) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Execution object

func (*Execution) HashTreeRootWith

func (e *Execution) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Execution object with a hasher

func (*Execution) Marshal

func (e *Execution) Marshal() ([]byte, error)

Marshal encodes the block.

func (*Execution) MarshalSSZ

func (e *Execution) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Execution object

func (*Execution) MarshalSSZTo

func (e *Execution) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Execution object to a target array

func (Execution) SignatureMessage

func (e Execution) SignatureMessage() chainhash.Hash

SignatureMessage gets the message the needs to be signed.

func (*Execution) SizeSSZ

func (e *Execution) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Execution object

func (*Execution) Unmarshal

func (e *Execution) Unmarshal(b []byte) error

func (*Execution) UnmarshalSSZ

func (e *Execution) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Execution object

func (Execution) VerifySig

func (e Execution) VerifySig() error

SignatureMessage gets the message the needs to be signed.

type Exit

type Exit struct {
	ValidatorPubkey [48]byte
	WithdrawPubkey  [48]byte
	Signature       [96]byte
}

Exit exits the validator from the queue.

func (*Exit) GetSignature

func (e *Exit) GetSignature() (common.Signature, error)

GetSignature returns the exit bls signature.

func (*Exit) GetValidatorPubKey

func (e *Exit) GetValidatorPubKey() (common.PublicKey, error)

GetValidatorPubKey returns the validator bls public key

func (*Exit) GetWithdrawPubKey

func (e *Exit) GetWithdrawPubKey() (common.PublicKey, error)

GetWithdrawPubKey returns the withdraw bls public key

func (*Exit) Hash

func (e *Exit) Hash() chainhash.Hash

Hash calculates the hash of the exit.

func (*Exit) HashTreeRoot

func (e *Exit) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Exit object

func (*Exit) HashTreeRootWith

func (e *Exit) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Exit object with a hasher

func (*Exit) Marshal

func (e *Exit) Marshal() ([]byte, error)

Marshal encodes the data.

func (*Exit) MarshalSSZ

func (e *Exit) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Exit object

func (*Exit) MarshalSSZTo

func (e *Exit) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Exit object to a target array

func (*Exit) SizeSSZ

func (e *Exit) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Exit object

func (*Exit) Unmarshal

func (e *Exit) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*Exit) UnmarshalSSZ

func (e *Exit) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Exit object

type Governance

type Governance struct {
	ReplaceVotes   map[[20]byte]chainhash.Hash
	CommunityVotes map[chainhash.Hash]CommunityVoteData
}

Governance is a struct that contains CommunityVotes and ReplacementVotes indexes and slices.

func (*Governance) Copy

func (g *Governance) Copy() Governance

Copy copies Governance and returns a new one

func (*Governance) FromSerializable

func (g *Governance) FromSerializable(s *GovernanceSerializable)

FromSerializable creates the struct into a map based struct

func (*Governance) Marshal

func (g *Governance) Marshal() ([]byte, error)

Marshal serializes the struct to bytes

func (*Governance) ToSerializable

func (g *Governance) ToSerializable() GovernanceSerializable

ToSerializable creates a copy of the struct into a slices struct

func (*Governance) Unmarshal

func (g *Governance) Unmarshal(b []byte) error

Unmarshal deserialize the bytes to a struct

type GovernanceSerializable

type GovernanceSerializable struct {
	ReplaceVotes   []*ReplacementVotes      `ssz-max:"2097152"`
	CommunityVotes []*CommunityVoteDataInfo `ssz-max:"2097152"`
}

GovernanceSerializable is a struct that contains the Governance state on a serializable struct.

func (*GovernanceSerializable) HashTreeRoot

func (g *GovernanceSerializable) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the GovernanceSerializable object

func (*GovernanceSerializable) HashTreeRootWith

func (g *GovernanceSerializable) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the GovernanceSerializable object with a hasher

func (*GovernanceSerializable) MarshalSSZ

func (g *GovernanceSerializable) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the GovernanceSerializable object

func (*GovernanceSerializable) MarshalSSZTo

func (g *GovernanceSerializable) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the GovernanceSerializable object to a target array

func (*GovernanceSerializable) SizeSSZ

func (g *GovernanceSerializable) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the GovernanceSerializable object

func (*GovernanceSerializable) UnmarshalSSZ

func (g *GovernanceSerializable) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the GovernanceSerializable object

type GovernanceVote

type GovernanceVote struct {
	Type      uint64
	Data      []byte `ssz-max:"100"`
	VoteEpoch uint64
	PublicKey [48]byte
	Signature [96]byte
}

GovernanceVote is a vote for governance.

func (*GovernanceVote) Copy

func (g *GovernanceVote) Copy() *GovernanceVote

Copy copies the governance vote.

func (*GovernanceVote) GetPublicKey

func (g *GovernanceVote) GetPublicKey() (common.PublicKey, error)

GetPublicKey returns the public key of the governance vote.

func (*GovernanceVote) GetSignature

func (g *GovernanceVote) GetSignature() (common.Signature, error)

GetSignature returns the signature of the governance vote.

func (*GovernanceVote) Hash

func (g *GovernanceVote) Hash() chainhash.Hash

Hash calculates the hash of the governance vote.

func (*GovernanceVote) HashTreeRoot

func (g *GovernanceVote) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the GovernanceVote object

func (*GovernanceVote) HashTreeRootWith

func (g *GovernanceVote) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the GovernanceVote object with a hasher

func (*GovernanceVote) Marshal

func (g *GovernanceVote) Marshal() ([]byte, error)

Marshal encodes the data.

func (*GovernanceVote) MarshalSSZ

func (g *GovernanceVote) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the GovernanceVote object

func (*GovernanceVote) MarshalSSZTo

func (g *GovernanceVote) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the GovernanceVote object to a target array

func (*GovernanceVote) SignatureHash

func (g *GovernanceVote) SignatureHash() chainhash.Hash

SignatureHash gets the signed part of the hash.

func (*GovernanceVote) SizeSSZ

func (g *GovernanceVote) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the GovernanceVote object

func (*GovernanceVote) Unmarshal

func (g *GovernanceVote) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*GovernanceVote) UnmarshalSSZ

func (g *GovernanceVote) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the GovernanceVote object

func (*GovernanceVote) Valid

func (g *GovernanceVote) Valid() bool

Valid returns a boolean that checks for validity of the vote

type MultiSignatureTx

type MultiSignatureTx struct {
	To        [20]byte
	Amount    uint64
	Nonce     uint64
	Fee       uint64
	Signature *multisig.Multisig
}

MultiSignatureTx represents a transaction on the blockchain using a multi signature

func (MultiSignatureTx) FromPubkeyHash

func (m MultiSignatureTx) FromPubkeyHash() ([20]byte, error)

FromPubkeyHash calculates the hash of the from public key.

func (*MultiSignatureTx) Hash

func (m *MultiSignatureTx) Hash() chainhash.Hash

Hash calculates the transaction hash.

func (*MultiSignatureTx) HashTreeRoot

func (m *MultiSignatureTx) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the MultiSignatureTx object

func (*MultiSignatureTx) HashTreeRootWith

func (m *MultiSignatureTx) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the MultiSignatureTx object with a hasher

func (*MultiSignatureTx) Marshal

func (m *MultiSignatureTx) Marshal() ([]byte, error)

Marshal encodes the data.

func (*MultiSignatureTx) MarshalSSZ

func (m *MultiSignatureTx) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the MultiSignatureTx object

func (*MultiSignatureTx) MarshalSSZTo

func (m *MultiSignatureTx) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the MultiSignatureTx object to a target array

func (MultiSignatureTx) SignatureMessage

func (m MultiSignatureTx) SignatureMessage() chainhash.Hash

SignatureMessage gets the message the needs to be signed.

func (*MultiSignatureTx) SizeSSZ

func (m *MultiSignatureTx) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the MultiSignatureTx object

func (*MultiSignatureTx) Unmarshal

func (m *MultiSignatureTx) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*MultiSignatureTx) UnmarshalSSZ

func (m *MultiSignatureTx) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the MultiSignatureTx object

func (*MultiSignatureTx) VerifySig

func (m *MultiSignatureTx) VerifySig() error

VerifySig verifies the signatures is valid.

type MultiValidatorVote

type MultiValidatorVote struct {
	// Data defines the vote properties.
	Data *VoteData
	// Sig is the aggregated signature for all validators voting for the VoteData.
	Sig [96]byte
	// ParticipationBitfield is a bitlist that marks the index of the validators voting.
	// Maximum amount of votes inside a bitlist is 50000
	ParticipationBitfield bitfield.Bitlist `ssz:"bitlist" ssz-max:"50000"`
}

MultiValidatorVote is a vote signed by one or many validators.

func (*MultiValidatorVote) HashTreeRoot

func (m *MultiValidatorVote) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the MultiValidatorVote object

func (*MultiValidatorVote) HashTreeRootWith

func (m *MultiValidatorVote) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the MultiValidatorVote object with a hasher

func (*MultiValidatorVote) Marshal

func (m *MultiValidatorVote) Marshal() ([]byte, error)

Marshal encodes the data.

func (*MultiValidatorVote) MarshalSSZ

func (m *MultiValidatorVote) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the MultiValidatorVote object

func (*MultiValidatorVote) MarshalSSZTo

func (m *MultiValidatorVote) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the MultiValidatorVote object to a target array

func (*MultiValidatorVote) Signature

func (m *MultiValidatorVote) Signature() (common.Signature, error)

Signature returns the signature on BLS type

func (*MultiValidatorVote) SizeSSZ

func (m *MultiValidatorVote) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the MultiValidatorVote object

func (*MultiValidatorVote) Unmarshal

func (m *MultiValidatorVote) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*MultiValidatorVote) UnmarshalSSZ

func (m *MultiValidatorVote) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the MultiValidatorVote object

type PartialExit

type PartialExit struct {
	ValidatorPubkey [48]byte
	WithdrawPubkey  [48]byte
	Signature       [96]byte
	Amount          uint64
}

PartialExit claims a partial amount of a validator balance without removing it from the validator registry.

func (*PartialExit) GetSignature

func (p *PartialExit) GetSignature() (common.Signature, error)

GetSignature returns the exit bls signature.

func (*PartialExit) GetValidatorPubKey

func (p *PartialExit) GetValidatorPubKey() (common.PublicKey, error)

GetValidatorPubKey returns the validator bls public key

func (*PartialExit) GetWithdrawPubKey

func (p *PartialExit) GetWithdrawPubKey() (common.PublicKey, error)

GetWithdrawPubKey returns the withdraw bls public key

func (*PartialExit) Hash

func (p *PartialExit) Hash() chainhash.Hash

Hash calculates the hash of the exit.

func (*PartialExit) HashTreeRoot

func (p *PartialExit) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the PartialExit object

func (*PartialExit) HashTreeRootWith

func (p *PartialExit) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the PartialExit object with a hasher

func (*PartialExit) Marshal

func (p *PartialExit) Marshal() ([]byte, error)

Marshal encodes the data.

func (*PartialExit) MarshalSSZ

func (p *PartialExit) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the PartialExit object

func (*PartialExit) MarshalSSZTo

func (p *PartialExit) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the PartialExit object to a target array

func (*PartialExit) SizeSSZ

func (p *PartialExit) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the PartialExit object

func (*PartialExit) Unmarshal

func (p *PartialExit) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*PartialExit) UnmarshalSSZ

func (p *PartialExit) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the PartialExit object

type ProposerSlashing

type ProposerSlashing struct {
	BlockHeader1       *BlockHeader
	BlockHeader2       *BlockHeader
	Signature1         [96]byte `ssz-size:"96"`
	Signature2         [96]byte `ssz-size:"96"`
	ValidatorPublicKey [48]byte `ssz-size:"48"`
}

ProposerSlashing is a slashing to a block proposer that proposed two blocks at the same slot.

func (*ProposerSlashing) GetSignature1

func (p *ProposerSlashing) GetSignature1() (common.Signature, error)

GetSignature1 returns the slashing first bls validator signature.

func (*ProposerSlashing) GetSignature2

func (p *ProposerSlashing) GetSignature2() (common.Signature, error)

GetSignature2 returns the slashing second bls validator signature.

func (*ProposerSlashing) GetValidatorPubkey

func (p *ProposerSlashing) GetValidatorPubkey() (common.PublicKey, error)

GetValidatorPubkey returns the slashing bls validator public key.

func (*ProposerSlashing) Hash

func (p *ProposerSlashing) Hash() chainhash.Hash

Hash calculates the hash of the proposer slashing.

func (*ProposerSlashing) HashTreeRoot

func (p *ProposerSlashing) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the ProposerSlashing object

func (*ProposerSlashing) HashTreeRootWith

func (p *ProposerSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the ProposerSlashing object with a hasher

func (*ProposerSlashing) Marshal

func (p *ProposerSlashing) Marshal() ([]byte, error)

Marshal encodes the data.

func (*ProposerSlashing) MarshalSSZ

func (p *ProposerSlashing) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the ProposerSlashing object

func (*ProposerSlashing) MarshalSSZTo

func (p *ProposerSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the ProposerSlashing object to a target array

func (*ProposerSlashing) SizeSSZ

func (p *ProposerSlashing) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the ProposerSlashing object

func (*ProposerSlashing) Unmarshal

func (p *ProposerSlashing) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*ProposerSlashing) UnmarshalSSZ

func (p *ProposerSlashing) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the ProposerSlashing object

type RANDAOSlashing

type RANDAOSlashing struct {
	RandaoReveal    [96]byte
	Slot            uint64
	ValidatorPubkey [48]byte
}

RANDAOSlashing is a slashing where a validator reveals their RANDAO signature too early.

func (*RANDAOSlashing) GetRandaoReveal

func (r *RANDAOSlashing) GetRandaoReveal() (common.Signature, error)

GetRandaoReveal returns the bls signature of the randao reveal.

func (*RANDAOSlashing) GetValidatorPubkey

func (r *RANDAOSlashing) GetValidatorPubkey() (common.PublicKey, error)

GetValidatorPubkey returns the validator bls public key.

func (*RANDAOSlashing) Hash

func (r *RANDAOSlashing) Hash() chainhash.Hash

Hash calculates the hash of the RANDAO slashing.

func (*RANDAOSlashing) HashTreeRoot

func (r *RANDAOSlashing) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the RANDAOSlashing object

func (*RANDAOSlashing) HashTreeRootWith

func (r *RANDAOSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the RANDAOSlashing object with a hasher

func (*RANDAOSlashing) Marshal

func (r *RANDAOSlashing) Marshal() ([]byte, error)

Marshal encodes the data.

func (*RANDAOSlashing) MarshalSSZ

func (r *RANDAOSlashing) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the RANDAOSlashing object

func (*RANDAOSlashing) MarshalSSZTo

func (r *RANDAOSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the RANDAOSlashing object to a target array

func (*RANDAOSlashing) SizeSSZ

func (r *RANDAOSlashing) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the RANDAOSlashing object

func (*RANDAOSlashing) Unmarshal

func (r *RANDAOSlashing) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*RANDAOSlashing) UnmarshalSSZ

func (r *RANDAOSlashing) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the RANDAOSlashing object

type ReplacementVotes

type ReplacementVotes struct {
	Account [20]byte
	Hash    [32]byte
}

ReplacementVotes contains information about a replacement candidate selected.

func (*ReplacementVotes) HashTreeRoot

func (r *ReplacementVotes) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the ReplacementVotes object

func (*ReplacementVotes) HashTreeRootWith

func (r *ReplacementVotes) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the ReplacementVotes object with a hasher

func (*ReplacementVotes) Marshal

func (r *ReplacementVotes) Marshal() ([]byte, error)

Marshal encodes the data.

func (*ReplacementVotes) MarshalSSZ

func (r *ReplacementVotes) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the ReplacementVotes object

func (*ReplacementVotes) MarshalSSZTo

func (r *ReplacementVotes) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the ReplacementVotes object to a target array

func (*ReplacementVotes) SizeSSZ

func (r *ReplacementVotes) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the ReplacementVotes object

func (*ReplacementVotes) Unmarshal

func (r *ReplacementVotes) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*ReplacementVotes) UnmarshalSSZ

func (r *ReplacementVotes) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the ReplacementVotes object

type SerializableState

type SerializableState struct {
	// CoinsState keeps if accounts balances and transactions.
	CoinsState *CoinsStateSerializable

	// ValidatorRegistry keeps track of validators in the state.
	ValidatorRegistry []*Validator `ssz-max:"2097152"`

	// LatestValidatorRegistryChange keeps track of the last time the validator
	// registry was changed. We only want to update the registry if a block was
	// finalized since the last time it was changed, so we keep track of that
	// here.
	LatestValidatorRegistryChange uint64

	// RANDAO for figuring out the proposer queue. We don't want any one validator
	// to have influence over the RANDAO, so we have each proposer contribute.
	RANDAO [32]byte `ssz-size:"32"`

	// NextRANDAO is the RANDAO currently being created. Every time a block is
	// created, we XOR the 32 least-significant bytes of the RandaoReveal with this
	// value to update it.
	NextRANDAO [32]byte `ssz-size:"32"`

	// Slot is the last slot ProcessSlot was called for.
	Slot uint64

	// EpochIndex is the last epoch ProcessEpoch was called for.
	EpochIndex uint64

	// ProposerQueue is the queue of validators scheduled to create a block.
	ProposerQueue []uint64 `ssz-max:"2097152"`

	PreviousEpochVoteAssignments []uint64 `ssz-max:"2097152"`
	CurrentEpochVoteAssignments  []uint64 `ssz-max:"2097152"`

	// NextProposerQueue is the queue of validators scheduled to create a block
	// in the next epoch.
	NextProposerQueue []uint64 `ssz-max:"2097152"`

	// JustifiedBitfield is a bitfield where the nth least significant bit
	// represents whether the nth last epoch was justified.
	JustificationBitfield uint64

	// FinalizedEpoch is the epoch that was finalized.
	FinalizedEpoch uint64

	// LastBlockHashes is the last LastBlockHashesSize block hashes.
	LatestBlockHashes [][32]byte `ssz-max:"64"`

	// JustifiedEpoch is the last epoch that >2/3 of validators voted for.
	JustifiedEpoch uint64

	// JustifiedEpochHash is the block hash of the last epoch that >2/3 of validators voted for.
	JustifiedEpochHash [32]byte `ssz-size:"32"`

	// CurrentEpochVotes are votes that are being submitted where
	// the source epoch matches justified epoch.
	CurrentEpochVotes []*AcceptedVoteInfo `ssz-max:"2097152"`

	// PreviousJustifiedEpoch is the second-to-last epoch that >2/3 of validators
	// voted for.
	PreviousJustifiedEpoch uint64

	// PreviousJustifiedEpochHash is the block hash of the last epoch that >2/3 of validators voted for.
	PreviousJustifiedEpochHash [32]byte `ssz-size:"32"`

	// PreviousEpochVotes are votes where the FromEpoch matches PreviousJustifiedEpoch.
	PreviousEpochVotes []*AcceptedVoteInfo `ssz-max:"2097152"`

	// CurrentManagers are current managers of the governance funds.
	CurrentManagers [][20]byte `ssz-max:"5"`

	// ManagerReplacement is a bitfield where the bits of the managers to replace are 1.
	ManagerReplacement bitfield.Bitlist `ssz:"bitlist" ssz-max:"2048"`

	// Governance represents current votes state
	Governance *GovernanceSerializable

	VoteEpoch          uint64
	VoteEpochStartSlot uint64
	VotingState        uint64

	LastPaidSlot uint64
}

SerializableState is a serializable copy of the state

func (*SerializableState) HashTreeRoot

func (s *SerializableState) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the SerializableState object

func (*SerializableState) HashTreeRootWith

func (s *SerializableState) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the SerializableState object with a hasher

func (*SerializableState) Marshal

func (s *SerializableState) Marshal() ([]byte, error)

func (*SerializableState) MarshalSSZ

func (s *SerializableState) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the SerializableState object

func (*SerializableState) MarshalSSZTo

func (s *SerializableState) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the SerializableState object to a target array

func (*SerializableState) SizeSSZ

func (s *SerializableState) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the SerializableState object

func (*SerializableState) Unmarshal

func (s *SerializableState) Unmarshal(b []byte) error

func (*SerializableState) UnmarshalSSZ

func (s *SerializableState) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the SerializableState object

type Tx

type Tx struct {
	To            [20]byte
	FromPublicKey [48]byte
	Amount        uint64
	Nonce         uint64
	Fee           uint64
	Signature     [96]byte
}

Tx represents a transaction on the blockchain.

func (Tx) FromPubkeyHash

func (t Tx) FromPubkeyHash() ([20]byte, error)

FromPubkeyHash calculates the hash of the from public key.

func (Tx) GetPublic

func (t Tx) GetPublic() (common.PublicKey, error)

GetPublic returns the bls public key of the transaction.

func (Tx) GetSignature

func (t Tx) GetSignature() (common.Signature, error)

GetSignature returns the bls signature of the transaction.

func (*Tx) Hash

func (t *Tx) Hash() chainhash.Hash

Hash calculates the transaction hash.

func (*Tx) HashTreeRoot

func (t *Tx) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Tx object

func (*Tx) HashTreeRootWith

func (t *Tx) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Tx object with a hasher

func (*Tx) Marshal

func (t *Tx) Marshal() ([]byte, error)

Marshal encodes the data.

func (*Tx) MarshalSSZ

func (t *Tx) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Tx object

func (*Tx) MarshalSSZTo

func (t *Tx) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Tx object to a target array

func (Tx) SignatureMessage

func (t Tx) SignatureMessage() chainhash.Hash

SignatureMessage gets the message the needs to be signed.

func (*Tx) SizeSSZ

func (t *Tx) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Tx object

func (*Tx) Unmarshal

func (t *Tx) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*Tx) UnmarshalSSZ

func (t *Tx) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Tx object

func (*Tx) VerifySig

func (t *Tx) VerifySig() error

VerifySig verifies the signatures is valid.

type Validator

type Validator struct {
	Balance          uint64
	PubKey           [48]byte
	PayeeAddress     [20]byte
	Status           uint64
	FirstActiveEpoch uint64
	LastActiveEpoch  uint64
}

Validator is a validator in the queue.

func (*Validator) Copy

func (v *Validator) Copy() Validator

Copy returns a copy of the validator.

func (*Validator) HashTreeRoot

func (v *Validator) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the Validator object

func (*Validator) HashTreeRootWith

func (v *Validator) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the Validator object with a hasher

func (*Validator) IsActive

func (v *Validator) IsActive() bool

IsActive checks if a validator is currently active.

func (*Validator) IsActiveAtEpoch

func (v *Validator) IsActiveAtEpoch(epoch uint64) bool

IsActiveAtEpoch checks if a validator is active at a slot.

func (*Validator) Marshal

func (v *Validator) Marshal() ([]byte, error)

Marshal encodes the data.

func (*Validator) MarshalSSZ

func (v *Validator) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the Validator object

func (*Validator) MarshalSSZTo

func (v *Validator) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the Validator object to a target array

func (*Validator) SizeSSZ

func (v *Validator) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the Validator object

func (*Validator) StatusString

func (v *Validator) StatusString() string

StatusString returns the status on human readable string

func (*Validator) Unmarshal

func (v *Validator) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*Validator) UnmarshalSSZ

func (v *Validator) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the Validator object

type ValidatorHelloMessage

type ValidatorHelloMessage struct {
	Timestamp  uint64
	Nonce      uint64
	Signature  [96]byte
	Validators bitfield.Bitlist `ssz:"bitlist" ssz-max:"250000"`
}

ValidatorHelloMessage is a message sent by validators to indicate that they are coming online.

func (*ValidatorHelloMessage) HashTreeRoot

func (v *ValidatorHelloMessage) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the ValidatorHelloMessage object

func (*ValidatorHelloMessage) HashTreeRootWith

func (v *ValidatorHelloMessage) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the ValidatorHelloMessage object with a hasher

func (*ValidatorHelloMessage) Marshal

func (v *ValidatorHelloMessage) Marshal() ([]byte, error)

Marshal serializes the hello message to the given writer.

func (*ValidatorHelloMessage) MarshalSSZ

func (v *ValidatorHelloMessage) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the ValidatorHelloMessage object

func (*ValidatorHelloMessage) MarshalSSZTo

func (v *ValidatorHelloMessage) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the ValidatorHelloMessage object to a target array

func (*ValidatorHelloMessage) SignatureMessage

func (v *ValidatorHelloMessage) SignatureMessage() chainhash.Hash

SignatureMessage gets the signed portion of the message.

func (*ValidatorHelloMessage) SizeSSZ

func (v *ValidatorHelloMessage) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the ValidatorHelloMessage object

func (*ValidatorHelloMessage) Unmarshal

func (v *ValidatorHelloMessage) Unmarshal(b []byte) error

Unmarshal deserializes the validator hello message from the reader.

func (*ValidatorHelloMessage) UnmarshalSSZ

func (v *ValidatorHelloMessage) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the ValidatorHelloMessage object

type VoteData

type VoteData struct {
	// Slot is the slot the validators were assigned.
	Slot uint64

	// FromEpoch is the source epoch of the vote which should either be
	// the current justified epoch or the previous justified epoch.
	FromEpoch uint64

	// FromHash is the block hash of the FromEpoch.
	FromHash [32]byte

	// ToEpoch is the target epoch of the vote which should either be the
	// current epoch or the previous epoch.
	ToEpoch uint64

	// ToHash is the block hash of the ToEpoch.
	ToHash [32]byte

	// BeaconBlockHash is for the fork choice.
	BeaconBlockHash [32]byte

	// Nonce identifies the client that proposed the block.
	Nonce uint64
}

VoteData is the part of a vote that needs to be signed.

func (*VoteData) Copy

func (v *VoteData) Copy() VoteData

Copy returns a copy of the vote data.

func (*VoteData) Equals

func (v *VoteData) Equals(other *VoteData) bool

Equals checks if vote data equals another vote data.

func (*VoteData) FirstSlotValid

func (v *VoteData) FirstSlotValid(p *params.ChainParams) uint64

FirstSlotValid return the first slot valid for current validator vote

func (*VoteData) Hash

func (v *VoteData) Hash() chainhash.Hash

Hash calculates the hash of the vote data.

func (*VoteData) HashTreeRoot

func (v *VoteData) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the VoteData object

func (*VoteData) HashTreeRootWith

func (v *VoteData) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the VoteData object with a hasher

func (*VoteData) IsDoubleVote

func (v *VoteData) IsDoubleVote(v2 *VoteData) bool

IsDoubleVote checks if the two votes form a double vote.

func (*VoteData) IsSurroundVote

func (v *VoteData) IsSurroundVote(v2 *VoteData) bool

IsSurroundVote checks if the two votes form a surrounded vote.

func (*VoteData) LastSlotValid

func (v *VoteData) LastSlotValid(p *params.ChainParams) uint64

LastSlotValid return the last slot valid for current validator vote

func (*VoteData) Marshal

func (v *VoteData) Marshal() ([]byte, error)

Marshal encodes the data.

func (*VoteData) MarshalSSZ

func (v *VoteData) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the VoteData object

func (*VoteData) MarshalSSZTo

func (v *VoteData) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the VoteData object to a target array

func (*VoteData) SizeSSZ

func (v *VoteData) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the VoteData object

func (*VoteData) String

func (v *VoteData) String() string

func (*VoteData) Unmarshal

func (v *VoteData) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*VoteData) UnmarshalSSZ

func (v *VoteData) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the VoteData object

type VoteSlashing

type VoteSlashing struct {
	Vote1 *MultiValidatorVote
	Vote2 *MultiValidatorVote
}

VoteSlashing is a slashing where validators vote in the span of their other votes.

func (*VoteSlashing) Hash

func (v *VoteSlashing) Hash() chainhash.Hash

Hash calculates the hash of the slashing.

func (*VoteSlashing) HashTreeRoot

func (v *VoteSlashing) HashTreeRoot() ([32]byte, error)

HashTreeRoot ssz hashes the VoteSlashing object

func (*VoteSlashing) HashTreeRootWith

func (v *VoteSlashing) HashTreeRootWith(hh *ssz.Hasher) (err error)

HashTreeRootWith ssz hashes the VoteSlashing object with a hasher

func (*VoteSlashing) Marshal

func (v *VoteSlashing) Marshal() ([]byte, error)

Marshal encodes the data.

func (*VoteSlashing) MarshalSSZ

func (v *VoteSlashing) MarshalSSZ() ([]byte, error)

MarshalSSZ ssz marshals the VoteSlashing object

func (*VoteSlashing) MarshalSSZTo

func (v *VoteSlashing) MarshalSSZTo(buf []byte) (dst []byte, err error)

MarshalSSZTo ssz marshals the VoteSlashing object to a target array

func (*VoteSlashing) SizeSSZ

func (v *VoteSlashing) SizeSSZ() (size int)

SizeSSZ returns the ssz encoded size in bytes for the VoteSlashing object

func (*VoteSlashing) Unmarshal

func (v *VoteSlashing) Unmarshal(b []byte) error

Unmarshal decodes the data.

func (*VoteSlashing) UnmarshalSSZ

func (v *VoteSlashing) UnmarshalSSZ(buf []byte) error

UnmarshalSSZ ssz unmarshals the VoteSlashing object

Jump to

Keyboard shortcuts

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