fil_actor_power_v11/
types.rs

1// Copyright 2019-2022 ChainSafe Systems
2// SPDX-License-Identifier: Apache-2.0, MIT
3
4use fvm_ipld_encoding::tuple::*;
5use fvm_ipld_encoding::{strict_bytes, BytesDe, RawBytes};
6use fvm_shared3::address::Address;
7use fvm_shared3::bigint::bigint_ser;
8use fvm_shared3::clock::ChainEpoch;
9use fvm_shared3::econ::TokenAmount;
10use fvm_shared3::sector::{RegisteredPoStProof, SealVerifyInfo, StoragePower};
11use fvm_shared3::smooth::FilterEstimate;
12use fvm_shared3::ActorID;
13
14use serde::{Deserialize, Serialize};
15
16pub type SectorTermination = i64;
17
18/// Implicit termination after all deals expire
19pub const SECTOR_TERMINATION_EXPIRED: SectorTermination = 0;
20/// Unscheduled explicit termination by the miner
21pub const SECTOR_TERMINATION_MANUAL: SectorTermination = 1;
22/// Implicit termination due to unrecovered fault
23pub const SECTOR_TERMINATION_FAULTY: SectorTermination = 3;
24
25pub const CRON_QUEUE_HAMT_BITWIDTH: u32 = 6;
26pub const CRON_QUEUE_AMT_BITWIDTH: u32 = 6;
27pub const PROOF_VALIDATION_BATCH_AMT_BITWIDTH: u32 = 4;
28
29#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
30pub struct CreateMinerParams {
31    pub owner: Address,
32    pub worker: Address,
33    pub window_post_proof_type: RegisteredPoStProof,
34    #[serde(with = "strict_bytes")]
35    pub peer: Vec<u8>,
36    pub multiaddrs: Vec<BytesDe>,
37}
38
39#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
40pub struct CreateMinerReturn {
41    /// Canonical ID-based address for the actor.
42    pub id_address: Address,
43    /// Re-org safe address for created actor.
44    pub robust_address: Address,
45}
46
47#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
48pub struct UpdateClaimedPowerParams {
49    #[serde(with = "bigint_ser")]
50    pub raw_byte_delta: StoragePower,
51    #[serde(with = "bigint_ser")]
52    pub quality_adjusted_delta: StoragePower,
53}
54
55#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
56pub struct EnrollCronEventParams {
57    pub event_epoch: ChainEpoch,
58    pub payload: RawBytes,
59}
60
61#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, Default)]
62#[serde(transparent)]
63pub struct UpdatePledgeTotalParams {
64    pub pledge_delta: TokenAmount,
65}
66
67#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
68#[serde(transparent)]
69pub struct SubmitPoRepForBulkVerifyParams {
70    pub seal_info: SealVerifyInfo,
71}
72
73#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
74pub struct CurrentTotalPowerReturn {
75    #[serde(with = "bigint_ser")]
76    pub raw_byte_power: StoragePower,
77    #[serde(with = "bigint_ser")]
78    pub quality_adj_power: StoragePower,
79    pub pledge_collateral: TokenAmount,
80    pub quality_adj_power_smoothed: FilterEstimate,
81}
82
83#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
84#[serde(transparent)]
85pub struct NetworkRawPowerReturn {
86    #[serde(with = "bigint_ser")]
87    pub raw_byte_power: StoragePower,
88}
89
90#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
91#[serde(transparent)]
92pub struct MinerRawPowerParams {
93    pub miner: ActorID,
94}
95
96#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
97pub struct MinerRawPowerReturn {
98    #[serde(with = "bigint_ser")]
99    pub raw_byte_power: StoragePower,
100    pub meets_consensus_minimum: bool,
101}
102
103#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
104#[serde(transparent)]
105pub struct MinerCountReturn {
106    pub miner_count: i64,
107}
108
109#[derive(Serialize_tuple, Deserialize_tuple, Debug, Clone, Eq, PartialEq)]
110#[serde(transparent)]
111pub struct MinerConsensusCountReturn {
112    pub miner_consensus_count: i64,
113}