rewards

package
v0.1.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RewardTypeFee     string = "Fee"
	RewardTypeRent    string = "Rent"
	RewardTypeVoting  string = "Voting"
	RewardTypeStaking string = "Staking"
)

Variables

This section is empty.

Functions

func CalculateNumRewardPartitions

func CalculateNumRewardPartitions(numStakingRewards uint64) uint64

func CalculatePreviousEpochInflationRewards

func CalculatePreviousEpochInflationRewards(epochSchedule *sealevel.SysvarEpochSchedule, inflation *Inflation, prevEpochCapitalization, epoch, prevEpoch uint64, slotsPerYear float64, f *features.Features) uint64

func CalculateRewardPartitionForPubkey

func CalculateRewardPartitionForPubkey(pubkey solana.PublicKey, blockhash [32]byte, numPartitions uint64) uint64

func CalculateStakePoints

func CalculateStakePoints(
	acctsDb *accountsdb.AccountsDb,
	slotCtx *sealevel.SlotCtx,
	slot uint64,
	stakeHistory *sealevel.SysvarStakeHistory,
	newWarmupCooldownRateEpoch *uint64,
	stakeCache map[solana.PublicKey]*sealevel.Delegation,
	voteCache map[solana.PublicKey]*sealevel.VoteStateVersions,
) (map[solana.PublicKey]*CalculatedStakePoints, wide.Uint128)

func DistributeStakingRewardsForPartition

func DistributeStakingRewardsForPartition(acctsDb *accountsdb.AccountsDb, partition *Partition, stakingRewards map[solana.PublicKey]*CalculatedStakeRewards, slot uint64) ([]*accounts.Account, []*accounts.Account, uint64)

func DistributeVotingRewards

func DistributeVotingRewards(acctsDb *accountsdb.AccountsDb, validatorRewards map[solana.PublicKey]*atomic.Uint64, slot uint64) ([]*accounts.Account, []*accounts.Account, uint64)

func GetInflationNumSlots

func GetInflationNumSlots(epochSchedule *sealevel.SysvarEpochSchedule, epoch uint64, f *features.Features) uint64

func GetInflationStartSlot

func GetInflationStartSlot(f *features.Features) uint64

func IsWithinRewardsPeriod

func IsWithinRewardsPeriod(epoch uint64, slot uint64, epochSchedule *sealevel.SysvarEpochSchedule) bool

func SlotInYearForInflation

func SlotInYearForInflation(epochSchedule *sealevel.SysvarEpochSchedule, slotsPerYear float64, epoch uint64, f *features.Features) float64

Types

type CalculatedStakePoints

type CalculatedStakePoints struct {
	Points                              wide.Uint128
	NewCreditsObserved                  uint64
	ForceCreditsUpdateWithSkippedReward bool
}

type CalculatedStakePointsAccumulator

type CalculatedStakePointsAccumulator struct {
	// contains filtered or unexported fields
}

func NewCalculatedStakePointsAccumulator

func NewCalculatedStakePointsAccumulator(pubkeys []solana.PublicKey) *CalculatedStakePointsAccumulator

func (*CalculatedStakePointsAccumulator) Add

func (CalculatedStakePointsAccumulator) CalculatedStakePoints

func (accum CalculatedStakePointsAccumulator) CalculatedStakePoints() map[solana.PublicKey]*CalculatedStakePoints

func (CalculatedStakePointsAccumulator) TotalPoints

func (accum CalculatedStakePointsAccumulator) TotalPoints() wide.Uint128

type CalculatedStakeRewards

type CalculatedStakeRewards struct {
	StakerRewards      uint64
	VoterRewards       uint64
	VoterPubkey        solana.PublicKey
	NewCreditsObserved uint64
}

func CalculateStakeRewardsForAcct

func CalculateStakeRewardsForAcct(pubkey solana.PublicKey, stakePointsResult *CalculatedStakePoints, delegation *sealevel.Delegation, voteState *sealevel.VoteStateVersions, rewardedEpoch uint64, pointValue PointValue, newRateActivationEpoch *uint64) *CalculatedStakeRewards

type CommissionSplit

type CommissionSplit struct {
	VoterPortion  uint64
	StakerPortion uint64
	IsSplit       bool
}

type Inflation

type Inflation struct {
	Initial        float64
	Terminal       float64
	Taper          float64
	FoundationVal  float64
	FoundationTerm float64
	Unused         float64
}

func (*Inflation) Foundation

func (inflation *Inflation) Foundation(year float64) float64

func (*Inflation) Total

func (inflation *Inflation) Total(year float64) float64

func (*Inflation) UnmarshalWithDecoder

func (inflation *Inflation) UnmarshalWithDecoder(decoder *bin.Decoder) error

func (*Inflation) Validator

func (inflation *Inflation) Validator(year float64) float64

type Partition

type Partition struct {
	// contains filtered or unexported fields
}

func (*Partition) NumPubkeys

func (partition *Partition) NumPubkeys() uint64

func (*Partition) Pubkeys

func (partition *Partition) Pubkeys() []solana.PublicKey

type PartitionedRewardDistributionInfo

type PartitionedRewardDistributionInfo struct {
	TotalStakingRewards          uint64
	FirstStakingRewardSlot       uint64
	NumRewardPartitionsRemaining uint64
	Credits                      map[solana.PublicKey]CalculatedStakePoints
	RewardPartitions             Partitions
	StakingRewards               map[solana.PublicKey]*CalculatedStakeRewards
}

func DeterminePartitionedStakingRewardsInfo

func DeterminePartitionedStakingRewardsInfo(rpcc *rpcclient.RpcClient, rpcBackups []string, epochSchedule *sealevel.SysvarEpochSchedule, inflation *Inflation, prevEpochCapitalization uint64, epoch uint64, prevEpoch uint64, slot uint64, slotsPerYear float64, f *features.Features) *PartitionedRewardDistributionInfo

DeterminePartitionedStakingRewardsInfo fetches reward partition info from RPC with failover support. It tries the primary RPC first with retries, then falls back to backup endpoints.

type Partitions

type Partitions []*Partition

func CalculateStakeRewardsAndPartitions

func CalculateStakeRewardsAndPartitions(pointsPerStakeAcct map[solana.PublicKey]*CalculatedStakePoints, slotCtx *sealevel.SlotCtx, stakeHistory *sealevel.SysvarStakeHistory, slot uint64, rewardedEpoch uint64, pointValue PointValue, newRateActivationEpoch *uint64, f *features.Features, stakeCache map[solana.PublicKey]*sealevel.Delegation, voteCache map[solana.PublicKey]*sealevel.VoteStateVersions) (map[solana.PublicKey]*CalculatedStakeRewards, map[solana.PublicKey]*atomic.Uint64, Partitions)

func NewPartitions

func NewPartitions(numPartitions uint64) Partitions

func (Partitions) AddPubkey

func (partitions Partitions) AddPubkey(partitionIdx uint64, pk solana.PublicKey)

func (Partitions) NumPartitions

func (partitions Partitions) NumPartitions() uint64

func (Partitions) Partition

func (partitions Partitions) Partition(partitionIdx uint64) *Partition

type PointValue

type PointValue struct {
	Rewards uint64
	Points  wide.Uint128
}

Jump to

Keyboard shortcuts

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