Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move reward logic from fvm_shared to the shared runtime #1519

Merged
merged 2 commits into from
Feb 9, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion actors/market/src/ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ use fvm_shared::bigint::bigint_ser;
use fvm_shared::econ::TokenAmount;

use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::FilterEstimate;

pub mod account {
use super::*;
Expand Down Expand Up @@ -150,6 +149,8 @@ pub mod reward {
}

pub mod power {
use fil_actors_runtime::reward::FilterEstimate;
rvagg marked this conversation as resolved.
Show resolved Hide resolved

use super::*;

pub const CURRENT_TOTAL_POWER_METHOD: u64 = 9;
Expand Down
2 changes: 1 addition & 1 deletion actors/market/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use std::collections::{BTreeMap, BTreeSet, HashSet};

use cid::multihash::{Code, MultihashGeneric};
use cid::Cid;
use fil_actors_runtime::reward::ThisEpochRewardReturn;
use frc46_token::token::types::{BalanceReturn, TransferFromParams, TransferFromReturn};
use fvm_ipld_bitfield::BitField;
use fvm_ipld_blockstore::Blockstore;
Expand All @@ -19,7 +20,6 @@ use fvm_shared::deal::DealID;
use fvm_shared::econ::TokenAmount;
use fvm_shared::error::ExitCode;
use fvm_shared::piece::PieceInfo;
use fvm_shared::reward::ThisEpochRewardReturn;
use fvm_shared::sector::{RegisteredSealProof, SectorNumber, SectorSize, StoragePower};
use fvm_shared::sys::SendFlags;
use fvm_shared::{ActorID, METHOD_CONSTRUCTOR, METHOD_SEND};
Expand Down
3 changes: 1 addition & 2 deletions actors/market/tests/harness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use std::collections::BTreeMap;
use std::{cell::RefCell, collections::HashMap, collections::HashSet};

use cid::Cid;
use fil_actors_runtime::reward::{FilterEstimate, ThisEpochRewardReturn};
use frc46_token::token::types::{TransferFromParams, TransferFromReturn};
use fvm_ipld_bitfield::BitField;
use fvm_ipld_encoding::ipld_block::IpldBlock;
Expand All @@ -14,9 +15,7 @@ use fvm_shared::clock::{ChainEpoch, EPOCH_UNDEFINED};
use fvm_shared::crypto::signature::Signature;
use fvm_shared::deal::DealID;
use fvm_shared::piece::PaddedPieceSize;
use fvm_shared::reward::ThisEpochRewardReturn;
use fvm_shared::sector::{RegisteredSealProof, SectorNumber, StoragePower};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::sys::SendFlags;
use fvm_shared::{
address::Address, econ::TokenAmount, error::ExitCode, ActorID, METHOD_CONSTRUCTOR, METHOD_SEND,
Expand Down
2 changes: 1 addition & 1 deletion actors/miner/src/ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ use fvm_shared::econ::TokenAmount;
use fvm_shared::piece::PaddedPieceSize;
use fvm_shared::sector::SectorNumber;
use fvm_shared::sector::{RegisteredSealProof, StoragePower};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::ActorID;

use fil_actors_runtime::reward::FilterEstimate;
use fil_actors_runtime::BatchReturn;

pub mod account {
Expand Down
5 changes: 2 additions & 3 deletions actors/miner/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ use anyhow::{anyhow, Error};
use byteorder::{BigEndian, ByteOrder, WriteBytesExt};
use cid::multihash::Code::Blake2b256;
use cid::Cid;
use fil_actors_runtime::runtime::policy_constants::MAX_SECTOR_NUMBER;
use fvm_ipld_bitfield::{BitField, Validate};
use fvm_ipld_blockstore::Blockstore;
use fvm_ipld_encoding::ipld_block::IpldBlock;
Expand All @@ -24,14 +23,12 @@ use fvm_shared::econ::TokenAmount;
use fvm_shared::error::*;
use fvm_shared::piece::PieceInfo;
use fvm_shared::randomness::*;
use fvm_shared::reward::ThisEpochRewardReturn;
use fvm_shared::sector::{
AggregateSealVerifyInfo, AggregateSealVerifyProofAndInfos, InteractiveSealRandomness,
PoStProof, RegisteredAggregateProof, RegisteredPoStProof, RegisteredSealProof,
RegisteredUpdateProof, ReplicaUpdateInfo, SealRandomness, SealVerifyInfo, SectorID, SectorInfo,
SectorNumber, SectorSize, StoragePower, WindowPoStVerifyInfo,
};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::{ActorID, MethodNum, METHOD_CONSTRUCTOR, METHOD_SEND};
use itertools::Itertools;
use log::{error, info, warn};
Expand All @@ -47,7 +44,9 @@ pub use deadline_state::*;
pub use deadlines::*;
pub use expiration_queue::*;
use fil_actors_runtime::cbor::{serialize, serialize_vec};
use fil_actors_runtime::reward::{FilterEstimate, ThisEpochRewardReturn};
use fil_actors_runtime::runtime::builtins::Type;
use fil_actors_runtime::runtime::policy_constants::MAX_SECTOR_NUMBER;
use fil_actors_runtime::runtime::{ActorCode, DomainSeparationTag, Policy, Runtime};
use fil_actors_runtime::{
actor_dispatch, actor_error, deserialize_block, extract_send_result, util, ActorContext,
Expand Down
4 changes: 2 additions & 2 deletions actors/miner/src/monies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
use std::cmp::{self, max};

use fil_actors_runtime::network::EPOCHS_IN_DAY;
use fil_actors_runtime::reward::math::PRECISION;
use fil_actors_runtime::reward::{smooth, FilterEstimate};
use fil_actors_runtime::EXPECTED_LEADERS_PER_EPOCH;
use fvm_shared::bigint::{BigInt, Integer};
use fvm_shared::clock::ChainEpoch;
use fvm_shared::econ::TokenAmount;
use fvm_shared::math::PRECISION;
use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::{self, FilterEstimate};
use lazy_static::lazy_static;
use num_traits::Zero;

Expand Down
6 changes: 3 additions & 3 deletions actors/miner/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ use fvm_shared::sector::{
PoStProof, RegisteredAggregateProof, RegisteredPoStProof, RegisteredSealProof,
RegisteredUpdateProof, SectorNumber, SectorSize, StoragePower,
};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::ActorID;
use serde::{Deserialize, Serialize};

use crate::ext::verifreg::AllocationID;
use fil_actors_runtime::reward::FilterEstimate;
use fil_actors_runtime::{BatchReturn, DealWeight};
use serde::{Deserialize, Serialize};

use crate::commd::CompactCommD;
use crate::ext::verifreg::AllocationID;
use crate::ext::verifreg::ClaimID;

use super::beneficiary::*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::ops::Neg;

use fil_actor_miner::detail::expected_reward_for_power_clamped_at_atto_fil;
use fil_actors_runtime::reward::FilterEstimate;
use fvm_shared::bigint::{BigInt, Zero};
use fvm_shared::econ::TokenAmount;
use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::FilterEstimate;

#[test]
fn expected_zero_valued_br_clamped_at_1_attofil() {
Expand Down
2 changes: 1 addition & 1 deletion actors/miner/tests/monies_test.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use fil_actor_miner::{expected_reward_for_power, pledge_penalty_for_continued_fault};
use fil_actors_runtime::reward::FilterEstimate;
use fvm_shared::bigint::{BigInt, Zero};
use fvm_shared::smooth::FilterEstimate;
use std::ops::Neg;

#[test]
Expand Down
2 changes: 1 addition & 1 deletion actors/miner/tests/pledge_penalty_for_termination.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ use fil_actor_miner::{
INITIAL_PLEDGE_FACTOR, TERMINATION_LIFETIME_CAP, TERMINATION_REWARD_FACTOR_DENOM,
TERMINATION_REWARD_FACTOR_NUM,
};
use fil_actors_runtime::reward::FilterEstimate;
use fil_actors_runtime::EPOCHS_IN_DAY;
use fvm_shared::bigint::{BigInt, Zero};
use fvm_shared::econ::TokenAmount;
use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::FilterEstimate;

fn epoch_target_reward() -> TokenAmount {
TokenAmount::from_atto(1_u128 << 50)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use fil_actor_miner::{initial_pledge_for_power, pre_commit_deposit_for_power};
use fil_actors_runtime::reward::FilterEstimate;
use fvm_shared::econ::TokenAmount;
use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::FilterEstimate;
use num_traits::zero;

macro_rules! my_const {
Expand Down
4 changes: 2 additions & 2 deletions actors/miner/tests/prove_commit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use fvm_shared::{
econ::TokenAmount,
error::ExitCode,
sector::StoragePower,
smooth::FilterEstimate,
};
use std::collections::HashMap;

Expand All @@ -14,7 +13,8 @@ use fil_actor_miner::{
qa_power_for_weight, qa_power_max, PowerPair, PreCommitSectorBatchParams, VestSpec,
};
use fil_actors_runtime::{
runtime::policy_constants::MAX_SECTOR_NUMBER, test_utils::make_piece_cid,
reward::FilterEstimate, runtime::policy_constants::MAX_SECTOR_NUMBER,
test_utils::make_piece_cid,
};
use fil_actors_runtime::{runtime::Runtime, test_utils::expect_abort, DealWeight};
use util::*;
Expand Down
2 changes: 1 addition & 1 deletion actors/miner/tests/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use std::ops::Neg;
use anyhow::anyhow;
use cid::multihash::MultihashDigest;
use cid::Cid;
use fil_actors_runtime::reward::FilterEstimate;
use fvm_ipld_amt::Amt;
use fvm_ipld_bitfield::iter::Ranges;
use fvm_ipld_bitfield::{BitField, UnvalidatedBitField, Validate};
Expand Down Expand Up @@ -35,7 +36,6 @@ use fvm_shared::sector::{
RegisteredSealProof, ReplicaUpdateInfo, SealVerifyInfo, SectorID, SectorInfo, SectorNumber,
SectorSize, StoragePower, WindowPoStVerifyInfo,
};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::{ActorID, HAMT_BIT_WIDTH, METHOD_SEND};
use itertools::Itertools;
use lazy_static::lazy_static;
Expand Down
3 changes: 2 additions & 1 deletion actors/power/src/ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ use fvm_ipld_encoding::{strict_bytes, BytesDe};
use fvm_shared::address::Address;
use fvm_shared::bigint::bigint_ser;
use fvm_shared::sector::{RegisteredPoStProof, SectorNumber, StoragePower};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::METHOD_CONSTRUCTOR;
use num_derive::FromPrimitive;

use fil_actors_runtime::reward::FilterEstimate;

pub mod init {
use super::*;
use fvm_ipld_encoding::RawBytes;
Expand Down
2 changes: 1 addition & 1 deletion actors/power/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ use std::collections::BTreeSet;
use std::convert::TryInto;

use anyhow::anyhow;
use fil_actors_runtime::reward::ThisEpochRewardReturn;
use fvm_ipld_encoding::ipld_block::IpldBlock;
use fvm_ipld_encoding::RawBytes;
use fvm_shared::address::Address;
use fvm_shared::bigint::bigint_ser::BigIntSer;
use fvm_shared::econ::TokenAmount;
use fvm_shared::error::ExitCode;
use fvm_shared::reward::ThisEpochRewardReturn;
use fvm_shared::sector::SealVerifyInfo;
use fvm_shared::{MethodNum, HAMT_BIT_WIDTH, METHOD_CONSTRUCTOR};
use log::{debug, error};
Expand Down
4 changes: 3 additions & 1 deletion actors/power/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@ use fvm_shared::clock::ChainEpoch;
use fvm_shared::econ::TokenAmount;
use fvm_shared::error::ExitCode;
use fvm_shared::sector::{RegisteredPoStProof, StoragePower};
use fvm_shared::smooth::{AlphaBetaFilter, FilterEstimate, DEFAULT_ALPHA, DEFAULT_BETA};
use fvm_shared::ActorID;
use integer_encoding::VarInt;
use lazy_static::lazy_static;
use num_traits::Signed;

use fil_actors_runtime::builtin::reward::smooth::{
AlphaBetaFilter, FilterEstimate, DEFAULT_ALPHA, DEFAULT_BETA,
};
use fil_actors_runtime::runtime::Policy;
use fil_actors_runtime::{
actor_error, ActorContext, ActorDowncast, ActorError, AsActorError, Config, Map2, Multimap,
Expand Down
2 changes: 1 addition & 1 deletion actors/power/src/types.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Copyright 2019-2022 ChainSafe Systems
// SPDX-License-Identifier: Apache-2.0, MIT

use fil_actors_runtime::reward::FilterEstimate;
use fvm_ipld_encoding::tuple::*;
use fvm_ipld_encoding::{strict_bytes, BytesDe, RawBytes};
use fvm_shared::address::Address;
use fvm_shared::bigint::bigint_ser;
use fvm_shared::clock::ChainEpoch;
use fvm_shared::econ::TokenAmount;
use fvm_shared::sector::{RegisteredPoStProof, SealVerifyInfo, StoragePower};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::ActorID;

use serde::{Deserialize, Serialize};
Expand Down
3 changes: 1 addition & 2 deletions actors/power/tests/harness/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@ use fvm_shared::bigint::BigInt;
use fvm_shared::clock::ChainEpoch;
use fvm_shared::econ::TokenAmount;
use fvm_shared::error::ExitCode;
use fvm_shared::reward::ThisEpochRewardReturn;
use fvm_shared::sector::SealVerifyInfo;
use fvm_shared::sector::SectorNumber;
use fvm_shared::sector::{RegisteredPoStProof, RegisteredSealProof, StoragePower};
use fvm_shared::smooth::FilterEstimate;
use fvm_shared::MethodNum;
use lazy_static::lazy_static;
use num_traits::Zero;
Expand All @@ -38,6 +36,7 @@ use fil_actor_power::{
UpdateClaimedPowerParams,
};
use fil_actor_power::{CronEvent, MinerConsensusCountReturn};
use fil_actors_runtime::builtin::reward::{FilterEstimate, ThisEpochRewardReturn};
use fil_actors_runtime::runtime::builtins::Type;
use fil_actors_runtime::runtime::Runtime;
use fil_actors_runtime::runtime::RuntimePolicy;
Expand Down
3 changes: 2 additions & 1 deletion actors/reward/src/expneg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
// SPDX-License-Identifier: Apache-2.0, MIT

use fvm_shared::bigint::{BigInt, Integer};
use fvm_shared::math::{poly_parse, poly_val, PRECISION};
use lazy_static::lazy_static;

use fil_actors_runtime::builtin::reward::math::{poly_parse, poly_val, PRECISION};

lazy_static! {
static ref EXP_NUM_COEF: Vec<BigInt> = poly_parse(&[
"-648770010757830093818553637600",
Expand Down
2 changes: 1 addition & 1 deletion actors/reward/src/logic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ use std::str::FromStr;
use fvm_shared::bigint::{BigInt, Integer};
use fvm_shared::clock::ChainEpoch;
use fvm_shared::econ::TokenAmount;
use fvm_shared::math::PRECISION;
use fvm_shared::sector::StoragePower;
use lazy_static::lazy_static;

use super::expneg::expneg;
use fil_actors_runtime::builtin::reward::math::PRECISION;

lazy_static! {
/// Floor(e^(ln[1 + 100%] / epochsInYear) * 2^128
Expand Down
6 changes: 4 additions & 2 deletions actors/reward/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ use fvm_shared::bigint::bigint_ser;
use fvm_shared::bigint::BigInt;
use fvm_shared::clock::{ChainEpoch, EPOCH_UNDEFINED};
use fvm_shared::econ::TokenAmount;

use fvm_shared::sector::StoragePower;
use fvm_shared::smooth::{AlphaBetaFilter, FilterEstimate, DEFAULT_ALPHA, DEFAULT_BETA};
use lazy_static::lazy_static;
use num_derive::FromPrimitive;

use fil_actors_runtime::builtin::reward::smooth::{
AlphaBetaFilter, FilterEstimate, DEFAULT_ALPHA, DEFAULT_BETA,
};

/// The unit of spacetime committed to the network
pub type Spacetime = BigInt;

Expand Down
2 changes: 1 addition & 1 deletion actors/reward/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ pub struct AwardBlockRewardParams {
pub win_count: i64,
}

pub use fvm_shared::reward::ThisEpochRewardReturn;
pub use fil_actors_runtime::builtin::reward::ThisEpochRewardReturn;

#[derive(Clone, Debug, PartialEq, Eq, Serialize_tuple, Deserialize_tuple)]
#[serde(transparent)]
Expand Down
2 changes: 1 addition & 1 deletion integration_tests/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use fil_actors_runtime::reward::FilterEstimate;
use fvm_shared::{
address::{Address, FIRST_NON_SINGLETON_ADDR},
econ::TokenAmount,
sector::StoragePower,
smooth::FilterEstimate,
ActorID,
};
use lazy_static::lazy_static;
Expand Down
4 changes: 2 additions & 2 deletions runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ fvm_sdk = { workspace = true, optional = true }
fvm_shared = { workspace = true }
integer-encoding = { workspace = true }
itertools = { workspace = true }
lazy_static = { workspace = true, optional = true }
lazy_static = { workspace = true }
log = { workspace = true }
multihash = { workspace = true }
num = { workspace = true }
Expand Down Expand Up @@ -92,4 +92,4 @@ no-provider-deal-collateral = []
fake-proofs = []


test_utils = ["hex", "multihash/sha2", "multihash/sha3", "multihash/ripemd", "libsecp256k1", "blake2b_simd", "rand", "rand/std_rng", "lazy_static", "pretty_env_logger"]
test_utils = ["hex", "multihash/sha2", "multihash/sha3", "multihash/ripemd", "libsecp256k1", "blake2b_simd", "rand", "rand/std_rng", "pretty_env_logger"]
1 change: 1 addition & 0 deletions runtime/src/builtin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ pub use self::shared::*;
pub use self::singletons::*;

pub mod network;
pub mod reward;
pub mod shared;
pub mod singletons;
23 changes: 23 additions & 0 deletions runtime/src/builtin/reward/math.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2021-2023 Protocol Labs
// Copyright 2019-2022 ChainSafe Systems
// SPDX-License-Identifier: Apache-2.0, MIT

use fvm_shared::bigint::{BigInt, ParseBigIntError};

pub const PRECISION: u64 = 128;

/// polyval evaluates a polynomial given by coefficients `p` in Q.128 format
/// at point `x` in Q.128 format. Output is in Q.128.
/// Coefficients should be ordered from the highest order coefficient to the lowest.
pub fn poly_val(poly: &[BigInt], x: &BigInt) -> BigInt {
let mut res = BigInt::default();

for coeff in poly {
res = ((res * x) >> PRECISION) + coeff;
}
res
}

pub fn poly_parse(coefs: &[&str]) -> Result<Vec<BigInt>, ParseBigIntError> {
coefs.iter().map(|c| c.parse()).collect()
}
Loading
Loading