Struct fil_actor_miner_state::v10::State

source ·
pub struct State {
Show 15 fields pub info: Cid, pub pre_commit_deposits: TokenAmount, pub locked_funds: TokenAmount, pub vesting_funds: Cid, pub fee_debt: TokenAmount, pub initial_pledge: TokenAmount, pub pre_committed_sectors: Cid, pub pre_committed_sectors_cleanup: Cid, pub allocated_sectors: Cid, pub sectors: Cid, pub proving_period_start: ChainEpoch, pub current_deadline: u64, pub deadlines: Cid, pub early_terminations: BitField, pub deadline_cron_active: bool,
}
Expand description

Balance of Miner Actor should be greater than or equal to the sum of PreCommitDeposits and LockedFunds. It is possible for balance to fall below the sum of PCD, LF and InitialPledgeRequirements, and this is a bad state (IP Debt) that limits a miner actor’s behavior (i.e. no balance withdrawals) Excess balance as computed by st.GetAvailableBalance will be withdrawable or usable for pre-commit deposit or pledge lock-up.

Fields§

§info: Cid

Contains static info about this miner

§pre_commit_deposits: TokenAmount

Total funds locked as pre_commit_deposit

§locked_funds: TokenAmount

Total rewards and added funds locked in vesting table

§vesting_funds: Cid

VestingFunds (Vesting Funds schedule for the miner).

§fee_debt: TokenAmount

Absolute value of debt this miner owes from unpaid fees.

§initial_pledge: TokenAmount

Sum of initial pledge requirements of all active sectors.

§pre_committed_sectors: Cid

Sectors that have been pre-committed but not yet proven. Map, HAMT<SectorNumber, SectorPreCommitOnChainInfo>

§pre_committed_sectors_cleanup: Cid§allocated_sectors: Cid

Allocated sector IDs. Sector IDs can never be reused once allocated.

§sectors: Cid

Information for all proven and not-yet-garbage-collected sectors.

Sectors are removed from this AMT when the partition to which the sector belongs is compacted.

§proving_period_start: ChainEpoch

The first epoch in this miner’s current proving period. This is the first epoch in which a PoSt for a partition at the miner’s first deadline may arrive. Alternatively, it is after the last epoch at which a PoSt for the previous window is valid. Always greater than zero, this may be greater than the current epoch for genesis miners in the first WPoStProvingPeriod epochs of the chain; the epochs before the first proving period starts are exempt from Window PoSt requirements. Updated at the end of every period by a cron callback.

§current_deadline: u64

Index of the deadline within the proving period beginning at ProvingPeriodStart that has not yet been finalized. Updated at the end of each deadline window by a cron callback.

§deadlines: Cid

The sector numbers due for PoSt at each deadline in the current proving period, frozen at period start. New sectors are added and expired ones removed at proving period boundary. Faults are not subtracted from this in state, but on the fly.

§early_terminations: BitField

Deadlines with outstanding fees for early sector termination.

§deadline_cron_active: bool

Implementations§

source§

impl State

source

pub fn new<BS: Blockstore>( policy: &Policy, store: &BS, info_cid: Cid, period_start: ChainEpoch, deadline_idx: u64, ) -> Result<Self>

source

pub fn get_info<BS: Blockstore>(&self, store: &BS) -> Result<MinerInfo>

source

pub fn save_info<BS: Blockstore>( &mut self, store: &BS, info: &MinerInfo, ) -> Result<()>

source

pub fn deadline_info( &self, policy: &Policy, current_epoch: ChainEpoch, ) -> DeadlineInfo

Returns deadline calculations for the current (according to state) proving period.

source

pub fn recorded_deadline_info( &self, policy: &Policy, current_epoch: ChainEpoch, ) -> DeadlineInfo

source

pub fn current_proving_period_start( &self, policy: &Policy, current_epoch: ChainEpoch, ) -> ChainEpoch

source

pub fn quant_spec_for_deadline( &self, policy: &Policy, deadline_idx: u64, ) -> QuantSpec

Returns deadline calculations for the current (according to state) proving period.

source

pub fn allocate_sector_numbers<BS: Blockstore>( &mut self, store: &BS, sector_numbers: &BitField, policy: CollisionPolicy, ) -> Result<(), ActorError>

