Documentation
¶
Index ¶
- Constants
- func DownloadRewardsFile(cfg *config.RocketPoolConfig, interval uint64, cid string, isDaemon bool) error
- func GetCidForRewardsFile(rewardsFile IRewardsFile, filename string) (cid.Cid, error)
- func GetClaimStatus(rp *rocketpool.RocketPool, nodeAddress common.Address) (unclaimed []uint64, claimed []uint64, err error)
- func GetELBlockHeaderForTime(targetTime time.Time, rp *rocketpool.RocketPool) (*types.Header, error)
- func GetRewardSnapshotEvent(rp *rocketpool.RocketPool, cfg *config.RocketPoolConfig, interval uint64, ...) (rewards.RewardsEvent, error)
- func GetStartSlotForInterval(previousIntervalEvent rewards.RewardsEvent, bc beacon.Client, ...) (uint64, error)
- type CommitteeInfo
- type IMinipoolPerformanceFile
- type INodeRewardsInfo
- type IRewardsFile
- type ISmoothingPoolMinipoolPerformance
- type IntervalDutiesInfo
- type IntervalInfo
- type MinipoolInfo
- type MinipoolPerformanceFile_v1
- func (f *MinipoolPerformanceFile_v1) Deserialize(bytes []byte) error
- func (f *MinipoolPerformanceFile_v1) GetMinipoolAddresses() []common.Address
- func (f *MinipoolPerformanceFile_v1) GetSmoothingPoolPerformance(minipoolAddress common.Address) (ISmoothingPoolMinipoolPerformance, bool)
- func (f *MinipoolPerformanceFile_v1) Serialize() ([]byte, error)
- func (f *MinipoolPerformanceFile_v1) SerializeHuman() ([]byte, error)
- type MinipoolPerformanceFile_v2
- func (f *MinipoolPerformanceFile_v2) Deserialize(bytes []byte) error
- func (f *MinipoolPerformanceFile_v2) GetMinipoolAddresses() []common.Address
- func (f *MinipoolPerformanceFile_v2) GetSmoothingPoolPerformance(minipoolAddress common.Address) (ISmoothingPoolMinipoolPerformance, bool)
- func (f *MinipoolPerformanceFile_v2) Serialize() ([]byte, error)
- func (f *MinipoolPerformanceFile_v2) SerializeHuman() ([]byte, error)
- type NetworkRewardsInfo
- type NodeRewardsInfo_v1
- func (i *NodeRewardsInfo_v1) GetCollateralRpl() *QuotedBigInt
- func (n *NodeRewardsInfo_v1) GetMerkleProof() ([]common.Hash, error)
- func (i *NodeRewardsInfo_v1) GetOracleDaoRpl() *QuotedBigInt
- func (i *NodeRewardsInfo_v1) GetRewardNetwork() uint64
- func (i *NodeRewardsInfo_v1) GetSmoothingPoolEth() *QuotedBigInt
- type NodeRewardsInfo_v2
- func (i *NodeRewardsInfo_v2) GetCollateralRpl() *QuotedBigInt
- func (n *NodeRewardsInfo_v2) GetMerkleProof() ([]common.Hash, error)
- func (i *NodeRewardsInfo_v2) GetOracleDaoRpl() *QuotedBigInt
- func (i *NodeRewardsInfo_v2) GetRewardNetwork() uint64
- func (i *NodeRewardsInfo_v2) GetSmoothingPoolEth() *QuotedBigInt
- type NodeSmoothingDetails
- type QuotedBigInt
- type RecordFileInfo
- type RewardsFileHeader
- type RewardsFile_v1
- func (f *RewardsFile_v1) Deserialize(bytes []byte) error
- func (f *RewardsFile_v1) GetHeader() *RewardsFileHeader
- func (f *RewardsFile_v1) GetMinipoolPerformanceFile() IMinipoolPerformanceFile
- func (f *RewardsFile_v1) GetNodeAddresses() []common.Address
- func (f *RewardsFile_v1) GetNodeRewardsInfo(address common.Address) (INodeRewardsInfo, bool)
- func (f *RewardsFile_v1) Serialize() ([]byte, error)
- func (f *RewardsFile_v1) SetMinipoolPerformanceFileCID(cid string)
- type RewardsFile_v2
- func (f *RewardsFile_v2) Deserialize(bytes []byte) error
- func (f *RewardsFile_v2) GetHeader() *RewardsFileHeader
- func (f *RewardsFile_v2) GetMinipoolPerformanceFile() IMinipoolPerformanceFile
- func (f *RewardsFile_v2) GetNodeAddresses() []common.Address
- func (f *RewardsFile_v2) GetNodeRewardsInfo(address common.Address) (INodeRewardsInfo, bool)
- func (f *RewardsFile_v2) Serialize() ([]byte, error)
- func (f *RewardsFile_v2) SetMinipoolPerformanceFileCID(cid string)
- type RollingRecord
- type RollingRecordManager
- func (r *RollingRecordManager) GenerateRecordForState(state *state.NetworkState) (*RollingRecord, error)
- func (r *RollingRecordManager) LoadBestRecordFromDisk(startSlot uint64, targetSlot uint64, rewardsInterval uint64) (*RollingRecord, error)
- func (r *RollingRecordManager) PrepareRecordForReport(state *state.NetworkState) error
- func (r *RollingRecordManager) SaveRecordToFile(record *RollingRecord) error
- func (r *RollingRecordManager) UpdateRecordToState(state *state.NetworkState, latestFinalizedSlot uint64) error
- type SlotInfo
- type SmoothingPoolMinipoolPerformance_v1
- func (p *SmoothingPoolMinipoolPerformance_v1) GetEthEarned() *big.Int
- func (p *SmoothingPoolMinipoolPerformance_v1) GetMissedAttestationCount() uint64
- func (p *SmoothingPoolMinipoolPerformance_v1) GetMissingAttestationSlots() []uint64
- func (p *SmoothingPoolMinipoolPerformance_v1) GetPubkey() (types.ValidatorPubkey, error)
- func (p *SmoothingPoolMinipoolPerformance_v1) GetSuccessfulAttestationCount() uint64
- type SmoothingPoolMinipoolPerformance_v2
- func (p *SmoothingPoolMinipoolPerformance_v2) GetEthEarned() *big.Int
- func (p *SmoothingPoolMinipoolPerformance_v2) GetMissedAttestationCount() uint64
- func (p *SmoothingPoolMinipoolPerformance_v2) GetMissingAttestationSlots() []uint64
- func (p *SmoothingPoolMinipoolPerformance_v2) GetPubkey() (types.ValidatorPubkey, error)
- func (p *SmoothingPoolMinipoolPerformance_v2) GetSuccessfulAttestationCount() uint64
- type TotalRewards
- type TreeGenerator
- func (t *TreeGenerator) ApproximateStakerShareOfSmoothingPool() (*big.Int, error)
- func (t *TreeGenerator) ApproximateStakerShareOfSmoothingPoolWithRuleset(ruleset uint64) (*big.Int, error)
- func (t *TreeGenerator) GenerateTree() (IRewardsFile, error)
- func (t *TreeGenerator) GenerateTreeWithRuleset(ruleset uint64) (IRewardsFile, error)
- func (t *TreeGenerator) GetApproximatorRulesetVersion() uint64
- func (t *TreeGenerator) GetGeneratorRulesetVersion() uint64
- type VersionHeader
Constants ¶
const ( SmoothingPoolDetailsBatchSize uint64 = 8 TestingInterval uint64 = 1000000000 // A large number that won't ever actually be hit // Mainnet intervals MainnetV2Interval uint64 = 4 MainnetV3Interval uint64 = 5 MainnetV4Interval uint64 = 6 MainnetV5Interval uint64 = 8 MainnetV6Interval uint64 = 12 MainnetV7Interval uint64 = 15 // Prater intervals PraterV2Interval uint64 = 37 PraterV3Interval uint64 = 49 PraterV4Interval uint64 = 60 PraterV5Interval uint64 = 76 PraterV6Interval uint64 = 118 PraterV7Interval uint64 = 144 // Holesky intervals HoleskyV2Interval uint64 = 0 HoleskyV3Interval uint64 = 0 HoleskyV4Interval uint64 = 0 HoleskyV5Interval uint64 = 0 HoleskyV6Interval uint64 = 0 HoleskyV7Interval uint64 = 0 )
Settings
const (
FarEpoch uint64 = 18446744073709551615
)
Variables ¶
This section is empty.
Functions ¶
func DownloadRewardsFile ¶
func DownloadRewardsFile(cfg *config.RocketPoolConfig, interval uint64, cid string, isDaemon bool) error
Downloads a single rewards file
func GetCidForRewardsFile ¶ added in v1.10.0
func GetCidForRewardsFile(rewardsFile IRewardsFile, filename string) (cid.Cid, error)
Get the IPFS CID for a blob of data
func GetClaimStatus ¶
func GetClaimStatus(rp *rocketpool.RocketPool, nodeAddress common.Address) (unclaimed []uint64, claimed []uint64, err error)
Gets the intervals the node can claim and the intervals that have already been claimed
func GetELBlockHeaderForTime ¶
func GetELBlockHeaderForTime(targetTime time.Time, rp *rocketpool.RocketPool) (*types.Header, error)
Get the number of the latest EL block that was created before the given timestamp
func GetRewardSnapshotEvent ¶ added in v1.6.2
func GetRewardSnapshotEvent(rp *rocketpool.RocketPool, cfg *config.RocketPoolConfig, interval uint64, opts *bind.CallOpts) (rewards.RewardsEvent, error)
Get the event for a rewards snapshot
func GetStartSlotForInterval ¶ added in v1.10.1
func GetStartSlotForInterval(previousIntervalEvent rewards.RewardsEvent, bc beacon.Client, beaconConfig beacon.Eth2Config) (uint64, error)
Gets the start slot for the given interval
Types ¶
type CommitteeInfo ¶
type CommitteeInfo struct {
Index uint64
Positions map[int]*MinipoolInfo
}
type IMinipoolPerformanceFile ¶ added in v1.11.0
type IMinipoolPerformanceFile interface {
// Serialize a minipool performance file into bytes
Serialize() ([]byte, error)
// Serialize a minipool performance file into bytes designed for human readability
SerializeHuman() ([]byte, error)
// Deserialize a rewards file from bytes
Deserialize([]byte) error
// Get all of the minipool addresses with rewards in this file
// NOTE: the order of minipool addresses is not guaranteed to be stable, so don't rely on it
GetMinipoolAddresses() []common.Address
// Get a minipool's smoothing pool performance if it was present
GetSmoothingPoolPerformance(minipoolAddress common.Address) (ISmoothingPoolMinipoolPerformance, bool)
}
Interface for version-agnostic minipool performance
func DeserializeMinipoolPerformanceFile ¶ added in v1.11.0
func DeserializeMinipoolPerformanceFile(bytes []byte) (IMinipoolPerformanceFile, error)
Deserializes a byte array into a rewards file interface
type INodeRewardsInfo ¶ added in v1.11.0
type INodeRewardsInfo interface {
GetRewardNetwork() uint64
GetCollateralRpl() *QuotedBigInt
GetOracleDaoRpl() *QuotedBigInt
GetSmoothingPoolEth() *QuotedBigInt
GetMerkleProof() ([]common.Hash, error)
}
Interface for version-agnostic node operator rewards
type IRewardsFile ¶ added in v1.11.0
type IRewardsFile interface {
// Serialize a rewards file into bytes
Serialize() ([]byte, error)
// Deserialize a rewards file from bytes
Deserialize([]byte) error
// Get the rewards file's header
GetHeader() *RewardsFileHeader
// Get all of the node addresses with rewards in this file
// NOTE: the order of node addresses is not guaranteed to be stable, so don't rely on it
GetNodeAddresses() []common.Address
// Get info about a node's rewards
GetNodeRewardsInfo(address common.Address) (INodeRewardsInfo, bool)
// Gets the minipool performance file corresponding to this rewards file
GetMinipoolPerformanceFile() IMinipoolPerformanceFile
// Sets the CID of the minipool performance file corresponding to this rewards file
SetMinipoolPerformanceFileCID(cid string)
}
Interface for version-agnostic rewards files
func DeserializeRewardsFile ¶ added in v1.11.0
func DeserializeRewardsFile(bytes []byte) (IRewardsFile, error)
Deserializes a byte array into a rewards file interface
type ISmoothingPoolMinipoolPerformance ¶ added in v1.11.0
type ISmoothingPoolMinipoolPerformance interface {
GetPubkey() (types.ValidatorPubkey, error)
GetSuccessfulAttestationCount() uint64
GetMissedAttestationCount() uint64
GetMissingAttestationSlots() []uint64
GetEthEarned() *big.Int
}
Minipool stats
type IntervalDutiesInfo ¶
type IntervalInfo ¶
type IntervalInfo struct {
Index uint64 `json:"index"`
TreeFilePath string `json:"treeFilePath"`
TreeFileExists bool `json:"treeFileExists"`
MerkleRootValid bool `json:"merkleRootValid"`
CID string `json:"cid"`
StartTime time.Time `json:"startTime"`
EndTime time.Time `json:"endTime"`
NodeExists bool `json:"nodeExists"`
CollateralRplAmount *QuotedBigInt `json:"collateralRplAmount"`
ODaoRplAmount *QuotedBigInt `json:"oDaoRplAmount"`
SmoothingPoolEthAmount *QuotedBigInt `json:"smoothingPoolEthAmount"`
MerkleProof []common.Hash `json:"merkleProof"`
}
Information about an interval
func GetIntervalInfo ¶
func GetIntervalInfo(rp *rocketpool.RocketPool, cfg *config.RocketPoolConfig, nodeAddress common.Address, interval uint64, opts *bind.CallOpts) (info IntervalInfo, err error)
Gets the information for an interval including the file status, the validity, and the node's rewards
type MinipoolInfo ¶
type MinipoolInfo struct {
Address common.Address `json:"address"`
ValidatorPubkey types.ValidatorPubkey `json:"pubkey"`
ValidatorIndex string `json:"index"`
NodeAddress common.Address `json:"nodeAddress"`
NodeIndex uint64 `json:"-"`
Fee *big.Int `json:"-"`
MissedAttestations uint64 `json:"-"`
GoodAttestations uint64 `json:"-"`
MissingAttestationSlots map[uint64]bool `json:"missingAttestationSlots"`
WasActive bool `json:"-"`
StartSlot uint64 `json:"-"`
EndSlot uint64 `json:"-"`
AttestationScore *QuotedBigInt `json:"attestationScore"`
CompletedAttestations map[uint64]bool `json:"-"`
AttestationCount int `json:"attestationCount"`
}
type MinipoolPerformanceFile_v1 ¶ added in v1.11.0
type MinipoolPerformanceFile_v1 struct {
Index uint64 `json:"index"`
Network string `json:"network"`
StartTime time.Time `json:"startTime,omitempty"`
EndTime time.Time `json:"endTime,omitempty"`
ConsensusStartBlock uint64 `json:"consensusStartBlock,omitempty"`
ConsensusEndBlock uint64 `json:"consensusEndBlock,omitempty"`
ExecutionStartBlock uint64 `json:"executionStartBlock,omitempty"`
ExecutionEndBlock uint64 `json:"executionEndBlock,omitempty"`
MinipoolPerformance map[common.Address]*SmoothingPoolMinipoolPerformance_v1 `json:"minipoolPerformance"`
}
Holds information
func (*MinipoolPerformanceFile_v1) Deserialize ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v1) Deserialize(bytes []byte) error
Deserialize a minipool performance file from bytes
func (*MinipoolPerformanceFile_v1) GetMinipoolAddresses ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v1) GetMinipoolAddresses() []common.Address
Get all of the minipool addresses with rewards in this file NOTE: the order of minipool addresses is not guaranteed to be stable, so don't rely on it
func (*MinipoolPerformanceFile_v1) GetSmoothingPoolPerformance ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v1) GetSmoothingPoolPerformance(minipoolAddress common.Address) (ISmoothingPoolMinipoolPerformance, bool)
Get a minipool's smoothing pool performance if it was present
func (*MinipoolPerformanceFile_v1) Serialize ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v1) Serialize() ([]byte, error)
Serialize a minipool performance file into bytes
func (*MinipoolPerformanceFile_v1) SerializeHuman ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v1) SerializeHuman() ([]byte, error)
Serialize a minipool performance file into bytes designed for human readability
type MinipoolPerformanceFile_v2 ¶ added in v1.11.0
type MinipoolPerformanceFile_v2 struct {
RewardsFileVersion uint64 `json:"rewardsFileVersion"`
RulesetVersion uint64 `json:"rulesetVersion"`
Index uint64 `json:"index"`
Network string `json:"network"`
StartTime time.Time `json:"startTime,omitempty"`
EndTime time.Time `json:"endTime,omitempty"`
ConsensusStartBlock uint64 `json:"consensusStartBlock,omitempty"`
ConsensusEndBlock uint64 `json:"consensusEndBlock,omitempty"`
ExecutionStartBlock uint64 `json:"executionStartBlock,omitempty"`
ExecutionEndBlock uint64 `json:"executionEndBlock,omitempty"`
MinipoolPerformance map[common.Address]*SmoothingPoolMinipoolPerformance_v2 `json:"minipoolPerformance"`
}
Holds information
func (*MinipoolPerformanceFile_v2) Deserialize ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v2) Deserialize(bytes []byte) error
Deserialize a minipool performance file from bytes
func (*MinipoolPerformanceFile_v2) GetMinipoolAddresses ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v2) GetMinipoolAddresses() []common.Address
Get all of the minipool addresses with rewards in this file NOTE: the order of minipool addresses is not guaranteed to be stable, so don't rely on it
func (*MinipoolPerformanceFile_v2) GetSmoothingPoolPerformance ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v2) GetSmoothingPoolPerformance(minipoolAddress common.Address) (ISmoothingPoolMinipoolPerformance, bool)
Get a minipool's smoothing pool performance if it was present
func (*MinipoolPerformanceFile_v2) Serialize ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v2) Serialize() ([]byte, error)
Serialize a minipool performance file into bytes
func (*MinipoolPerformanceFile_v2) SerializeHuman ¶ added in v1.11.0
func (f *MinipoolPerformanceFile_v2) SerializeHuman() ([]byte, error)
Serialize a minipool performance file into bytes designed for human readability
type NetworkRewardsInfo ¶
type NetworkRewardsInfo struct {
CollateralRpl *QuotedBigInt `json:"collateralRpl"`
OracleDaoRpl *QuotedBigInt `json:"oracleDaoRpl"`
SmoothingPoolEth *QuotedBigInt `json:"smoothingPoolEth"`
}
Rewards per network
type NodeRewardsInfo_v1 ¶ added in v1.11.0
type NodeRewardsInfo_v1 struct {
RewardNetwork uint64 `json:"rewardNetwork"`
CollateralRpl *QuotedBigInt `json:"collateralRpl"`
OracleDaoRpl *QuotedBigInt `json:"oracleDaoRpl"`
SmoothingPoolEth *QuotedBigInt `json:"smoothingPoolEth"`
SmoothingPoolEligibilityRate float64 `json:"smoothingPoolEligibilityRate"`
MerkleData []byte `json:"-"`
MerkleProof []string `json:"merkleProof"`
}
Node operator rewards
func (*NodeRewardsInfo_v1) GetCollateralRpl ¶ added in v1.11.0
func (i *NodeRewardsInfo_v1) GetCollateralRpl() *QuotedBigInt
func (*NodeRewardsInfo_v1) GetMerkleProof ¶ added in v1.11.0
func (n *NodeRewardsInfo_v1) GetMerkleProof() ([]common.Hash, error)
func (*NodeRewardsInfo_v1) GetOracleDaoRpl ¶ added in v1.11.0
func (i *NodeRewardsInfo_v1) GetOracleDaoRpl() *QuotedBigInt
func (*NodeRewardsInfo_v1) GetRewardNetwork ¶ added in v1.11.0
func (i *NodeRewardsInfo_v1) GetRewardNetwork() uint64
func (*NodeRewardsInfo_v1) GetSmoothingPoolEth ¶ added in v1.11.0
func (i *NodeRewardsInfo_v1) GetSmoothingPoolEth() *QuotedBigInt
type NodeRewardsInfo_v2 ¶ added in v1.11.0
type NodeRewardsInfo_v2 struct {
RewardNetwork uint64 `json:"rewardNetwork"`
CollateralRpl *QuotedBigInt `json:"collateralRpl"`
OracleDaoRpl *QuotedBigInt `json:"oracleDaoRpl"`
SmoothingPoolEth *QuotedBigInt `json:"smoothingPoolEth"`
MerkleData []byte `json:"-"`
MerkleProof []string `json:"merkleProof"`
}
Node operator rewards
func (*NodeRewardsInfo_v2) GetCollateralRpl ¶ added in v1.11.0
func (i *NodeRewardsInfo_v2) GetCollateralRpl() *QuotedBigInt
func (*NodeRewardsInfo_v2) GetMerkleProof ¶ added in v1.11.0
func (n *NodeRewardsInfo_v2) GetMerkleProof() ([]common.Hash, error)
func (*NodeRewardsInfo_v2) GetOracleDaoRpl ¶ added in v1.11.0
func (i *NodeRewardsInfo_v2) GetOracleDaoRpl() *QuotedBigInt
func (*NodeRewardsInfo_v2) GetRewardNetwork ¶ added in v1.11.0
func (i *NodeRewardsInfo_v2) GetRewardNetwork() uint64
func (*NodeRewardsInfo_v2) GetSmoothingPoolEth ¶ added in v1.11.0
func (i *NodeRewardsInfo_v2) GetSmoothingPoolEth() *QuotedBigInt
type NodeSmoothingDetails ¶
type NodeSmoothingDetails struct {
Address common.Address
IsEligible bool
IsOptedIn bool
StatusChangeTime time.Time
Minipools []*MinipoolInfo
EligibleSeconds *big.Int
StartSlot uint64
EndSlot uint64
SmoothingPoolEth *big.Int
RewardsNetwork uint64
// v2 Fields
OptInTime time.Time
OptOutTime time.Time
}
Details about a node for the Smoothing Pool
type QuotedBigInt ¶
func NewQuotedBigInt ¶
func NewQuotedBigInt(x int64) *QuotedBigInt
func (*QuotedBigInt) MarshalJSON ¶
func (b *QuotedBigInt) MarshalJSON() ([]byte, error)
func (*QuotedBigInt) UnmarshalJSON ¶
func (b *QuotedBigInt) UnmarshalJSON(p []byte) error
type RecordFileInfo ¶ added in v1.10.0
type RecordFileInfo struct {
StartSlot uint64 `json:"startSlot"`
EndSlot uint64 `json:"endSlot"`
Filename string `json:"filename"`
Version int `json:"version"`
Checksum [48]byte `json:"checksum"`
}
Information about a saved rolling record
type RewardsFileHeader ¶ added in v1.11.0
type RewardsFileHeader struct {
// Serialized fields
RewardsFileVersion uint64 `json:"rewardsFileVersion"`
RulesetVersion uint64 `json:"rulesetVersion,omitempty"`
Index uint64 `json:"index"`
Network string `json:"network"`
StartTime time.Time `json:"startTime,omitempty"`
EndTime time.Time `json:"endTime"`
ConsensusStartBlock uint64 `json:"consensusStartBlock,omitempty"`
ConsensusEndBlock uint64 `json:"consensusEndBlock"`
ExecutionStartBlock uint64 `json:"executionStartBlock,omitempty"`
ExecutionEndBlock uint64 `json:"executionEndBlock"`
IntervalsPassed uint64 `json:"intervalsPassed"`
MerkleRoot string `json:"merkleRoot,omitempty"`
MinipoolPerformanceFileCID string `json:"minipoolPerformanceFileCid,omitempty"`
TotalRewards *TotalRewards `json:"totalRewards"`
NetworkRewards map[uint64]*NetworkRewardsInfo `json:"networkRewards"`
// Non-serialized fields
MerkleTree *merkletree.MerkleTree `json:"-"`
InvalidNetworkNodes map[common.Address]uint64 `json:"-"`
}
General version-agnostic information about a rewards file
type RewardsFile_v1 ¶ added in v1.11.0
type RewardsFile_v1 struct {
*RewardsFileHeader
NodeRewards map[common.Address]*NodeRewardsInfo_v1 `json:"nodeRewards"`
MinipoolPerformanceFile MinipoolPerformanceFile_v1 `json:"-"`
}
JSON struct for a complete rewards file
func (*RewardsFile_v1) Deserialize ¶ added in v1.11.0
func (f *RewardsFile_v1) Deserialize(bytes []byte) error
Deserialize a rewards file from bytes
func (*RewardsFile_v1) GetHeader ¶ added in v1.11.0
func (f *RewardsFile_v1) GetHeader() *RewardsFileHeader
Get the rewards file's header
func (*RewardsFile_v1) GetMinipoolPerformanceFile ¶ added in v1.11.0
func (f *RewardsFile_v1) GetMinipoolPerformanceFile() IMinipoolPerformanceFile
Gets the minipool performance file corresponding to this rewards file
func (*RewardsFile_v1) GetNodeAddresses ¶ added in v1.11.0
func (f *RewardsFile_v1) GetNodeAddresses() []common.Address
Get all of the node addresses with rewards in this file NOTE: the order of node addresses is not guaranteed to be stable, so don't rely on it
func (*RewardsFile_v1) GetNodeRewardsInfo ¶ added in v1.11.0
func (f *RewardsFile_v1) GetNodeRewardsInfo(address common.Address) (INodeRewardsInfo, bool)
Get info about a node's rewards
func (*RewardsFile_v1) Serialize ¶ added in v1.11.0
func (f *RewardsFile_v1) Serialize() ([]byte, error)
Serialize a rewards file into bytes
func (*RewardsFile_v1) SetMinipoolPerformanceFileCID ¶ added in v1.11.0
func (f *RewardsFile_v1) SetMinipoolPerformanceFileCID(cid string)
Sets the CID of the minipool performance file corresponding to this rewards file
type RewardsFile_v2 ¶ added in v1.11.0
type RewardsFile_v2 struct {
*RewardsFileHeader
NodeRewards map[common.Address]*NodeRewardsInfo_v2 `json:"nodeRewards"`
MinipoolPerformanceFile MinipoolPerformanceFile_v2 `json:"-"`
}
JSON struct for a complete rewards file
func (*RewardsFile_v2) Deserialize ¶ added in v1.11.0
func (f *RewardsFile_v2) Deserialize(bytes []byte) error
Deserialize a rewards file from bytes
func (*RewardsFile_v2) GetHeader ¶ added in v1.11.0
func (f *RewardsFile_v2) GetHeader() *RewardsFileHeader
Get the rewards file's header
func (*RewardsFile_v2) GetMinipoolPerformanceFile ¶ added in v1.11.0
func (f *RewardsFile_v2) GetMinipoolPerformanceFile() IMinipoolPerformanceFile
Gets the minipool performance file corresponding to this rewards file
func (*RewardsFile_v2) GetNodeAddresses ¶ added in v1.11.0
func (f *RewardsFile_v2) GetNodeAddresses() []common.Address
Get all of the node addresses with rewards in this file NOTE: the order of node addresses is not guaranteed to be stable, so don't rely on it
func (*RewardsFile_v2) GetNodeRewardsInfo ¶ added in v1.11.0
func (f *RewardsFile_v2) GetNodeRewardsInfo(address common.Address) (INodeRewardsInfo, bool)
Get info about a node's rewards
func (*RewardsFile_v2) Serialize ¶ added in v1.11.0
func (f *RewardsFile_v2) Serialize() ([]byte, error)
Serialize a rewards file into bytes
func (*RewardsFile_v2) SetMinipoolPerformanceFileCID ¶ added in v1.11.0
func (f *RewardsFile_v2) SetMinipoolPerformanceFileCID(cid string)
Sets the CID of the minipool performance file corresponding to this rewards file
type RollingRecord ¶ added in v1.10.0
type RollingRecord struct {
StartSlot uint64 `json:"startSlot"`
LastDutiesSlot uint64 `json:"lastDutiesSlot"`
ValidatorIndexMap map[string]*MinipoolInfo `json:"validatorIndexMap"`
RewardsInterval uint64 `json:"rewardsInterval"`
SmartnodeVersion string `json:"smartnodeVersion,omitempty"`
// contains filtered or unexported fields
}
func DeserializeRollingRecord ¶ added in v1.10.0
func DeserializeRollingRecord(log *log.ColorLogger, logPrefix string, bc beacon.Client, beaconConfig *beacon.Eth2Config, bytes []byte) (*RollingRecord, error)
Load an existing record from serialized JSON data
func NewRollingRecord ¶ added in v1.10.0
func NewRollingRecord(log *log.ColorLogger, logPrefix string, bc beacon.Client, startSlot uint64, beaconConfig *beacon.Eth2Config, rewardsInterval uint64) *RollingRecord
Create a new rolling record wrapper
func (*RollingRecord) GetScores ¶ added in v1.10.0
func (r *RollingRecord) GetScores(cheatingNodes map[common.Address]bool) ([]*MinipoolInfo, *big.Int, uint64)
Get the minipool scores, along with the cumulative total score and count - ignores minipools that belonged to cheaters
func (*RollingRecord) Serialize ¶ added in v1.10.0
func (r *RollingRecord) Serialize() ([]byte, error)
Serialize the current record into a byte array
func (*RollingRecord) UpdateToSlot ¶ added in v1.10.0
func (r *RollingRecord) UpdateToSlot(slot uint64, state *state.NetworkState) error
Update the record to the requested slot, using the provided state as a reference. Requires the epoch *after* the requested slot to be finalized so it can accurately count attestations.
type RollingRecordManager ¶ added in v1.10.0
type RollingRecordManager struct {
Record *RollingRecord
LatestFinalizedEpoch uint64
ExpectedBalancesBlock uint64
ExpectedRewardsIntervalBlock uint64
// contains filtered or unexported fields
}
Manager for RollingRecords
func NewRollingRecordManager ¶ added in v1.10.0
func NewRollingRecordManager(log *log.ColorLogger, errLog *log.ColorLogger, cfg *config.RocketPoolConfig, rp *rocketpool.RocketPool, bc beacon.Client, mgr *state.NetworkStateManager, startSlot uint64, beaconCfg beacon.Eth2Config, rewardsInterval uint64) (*RollingRecordManager, error)
Creates a new manager for rolling records.
func (*RollingRecordManager) GenerateRecordForState ¶ added in v1.10.0
func (r *RollingRecordManager) GenerateRecordForState(state *state.NetworkState) (*RollingRecord, error)
Generate a new record for the provided slot using the latest viable saved record
func (*RollingRecordManager) LoadBestRecordFromDisk ¶ added in v1.10.0
func (r *RollingRecordManager) LoadBestRecordFromDisk(startSlot uint64, targetSlot uint64, rewardsInterval uint64) (*RollingRecord, error)
Load the most recent appropriate rolling record from disk, using the checksum table as an index
func (*RollingRecordManager) PrepareRecordForReport ¶ added in v1.10.0
func (r *RollingRecordManager) PrepareRecordForReport(state *state.NetworkState) error
Prepares the record for a rewards interval report
func (*RollingRecordManager) SaveRecordToFile ¶ added in v1.10.0
func (r *RollingRecordManager) SaveRecordToFile(record *RollingRecord) error
Save the rolling record to a file and update the record info catalog
func (*RollingRecordManager) UpdateRecordToState ¶ added in v1.10.0
func (r *RollingRecordManager) UpdateRecordToState(state *state.NetworkState, latestFinalizedSlot uint64) error
Updates the manager's record to the provided state, retrying upon errors until success
type SlotInfo ¶
type SlotInfo struct {
Index uint64
Committees map[uint64]*CommitteeInfo
}
type SmoothingPoolMinipoolPerformance_v1 ¶ added in v1.11.0
type SmoothingPoolMinipoolPerformance_v1 struct {
Pubkey string `json:"pubkey"`
StartSlot uint64 `json:"startSlot,omitempty"`
EndSlot uint64 `json:"endSlot,omitempty"`
ActiveFraction float64 `json:"activeFraction,omitempty"`
SuccessfulAttestations uint64 `json:"successfulAttestations"`
MissedAttestations uint64 `json:"missedAttestations"`
ParticipationRate float64 `json:"participationRate"`
MissingAttestationSlots []uint64 `json:"missingAttestationSlots"`
EthEarned float64 `json:"ethEarned"`
}
Minipool stats
func (*SmoothingPoolMinipoolPerformance_v1) GetEthEarned ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v1) GetEthEarned() *big.Int
func (*SmoothingPoolMinipoolPerformance_v1) GetMissedAttestationCount ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v1) GetMissedAttestationCount() uint64
func (*SmoothingPoolMinipoolPerformance_v1) GetMissingAttestationSlots ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v1) GetMissingAttestationSlots() []uint64
func (*SmoothingPoolMinipoolPerformance_v1) GetPubkey ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v1) GetPubkey() (types.ValidatorPubkey, error)
func (*SmoothingPoolMinipoolPerformance_v1) GetSuccessfulAttestationCount ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v1) GetSuccessfulAttestationCount() uint64
type SmoothingPoolMinipoolPerformance_v2 ¶ added in v1.11.0
type SmoothingPoolMinipoolPerformance_v2 struct {
Pubkey string `json:"pubkey"`
SuccessfulAttestations uint64 `json:"successfulAttestations"`
MissedAttestations uint64 `json:"missedAttestations"`
AttestationScore *QuotedBigInt `json:"attestationScore"`
MissingAttestationSlots []uint64 `json:"missingAttestationSlots"`
EthEarned *QuotedBigInt `json:"ethEarned"`
}
Minipool stats
func (*SmoothingPoolMinipoolPerformance_v2) GetEthEarned ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v2) GetEthEarned() *big.Int
func (*SmoothingPoolMinipoolPerformance_v2) GetMissedAttestationCount ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v2) GetMissedAttestationCount() uint64
func (*SmoothingPoolMinipoolPerformance_v2) GetMissingAttestationSlots ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v2) GetMissingAttestationSlots() []uint64
func (*SmoothingPoolMinipoolPerformance_v2) GetPubkey ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v2) GetPubkey() (types.ValidatorPubkey, error)
func (*SmoothingPoolMinipoolPerformance_v2) GetSuccessfulAttestationCount ¶ added in v1.11.0
func (p *SmoothingPoolMinipoolPerformance_v2) GetSuccessfulAttestationCount() uint64
type TotalRewards ¶
type TotalRewards struct {
ProtocolDaoRpl *QuotedBigInt `json:"protocolDaoRpl"`
TotalCollateralRpl *QuotedBigInt `json:"totalCollateralRpl"`
TotalOracleDaoRpl *QuotedBigInt `json:"totalOracleDaoRpl"`
TotalSmoothingPoolEth *QuotedBigInt `json:"totalSmoothingPoolEth"`
PoolStakerSmoothingPoolEth *QuotedBigInt `json:"poolStakerSmoothingPoolEth"`
NodeOperatorSmoothingPoolEth *QuotedBigInt `json:"nodeOperatorSmoothingPoolEth"`
}
Total cumulative rewards for an interval
type TreeGenerator ¶ added in v1.7.1
type TreeGenerator struct {
// contains filtered or unexported fields
}
func NewTreeGenerator ¶ added in v1.7.1
func NewTreeGenerator(logger *log.ColorLogger, logPrefix string, rp *rocketpool.RocketPool, cfg *config.RocketPoolConfig, bc beacon.Client, index uint64, startTime time.Time, endTime time.Time, consensusBlock uint64, elSnapshotHeader *types.Header, intervalsPassed uint64, state *state.NetworkState, rollingRecord *RollingRecord) (*TreeGenerator, error)
func (*TreeGenerator) ApproximateStakerShareOfSmoothingPool ¶ added in v1.7.1
func (t *TreeGenerator) ApproximateStakerShareOfSmoothingPool() (*big.Int, error)
func (*TreeGenerator) ApproximateStakerShareOfSmoothingPoolWithRuleset ¶ added in v1.7.2
func (t *TreeGenerator) ApproximateStakerShareOfSmoothingPoolWithRuleset(ruleset uint64) (*big.Int, error)
func (*TreeGenerator) GenerateTree ¶ added in v1.7.1
func (t *TreeGenerator) GenerateTree() (IRewardsFile, error)
func (*TreeGenerator) GenerateTreeWithRuleset ¶ added in v1.7.2
func (t *TreeGenerator) GenerateTreeWithRuleset(ruleset uint64) (IRewardsFile, error)
func (*TreeGenerator) GetApproximatorRulesetVersion ¶ added in v1.7.2
func (t *TreeGenerator) GetApproximatorRulesetVersion() uint64
func (*TreeGenerator) GetGeneratorRulesetVersion ¶ added in v1.7.2
func (t *TreeGenerator) GetGeneratorRulesetVersion() uint64
type VersionHeader ¶ added in v1.11.0
type VersionHeader struct {
RewardsFileVersion uint64 `json:"rewardsFileVersion,omitempty"`
}
Small struct to test version information for rewards files during deserialization
Source Files
¶
- generator-impl-v1.go
- generator-impl-v2.go
- generator-impl-v3.go
- generator-impl-v4.go
- generator-impl-v5.go
- generator-impl-v6-rolling.go
- generator-impl-v6.go
- generator-impl-v7-rollng.go
- generator-impl-v7.go
- generator.go
- prater-events.go
- record-file-info.go
- rewards-file-v1.go
- rewards-file-v2.go
- rewards-interval-info.go
- rolling-manager.go
- rolling-record.go
- types.go
- utils.go