From 28a49a14b68037f833ef27c44b078d424b240f65 Mon Sep 17 00:00:00 2001 From: Jerry <1032246642@qq.com> Date: Mon, 8 Jan 2024 17:26:21 +0800 Subject: [PATCH] fix: market: use expiry-activation for deal weight calculation Ref: https://github.com/filecoin-project/go-state-types/pull/237 --- builtin/v13/market/market_state.go | 2 +- builtin/v13/market/policy.go | 4 ++-- builtin/v14/market/market_state.go | 2 +- builtin/v14/market/policy.go | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/v13/market/market_state.go b/builtin/v13/market/market_state.go index 344dc1e0..af6acc40 100644 --- a/builtin/v13/market/market_state.go +++ b/builtin/v13/market/market_state.go @@ -194,7 +194,7 @@ func validateAndComputeDealWeight(proposals *DealArray, dealIDs []abi.DealID, mi // Compute deal weight totalDealSpace += uint64(proposal.PieceSize) - dealSpaceTime := DealWeight(proposal) + dealSpaceTime := DealWeight(proposal, sectorExpiry, sectorActivation) if proposal.VerifiedDeal { totalVerifiedSpaceTime = big.Add(totalVerifiedSpaceTime, dealSpaceTime) } else { diff --git a/builtin/v13/market/policy.go b/builtin/v13/market/policy.go index 48c4481c..b23af725 100644 --- a/builtin/v13/market/policy.go +++ b/builtin/v13/market/policy.go @@ -55,8 +55,8 @@ func DealClientCollateralBounds(_ abi.PaddedPieceSize, _ abi.ChainEpoch) (min ab } // Computes the weight for a deal proposal, which is a function of its size and duration. -func DealWeight(proposal *DealProposal) abi.DealWeight { - dealDuration := big.NewInt(int64(proposal.Duration())) +func DealWeight(proposal *DealProposal, sectorExpiry abi.ChainEpoch, sectorActivation abi.ChainEpoch) abi.DealWeight { + dealDuration := big.NewInt(int64(sectorExpiry - sectorActivation)) dealSize := big.NewIntUnsigned(uint64(proposal.PieceSize)) dealSpaceTime := big.Mul(dealDuration, dealSize) return dealSpaceTime diff --git a/builtin/v14/market/market_state.go b/builtin/v14/market/market_state.go index a11a077d..c7699222 100644 --- a/builtin/v14/market/market_state.go +++ b/builtin/v14/market/market_state.go @@ -194,7 +194,7 @@ func validateAndComputeDealWeight(proposals *DealArray, dealIDs []abi.DealID, mi // Compute deal weight totalDealSpace += uint64(proposal.PieceSize) - dealSpaceTime := DealWeight(proposal) + dealSpaceTime := DealWeight(proposal, sectorExpiry, sectorActivation) if proposal.VerifiedDeal { totalVerifiedSpaceTime = big.Add(totalVerifiedSpaceTime, dealSpaceTime) } else { diff --git a/builtin/v14/market/policy.go b/builtin/v14/market/policy.go index 48c4481c..b23af725 100644 --- a/builtin/v14/market/policy.go +++ b/builtin/v14/market/policy.go @@ -55,8 +55,8 @@ func DealClientCollateralBounds(_ abi.PaddedPieceSize, _ abi.ChainEpoch) (min ab } // Computes the weight for a deal proposal, which is a function of its size and duration. -func DealWeight(proposal *DealProposal) abi.DealWeight { - dealDuration := big.NewInt(int64(proposal.Duration())) +func DealWeight(proposal *DealProposal, sectorExpiry abi.ChainEpoch, sectorActivation abi.ChainEpoch) abi.DealWeight { + dealDuration := big.NewInt(int64(sectorExpiry - sectorActivation)) dealSize := big.NewIntUnsigned(uint64(proposal.PieceSize)) dealSpaceTime := big.Mul(dealDuration, dealSize) return dealSpaceTime