Marks a set of sector numbers as having been allocated. If policy is DenyCollisions, fails if the set intersects with the sector numbers already allocated.

source

pub fn put_precommitted_sectors<BS: Blockstore>( &mut self, store: &BS, precommits: Vec<SectorPreCommitOnChainInfo>, ) -> Result<()>

Stores a pre-committed sector info, failing if the sector number is already present.

source

pub fn get_precommitted_sector<BS: Blockstore>( &self, store: &BS, sector_num: SectorNumber, ) -> Result<Option<SectorPreCommitOnChainInfo>, HamtError>

source

pub fn find_precommitted_sectors<BS: Blockstore>( &self, store: &BS, sector_numbers: &[SectorNumber], ) -> Result<Vec<SectorPreCommitOnChainInfo>>

Gets and returns the requested pre-committed sectors, skipping missing sectors.

source

pub fn delete_precommitted_sectors<BS: Blockstore>( &mut self, store: &BS, sector_nums: &[SectorNumber], ) -> Result<(), HamtError>

source

pub fn has_sector_number<BS: Blockstore>( &self, store: &BS, sector_num: SectorNumber, ) -> Result<bool>

source

pub fn put_sectors<BS: Blockstore>( &mut self, store: &BS, new_sectors: Vec<SectorOnChainInfo>, ) -> Result<()>

source

pub fn get_sector<BS: Blockstore>( &self, store: &BS, sector_num: SectorNumber, ) -> Result<Option<SectorOnChainInfo>>

source

pub fn delete_sectors<BS: Blockstore>( &mut self, store: &BS, sector_nos: &BitField, ) -> Result<(), AmtError>

source

pub fn for_each_sector<BS: Blockstore, F>(&self, store: &BS, f: F) -> Result<()>

source

pub fn find_sector<BS: Blockstore>( &self, policy: &Policy, store: &BS, sector_number: SectorNumber, ) -> Result<(u64, u64)>

Returns the deadline and partition index for a sector number.

source

pub fn reschedule_sector_expirations<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, current_epoch: ChainEpoch, sector_size: SectorSize, deadline_sectors: DeadlineSectorMap, ) -> Result<Vec<SectorOnChainInfo>>

Schedules each sector to expire at its next deadline end. If it can’t find any given sector, it skips it.

This method assumes that each sector’s power has not changed, despite the rescheduling.

Note: this method is used to “upgrade” sectors, rescheduling the now-replaced sectors to expire at the end of the next deadline. Given the expense of sealing a sector, this function skips missing/faulty/terminated “upgraded” sectors instead of failing. That way, the new sectors can still be proved.

source

pub fn assign_sectors_to_deadlines<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, current_epoch: ChainEpoch, sectors: Vec<SectorOnChainInfo>, partition_size: u64, sector_size: SectorSize, ) -> Result<()>

Assign new sectors to deadlines.

source

pub fn pop_early_terminations<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, max_partitions: u64, max_sectors: u64, ) -> Result<(TerminationResult, bool)>

Pops up to max_sectors early terminated sectors from all deadlines.

Returns true if we still have more early terminations to process.

source

pub fn check_sector_active<BS: Blockstore>( &self, policy: &Policy, store: &BS, deadline_idx: u64, partition_idx: u64, sector_number: SectorNumber, require_proven: bool, ) -> Result<bool>

Returns an error if the target sector cannot be found, or some other bad state is reached. Returns Ok(false) if the target sector is faulty, terminated, or unproven Returns Ok(true) otherwise

source

pub fn check_sector_health<BS: Blockstore>( &self, policy: &Policy, store: &BS, deadline_idx: u64, partition_idx: u64, sector_number: SectorNumber, ) -> Result<()>

Returns an error if the target sector cannot be found and/or is faulty/terminated.

source

pub fn load_sector_infos<BS: Blockstore>( &self, store: &BS, sectors: &BitField, ) -> Result<Vec<SectorOnChainInfo>>

Loads sector info for a sequence of sectors.

source

pub fn load_deadlines<BS: Blockstore>( &self, store: &BS, ) -> Result<Deadlines, ActorError>

source

pub fn save_deadlines<BS: Blockstore>( &mut self, store: &BS, deadlines: Deadlines, ) -> Result<()>

source

pub fn load_vesting_funds<BS: Blockstore>( &self, store: &BS, ) -> Result<VestingFunds>

