From a8d164ed27cfe7456d0a2278578d11ab3ba48f97 Mon Sep 17 00:00:00 2001 From: Aayush Rajasekaran Date: Thu, 27 May 2021 13:59:04 -0400 Subject: [PATCH 1/2] Modify randomness logic for PublishStorageDeals --- actors/builtin/market/market_actor.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actors/builtin/market/market_actor.go b/actors/builtin/market/market_actor.go index f1bef9860..3e1e548f5 100644 --- a/actors/builtin/market/market_actor.go +++ b/actors/builtin/market/market_actor.go @@ -237,7 +237,7 @@ func (a Actor) PublishStorageDeals(rt Runtime, params *PublishStorageDealsParams // We should randomize the first epoch for when the deal will be processed so an attacker isn't able to // schedule too many deals for the same tick. - processEpoch, err := genRandNextEpoch(rt.CurrEpoch(), &deal.Proposal, rt.GetRandomnessFromBeacon) + processEpoch, err := genRandNextEpoch(rt.CurrEpoch(), &deal.Proposal, rt.GetRandomnessFromTickets) builtin.RequireNoErr(rt, err, exitcode.ErrIllegalState, "failed to generate random process epoch") err = msm.dealsByEpoch.Put(processEpoch, id) @@ -642,7 +642,7 @@ func genRandNextEpoch(currEpoch abi.ChainEpoch, deal *DealProposal, rbF func(cry return epochUndefined, xerrors.Errorf("failed to marshal proposal: %w", err) } - rb := rbF(crypto.DomainSeparationTag_MarketDealCronSeed, currEpoch-1, buf.Bytes()) + rb := rbF(crypto.DomainSeparationTag_MarketDealCronSeed, currEpoch, buf.Bytes()) // generate a random epoch in [baseEpoch, baseEpoch + DealUpdatesInterval) offset := binary.BigEndian.Uint64(rb) From 32052ca25b53ee7ec854d96d8c2a474621cbac8b Mon Sep 17 00:00:00 2001 From: ZenGround0 Date: Fri, 28 May 2021 16:03:08 -0400 Subject: [PATCH 2/2] Fix tests --- actors/builtin/market/market_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actors/builtin/market/market_test.go b/actors/builtin/market/market_test.go index 21ec5f152..b33afbd54 100644 --- a/actors/builtin/market/market_test.go +++ b/actors/builtin/market/market_test.go @@ -2898,7 +2898,7 @@ func (h *marketActorTestHarness) expectGetRandom(rt *mock.Runtime, deal *market. diff := uint64(requiredProcessEpoch - deal.StartEpoch) require.NoError(h.t, deal.MarshalCBOR(&dealBuf)) require.NoError(h.t, binary.Write(&epochBuf, binary.BigEndian, diff)) - rt.ExpectGetRandomnessBeacon(crypto.DomainSeparationTag_MarketDealCronSeed, rt.Epoch()-1, dealBuf.Bytes(), epochBuf.Bytes()) + rt.ExpectGetRandomnessTickets(crypto.DomainSeparationTag_MarketDealCronSeed, rt.Epoch(), dealBuf.Bytes(), epochBuf.Bytes()) } func (h *marketActorTestHarness) publishDeals(rt *mock.Runtime, minerAddrs *minerAddrs, publishDealReqs ...publishDealReq) []abi.DealID {