diff --git a/actors/builtin/miner/miner_test.go b/actors/builtin/miner/miner_test.go index 1166d28f97..b7b92d294b 100644 --- a/actors/builtin/miner/miner_test.go +++ b/actors/builtin/miner/miner_test.go @@ -1928,7 +1928,7 @@ func TestWindowPost(t *testing.T) { result = &poStDisputeResult{ expectedPowerDelta: pwr.Neg(), expectedPenalty: expectedFee, - expectedReward: big.Zero(), + expectedReward: miner.BaseRewardForDisputedWindowPoSt, expectedPledgeDelta: big.Zero(), } } @@ -2494,7 +2494,7 @@ func TestWindowPost(t *testing.T) { result = &poStDisputeResult{ expectedPowerDelta: pwr.Neg(), expectedPenalty: expectedFee, - expectedReward: big.Zero(), + expectedReward: BaseRewardForDisputedWindowPoSt, expectedPledgeDelta: big.Zero(), } diff --git a/actors/builtin/miner/monies.go b/actors/builtin/miner/monies.go index 25fd58540b..6889e9918b 100644 --- a/actors/builtin/miner/monies.go +++ b/actors/builtin/miner/monies.go @@ -62,6 +62,11 @@ const ConsensusFaultFactor = 5 var LockedRewardFactorNum = big.NewInt(75) var LockedRewardFactorDenom = big.NewInt(100) +// Base reward for successfully disputing a window posts proofs. +var BaseRewardForDisputedWindowPoSt = big.Lsh(big.NewInt(4), math.Precision128) // PARAM_SPEC +// Base penalty for a successful disputed window post proof. +var BasePenaltyForDisputedWindowPoSt = big.Lsh(big.NewInt(20), math.Precision128) // PARAM_SPEC + // The projected block reward a sector would earn over some period. // Also known as "BR(t)". // BR(t) = ProjectedRewardFraction(t) * SectorQualityAdjustedPower @@ -123,7 +128,10 @@ func PledgePenaltyForTermination(dayReward abi.TokenAmount, sectorAge abi.ChainE // The penalty for optimistically proving a sector with an invalid window PoSt. func PledgePenaltyForInvalidWindowPoSt(rewardEstimate, networkQAPowerEstimate smoothing.FilterEstimate, qaSectorPower abi.StoragePower) abi.TokenAmount { - return ExpectedRewardForPower(rewardEstimate, networkQAPowerEstimate, qaSectorPower, InvalidWindowPoStProjectionPeriod) + return big.Add( + ExpectedRewardForPower(rewardEstimate, networkQAPowerEstimate, qaSectorPower, InvalidWindowPoStProjectionPeriod), + BasePenaltyForDisputedWindowPoSt, + ) } // Computes the PreCommit deposit given sector qa weight and current network conditions. diff --git a/actors/builtin/miner/policy.go b/actors/builtin/miner/policy.go index 1c82a509d3..cca3c10254 100644 --- a/actors/builtin/miner/policy.go +++ b/actors/builtin/miner/policy.go @@ -348,7 +348,6 @@ func RewardForConsensusSlashReport(elapsedEpoch abi.ChainEpoch, collateral abi.T // The reward given for successfully disputing a window post. func RewardForDisputedWindowPoSt(proofType abi.RegisteredPoStProof, disputedPower PowerPair) abi.TokenAmount { - // This is currently zero but may be raised at some point to - // ensure that disputing proofs rational. - return big.Zero() + // This is currently just the base. In the future, the fee may scale based on the disputed power. + return BaseRewardForDisputedWindowPoSt }