Loads the vesting funds table from the store.

source

pub fn save_vesting_funds<BS: Blockstore>( &mut self, store: &BS, funds: &VestingFunds, ) -> Result<()>

Saves the vesting table to the store.

source

pub fn continue_deadline_cron(&self) -> bool

source

pub fn add_pre_commit_deposit(&mut self, amount: &TokenAmount) -> Result<()>

source

pub fn add_initial_pledge(&mut self, amount: &TokenAmount) -> Result<()>

source

pub fn apply_penalty(&mut self, penalty: &TokenAmount) -> Result<()>

source

pub fn add_locked_funds<BS: Blockstore>( &mut self, store: &BS, current_epoch: ChainEpoch, vesting_sum: &TokenAmount, spec: &VestSpec, ) -> Result<TokenAmount>

First vests and unlocks the vested funds AND then locks the given funds in the vesting table.

source

pub fn repay_partial_debt_in_priority_order<BS: Blockstore>( &mut self, store: &BS, current_epoch: ChainEpoch, curr_balance: &TokenAmount, ) -> Result<(TokenAmount, TokenAmount), Error>

Draws from vesting table and unlocked funds to repay up to the fee debt. Returns the amount unlocked from the vesting table and the amount taken from current balance. If the fee debt exceeds the total amount available for repayment the fee debt field is updated to track the remaining debt. Otherwise it is set to zero.

source

pub fn repay_debts(&mut self, curr_balance: &TokenAmount) -> Result<TokenAmount>

Repays the full miner actor fee debt. Returns the amount that must be burnt and an error if there are not sufficient funds to cover repayment. Miner state repays from unlocked funds and fails if unlocked funds are insufficient to cover fee debt. FeeDebt will be zero after a successful call.

source

pub fn unlock_unvested_funds<BS: Blockstore>( &mut self, store: &BS, current_epoch: ChainEpoch, target: &TokenAmount, ) -> Result<TokenAmount>

Unlocks an amount of funds that have not yet vested, if possible. The soonest-vesting entries are unlocked first. Returns the amount actually unlocked.

source

pub fn unlock_vested_funds<BS: Blockstore>( &mut self, store: &BS, current_epoch: ChainEpoch, ) -> Result<TokenAmount>

Unlocks all vesting funds that have vested before the provided epoch. Returns the amount unlocked.

source

pub fn check_vested_funds<BS: Blockstore>( &self, store: &BS, current_epoch: ChainEpoch, ) -> Result<TokenAmount>

CheckVestedFunds returns the amount of vested funds that have vested before the provided epoch.

source

pub fn get_unlocked_balance( &self, actor_balance: &TokenAmount, ) -> Result<TokenAmount>

Unclaimed funds that are not locked – includes funds used to cover initial pledge requirement.

source

pub fn get_available_balance( &self, actor_balance: &TokenAmount, ) -> Result<TokenAmount>

Unclaimed funds. Actor balance - (locked funds, pre-commit deposit, IP requirement) Can go negative if the miner is in IP debt.

source

pub fn check_balance_invariants(&self, balance: &TokenAmount) -> Result<()>

source

pub fn quant_spec_every_deadline(&self, policy: &Policy) -> QuantSpec

pre-commit expiry

source

pub fn add_pre_commit_clean_ups<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, cleanup_events: Vec<(ChainEpoch, u64)>, ) -> Result<()>

source

pub fn cleanup_expired_pre_commits<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, current_epoch: ChainEpoch, ) -> Result<TokenAmount>

source

pub fn advance_deadline<BS: Blockstore>( &mut self, policy: &Policy, store: &BS, current_epoch: ChainEpoch, ) -> Result<AdvanceDeadlineResult>

source

pub fn get_all_precommitted_sectors<BS: Blockstore>( &self, store: &BS, sector_nos: &BitField, ) -> Result<Vec<SectorPreCommitOnChainInfo>>

Trait Implementations§

source§

impl Clone for State

source§

fn clone(&self) -> State

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for State

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for State

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for State

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for State

§

impl RefUnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnwindSafe for State

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> FmtForward for T

source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> References<RawCodec> for T

source§

fn references<R, E>(_c: RawCodec, _r: &mut R, _set: &mut E) -> Result<(), Error>
where R: Read, E: Extend<Cid<64>>,

Scrape the references from an impl Read. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,