From cce70b44a171bd53333e980d6272ffdcc5c50a13 Mon Sep 17 00:00:00 2001 From: Eric Mastro Date: Fri, 16 Sep 2022 15:00:54 +1000 Subject: [PATCH] reorder fillSlot and freeSlot to be chronological --- contracts/Marketplace.sol | 64 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index cf38276..cf1d448 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -47,38 +47,6 @@ contract Marketplace is Collateral, Proofs { emit StorageRequested(id, request.ask); } - function _freeSlot( - bytes32 slotId - ) internal marketplaceInvariant { - Slot storage slot = _slot(slotId); - bytes32 requestId = slot.requestId; - RequestContext storage context = requestContexts[requestId]; - require(context.state == RequestState.Started, "Invalid state"); - - // TODO: burn host's slot collateral except for repair costs + mark proof - // missing reward - // Slot collateral is not yet implemented as the design decision was - // not finalised. - - _unexpectProofs(slotId); - - slot.host = address(0); - slot.requestId = 0; - context.slotsFilled -= 1; - emit SlotFreed(requestId, slotId); - - Request memory request = _request(requestId); - uint256 slotsLost = request.ask.slots - context.slotsFilled; - if (slotsLost > request.ask.maxSlotLoss) { - context.state = RequestState.Failed; - emit RequestFailed(requestId); - - // TODO: burn all remaining slot collateral (note: slot collateral not - // yet implemented) - // TODO: send client remaining funds - } - } - function fillSlot( bytes32 requestId, uint256 slotIndex, @@ -113,6 +81,38 @@ contract Marketplace is Collateral, Proofs { } } + function _freeSlot( + bytes32 slotId + ) internal marketplaceInvariant { + Slot storage slot = _slot(slotId); + bytes32 requestId = slot.requestId; + RequestContext storage context = requestContexts[requestId]; + require(context.state == RequestState.Started, "Invalid state"); + + // TODO: burn host's slot collateral except for repair costs + mark proof + // missing reward + // Slot collateral is not yet implemented as the design decision was + // not finalised. + + _unexpectProofs(slotId); + + slot.host = address(0); + slot.requestId = 0; + context.slotsFilled -= 1; + emit SlotFreed(requestId, slotId); + + Request memory request = _request(requestId); + uint256 slotsLost = request.ask.slots - context.slotsFilled; + if (slotsLost > request.ask.maxSlotLoss) { + context.state = RequestState.Failed; + emit RequestFailed(requestId); + + // TODO: burn all remaining slot collateral (note: slot collateral not + // yet implemented) + // TODO: send client remaining funds + } + } + function payoutSlot(bytes32 requestId, uint256 slotIndex) public marketplaceInvariant