Documentation ¶
Index ¶
- Constants
- Variables
- func CurrentTotalPower(st *State) (abi.StoragePower, abi.StoragePower)
- type Actor
- func (a Actor) Code() cid.Cid
- func (a Actor) Constructor(rt Runtime, _ *abi.EmptyValue) *abi.EmptyValue
- func (a Actor) CreateMiner(rt Runtime, params *CreateMinerParams) *CreateMinerReturn
- func (a Actor) CurrentTotalPower(rt Runtime, _ *abi.EmptyValue) *CurrentTotalPowerReturn
- func (a Actor) EnrollCronEvent(rt Runtime, params *EnrollCronEventParams) *abi.EmptyValue
- func (a Actor) Exports() []interface{}
- func (a Actor) IsSingleton() bool
- func (a Actor) OnConsensusFault(rt Runtime, pledgeAmount *abi.TokenAmount) *abi.EmptyValue
- func (a Actor) OnEpochTickEnd(rt Runtime, _ *abi.EmptyValue) *abi.EmptyValue
- func (a Actor) State() cbor.Er
- func (a Actor) SubmitPoRepForBulkVerify(rt Runtime, sealInfo *proof.SealVerifyInfo) *abi.EmptyValue
- func (a Actor) UpdateClaimedPower(rt Runtime, params *UpdateClaimedPowerParams) *abi.EmptyValue
- func (a Actor) UpdatePledgeTotal(rt Runtime, pledgeDelta *abi.TokenAmount) *abi.EmptyValue
- type Claim
- type CreateMinerParams
- type CreateMinerReturn
- type CronEvent
- type CurrentTotalPowerReturn
- type EnrollCronEventParams
- type MinerConstructorParams
- type Runtime
- type SectorStorageWeightDesc
- type SectorTermination
- type State
- type UpdateClaimedPowerParams
Constants ¶
const ConsensusMinerMinMiners = 3
Minimum number of registered miners for the minimum miner size limit to effectively limit consensus power.
const (
ErrTooManyProveCommits = exitcode.FirstActorSpecificExitCode + iota
)
const GasOnSubmitVerifySeal = 34721049
GasOnSubmitVerifySeal is amount of gas charged for SubmitPoRepForBulkVerify This number is empirically determined
const MaxMinerProveCommitsPerEpoch = 200
Maximum number of prove commits a miner can submit in one epoch
We bound this to 200 to limit the number of prove partitions we may need to update in a given epoch to 200.
To support onboarding 1EiB/year, we need to allow at least 32 prove commits per epoch.
Variables ¶
var ConsensusMinerMinPower = abi.NewStoragePower(10 << 40)
Minimum power of an individual miner to meet the threshold for leader election.
genesis power in bytes = 750,000 GiB
max chain throughput in bytes per epoch = 120 ProveCommits / epoch = 3,840 GiB
Functions ¶
func CurrentTotalPower ¶ added in v0.7.2
func CurrentTotalPower(st *State) (abi.StoragePower, abi.StoragePower)
CurrentTotalPower returns current power values accounting for minimum miner and minimum power
Types ¶
type Actor ¶
type Actor struct{}
func (Actor) Constructor ¶
func (a Actor) Constructor(rt Runtime, _ *abi.EmptyValue) *abi.EmptyValue
func (Actor) CreateMiner ¶
func (a Actor) CreateMiner(rt Runtime, params *CreateMinerParams) *CreateMinerReturn
func (Actor) CurrentTotalPower ¶ added in v0.7.0
func (a Actor) CurrentTotalPower(rt Runtime, _ *abi.EmptyValue) *CurrentTotalPowerReturn
Returns the total power and pledge recorded by the power actor. The returned values are frozen during the cron tick before this epoch so that this method returns consistent values while processing all messages of an epoch.
func (Actor) EnrollCronEvent ¶
func (a Actor) EnrollCronEvent(rt Runtime, params *EnrollCronEventParams) *abi.EmptyValue
func (Actor) IsSingleton ¶ added in v0.9.12
func (Actor) OnConsensusFault ¶
func (a Actor) OnConsensusFault(rt Runtime, pledgeAmount *abi.TokenAmount) *abi.EmptyValue
func (Actor) OnEpochTickEnd ¶
func (a Actor) OnEpochTickEnd(rt Runtime, _ *abi.EmptyValue) *abi.EmptyValue
Called by Cron.
func (Actor) SubmitPoRepForBulkVerify ¶ added in v0.5.4
func (a Actor) SubmitPoRepForBulkVerify(rt Runtime, sealInfo *proof.SealVerifyInfo) *abi.EmptyValue
func (Actor) UpdateClaimedPower ¶ added in v0.7.0
func (a Actor) UpdateClaimedPower(rt Runtime, params *UpdateClaimedPowerParams) *abi.EmptyValue
Adds or removes claimed power for the calling actor. May only be invoked by a miner actor.
func (Actor) UpdatePledgeTotal ¶
func (a Actor) UpdatePledgeTotal(rt Runtime, pledgeDelta *abi.TokenAmount) *abi.EmptyValue
type Claim ¶
type Claim struct { // Sum of raw byte power for a miner's sectors. RawBytePower abi.StoragePower // Sum of quality adjusted power for a miner's sectors. QualityAdjPower abi.StoragePower }
type CreateMinerParams ¶
type CreateMinerParams struct { Owner addr.Address Worker addr.Address SealProofType abi.RegisteredSealProof Peer abi.PeerID Multiaddrs []abi.Multiaddrs }
func (*CreateMinerParams) MarshalCBOR ¶
func (t *CreateMinerParams) MarshalCBOR(w io.Writer) error
func (*CreateMinerParams) UnmarshalCBOR ¶
func (t *CreateMinerParams) UnmarshalCBOR(r io.Reader) error
type CreateMinerReturn ¶
type CreateMinerReturn struct { IDAddress addr.Address // The canonical ID-based address for the actor. RobustAddress addr.Address // A more expensive but re-org-safe address for the newly created actor. }
func (*CreateMinerReturn) MarshalCBOR ¶
func (t *CreateMinerReturn) MarshalCBOR(w io.Writer) error
func (*CreateMinerReturn) UnmarshalCBOR ¶
func (t *CreateMinerReturn) UnmarshalCBOR(r io.Reader) error
type CurrentTotalPowerReturn ¶ added in v0.7.0
type CurrentTotalPowerReturn struct { RawBytePower abi.StoragePower QualityAdjPower abi.StoragePower PledgeCollateral abi.TokenAmount QualityAdjPowerSmoothed *smoothing.FilterEstimate }
func (*CurrentTotalPowerReturn) MarshalCBOR ¶ added in v0.7.0
func (t *CurrentTotalPowerReturn) MarshalCBOR(w io.Writer) error
func (*CurrentTotalPowerReturn) UnmarshalCBOR ¶ added in v0.7.0
func (t *CurrentTotalPowerReturn) UnmarshalCBOR(r io.Reader) error
type EnrollCronEventParams ¶
type EnrollCronEventParams struct { EventEpoch abi.ChainEpoch Payload []byte }
func (*EnrollCronEventParams) MarshalCBOR ¶
func (t *EnrollCronEventParams) MarshalCBOR(w io.Writer) error
func (*EnrollCronEventParams) UnmarshalCBOR ¶
func (t *EnrollCronEventParams) UnmarshalCBOR(r io.Reader) error
type MinerConstructorParams ¶
type MinerConstructorParams struct { OwnerAddr addr.Address WorkerAddr addr.Address ControlAddrs []addr.Address SealProofType abi.RegisteredSealProof PeerId abi.PeerID Multiaddrs []abi.Multiaddrs }
Storage miner actor constructor params are defined here so the power actor can send them to the init actor to instantiate miners.
func (*MinerConstructorParams) MarshalCBOR ¶
func (t *MinerConstructorParams) MarshalCBOR(w io.Writer) error
func (*MinerConstructorParams) UnmarshalCBOR ¶
func (t *MinerConstructorParams) UnmarshalCBOR(r io.Reader) error
type SectorStorageWeightDesc ¶
type SectorStorageWeightDesc struct { SectorSize abi.SectorSize Duration abi.ChainEpoch DealWeight abi.DealWeight VerifiedDealWeight abi.DealWeight }
func (*SectorStorageWeightDesc) MarshalCBOR ¶
func (t *SectorStorageWeightDesc) MarshalCBOR(w io.Writer) error
func (*SectorStorageWeightDesc) UnmarshalCBOR ¶
func (t *SectorStorageWeightDesc) UnmarshalCBOR(r io.Reader) error
type SectorTermination ¶
type SectorTermination int64
type State ¶
type State struct { TotalRawBytePower abi.StoragePower // TotalBytesCommitted includes claims from miners below min power threshold TotalBytesCommitted abi.StoragePower TotalQualityAdjPower abi.StoragePower // TotalQABytesCommitted includes claims from miners below min power threshold TotalQABytesCommitted abi.StoragePower TotalPledgeCollateral abi.TokenAmount // These fields are set once per epoch in the previous cron tick and used // for consistent values across a single epoch's state transition. ThisEpochRawBytePower abi.StoragePower ThisEpochQualityAdjPower abi.StoragePower ThisEpochPledgeCollateral abi.TokenAmount ThisEpochQAPowerSmoothed *smoothing.FilterEstimate MinerCount int64 // Number of miners having proven the minimum consensus power. MinerAboveMinPowerCount int64 // A queue of events to be triggered by cron, indexed by epoch. CronEventQueue cid.Cid // Multimap, (HAMT[ChainEpoch]AMT[CronEvent] // First epoch in which a cron task may be stored. // Cron will iterate every epoch between this and the current epoch inclusively to find tasks to execute. FirstCronEpoch abi.ChainEpoch // Last epoch power cron tick has been processed. LastProcessedCronEpoch abi.ChainEpoch // Claimed power for each miner. Claims cid.Cid // Map, HAMT[address]Claim ProofValidationBatch *cid.Cid }
func ConstructState ¶
func (*State) AddToClaim ¶
func (st *State) AddToClaim(s adt.Store, miner addr.Address, power abi.StoragePower, qapower abi.StoragePower) error
Parameters may be negative to subtract.
func (*State) MinerNominalPowerMeetsConsensusMinimum ¶ added in v0.7.2
func (st *State) MinerNominalPowerMeetsConsensusMinimum(s adt.Store, miner addr.Address) (bool, error)
MinerNominalPowerMeetsConsensusMinimum is used to validate Election PoSt winners outside the chain state. If the miner has over a threshold of power the miner meets the minimum. If the network is a below a threshold of miners and has power > zero the miner meets the minimum.
type UpdateClaimedPowerParams ¶ added in v0.7.0
type UpdateClaimedPowerParams struct { RawByteDelta abi.StoragePower QualityAdjustedDelta abi.StoragePower }
func (*UpdateClaimedPowerParams) MarshalCBOR ¶ added in v0.7.0
func (t *UpdateClaimedPowerParams) MarshalCBOR(w io.Writer) error
func (*UpdateClaimedPowerParams) UnmarshalCBOR ¶ added in v0.7.0
func (t *UpdateClaimedPowerParams) UnmarshalCBOR(r io.Reader) error