From 230e7276e271ce53bce36fffdbb25a50621c33b9 Mon Sep 17 00:00:00 2001 From: Eric Mastro Date: Thu, 22 Jun 2023 06:18:33 +1000 Subject: [PATCH] Support slot queue (#61) * feat: add request expiry to StorageRequested event * add slot index to SlotFreed event * copy slotIndex before delete for emit * Update tests --- contracts/Marketplace.sol | 17 ++++++++++------- test/Marketplace.test.js | 6 +++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index b98d03c..f02c560 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -83,7 +83,7 @@ contract Marketplace is Proofs, StateRetrieval { _marketplaceTotals.received += amount; _transferFrom(msg.sender, amount); - emit StorageRequested(id, request.ask); + emit StorageRequested(id, request.ask, request.expiry); } function fillSlot( @@ -117,7 +117,7 @@ contract Marketplace is Proofs, StateRetrieval { _addToMySlots(slot.host, slotId); - emit SlotFilled(requestId, slotIndex, slotId); + emit SlotFilled(requestId, slotIndex); if (context.slotsFilled == request.ask.slots) { context.state = RequestState.Started; context.startedAt = block.timestamp; @@ -168,9 +168,10 @@ contract Marketplace is Proofs, StateRetrieval { _removeFromMySlots(slot.host, slotId); + uint256 slotIndex = slot.slotIndex; delete _slots[slotId]; context.slotsFilled -= 1; - emit SlotFreed(requestId, slotId); + emit SlotFreed(requestId, slotIndex); _resetMissingProofs(slotId); Request storage request = _requests[requestId]; @@ -315,15 +316,17 @@ contract Marketplace is Proofs, StateRetrieval { require(token.transferFrom(sender, receiver, amount), "Transfer failed"); } - event StorageRequested(RequestId requestId, Ask ask); + event StorageRequested(RequestId requestId, Ask ask, uint256 expiry); event RequestFulfilled(RequestId indexed requestId); event RequestFailed(RequestId indexed requestId); event SlotFilled( RequestId indexed requestId, - uint256 indexed slotIndex, - SlotId slotId + uint256 slotIndex + ); + event SlotFreed( + RequestId indexed requestId, + uint256 slotIndex ); - event SlotFreed(RequestId indexed requestId, SlotId slotId); event RequestCancelled(RequestId indexed requestId); struct MarketplaceTotals { diff --git a/test/Marketplace.test.js b/test/Marketplace.test.js index 68af1f5..4b170c4 100644 --- a/test/Marketplace.test.js +++ b/test/Marketplace.test.js @@ -124,7 +124,7 @@ describe("Marketplace", function () { await token.approve(marketplace.address, price(request)) await expect(marketplace.requestStorage(request)) .to.emit(marketplace, "StorageRequested") - .withArgs(requestId(request), askToArray(request.ask)) + .withArgs(requestId(request), askToArray(request.ask), request.expiry) }) it("allows retrieval of request details", async function () { @@ -171,7 +171,7 @@ describe("Marketplace", function () { it("emits event when slot is filled", async function () { await expect(marketplace.fillSlot(slot.request, slot.index, proof)) .to.emit(marketplace, "SlotFilled") - .withArgs(slot.request, slot.index, slotId(slot)) + .withArgs(slot.request, slot.index) }) it("allows retrieval of host that filled slot", async function () { @@ -378,7 +378,7 @@ describe("Marketplace", function () { await waitUntilStarted(marketplace, request, proof, token) await expect(await marketplace.freeSlot(id)) .to.emit(marketplace, "SlotFreed") - .withArgs(slot.request, id) + .withArgs(slot.request, slot.index) }) })