Skip to content
This repository has been archived by the owner on Jun 6, 2023. It is now read-only.

Commit

Permalink
fix handling of deal state initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
whyrusleeping committed May 5, 2020
1 parent a283152 commit dc3d6cc
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions actors/builtin/market/market_actor.go
Original file line number Diff line number Diff line change
Expand Up @@ -284,22 +284,26 @@ func (a Actor) VerifyDealsOnSectorProveCommit(rt Runtime, params *VerifyDealsOnS
}

for _, dealID := range params.DealIDs {
deal, found, err := states.Get(dealID)
_, found, err := states.Get(dealID)
if err != nil {
rt.Abortf(exitcode.ErrIllegalState, "get deal %v", err)
}
if !found {
rt.Abortf(exitcode.ErrIllegalArgument, "failed to find deal given in params: %d", dealID)
if found {
rt.Abortf(exitcode.ErrIllegalArgument, "given deal already included in another sector: %d", dealID)
}

proposal, err := proposals.Get(dealID)
if err != nil {
rt.Abortf(exitcode.ErrIllegalState, "get deal %v", err)
}

validateDealCanActivate(rt, minerAddr, params.SectorExpiry, deal, proposal)
validateDealCanActivate(rt, minerAddr, params.SectorExpiry, proposal)

deal.SectorStartEpoch = rt.CurrEpoch()
err = states.Set(dealID, deal)
err = states.Set(dealID, &DealState{
SectorStartEpoch: rt.CurrEpoch(),
LastUpdatedEpoch: epochUndefined,
SlashEpoch: epochUndefined,
})
if err != nil {
rt.Abortf(exitcode.ErrIllegalState, "set deal %v", err)
}
Expand Down Expand Up @@ -553,15 +557,11 @@ func (a Actor) CronTick(rt Runtime, params *adt.EmptyValue) *adt.EmptyValue {
// Checks
////////////////////////////////////////////////////////////////////////////////

func validateDealCanActivate(rt Runtime, minerAddr addr.Address, sectorExpiration abi.ChainEpoch, deal *DealState, proposal *DealProposal) {
func validateDealCanActivate(rt Runtime, minerAddr addr.Address, sectorExpiration abi.ChainEpoch, proposal *DealProposal) {
if proposal.Provider != minerAddr {
rt.Abortf(exitcode.ErrIllegalArgument, "Deal has incorrect miner as its provider.")
}

if deal.SectorStartEpoch != epochUndefined {
rt.Abortf(exitcode.ErrIllegalArgument, "Deal has already appeared in proven sector.")
}

if rt.CurrEpoch() > proposal.StartEpoch {
rt.Abortf(exitcode.ErrIllegalArgument, "Deal start epoch has already elapsed.")
}
Expand Down

0 comments on commit dc3d6cc

Please sign in to comment.