From 9751b0de5e1f49f77d4b021da44acd3418ce0cb3 Mon Sep 17 00:00:00 2001 From: Eric Mastro Date: Thu, 9 Feb 2023 14:19:08 +1100 Subject: [PATCH] add slot index to Slot, support retrieval Adds slotIndex to the Slot struct and allows retrieval via getRequestFromSlotId. --- contracts/Marketplace.sol | 7 +++++-- test/Marketplace.test.js | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index 36f5c49..41d4acb 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -31,6 +31,7 @@ contract Marketplace is Collateral, Proofs, StateRetrieval { struct Slot { SlotState state; RequestId requestId; + uint256 slotIndex; address host; } @@ -77,6 +78,7 @@ contract Marketplace is Collateral, Proofs, StateRetrieval { SlotId slotId = Requests.slotId(requestId, slotIndex); Slot storage slot = _slots[slotId]; slot.requestId = requestId; + slot.slotIndex = slotIndex; require(slotState(slotId) == SlotState.Free, "Slot is not free"); @@ -148,6 +150,7 @@ contract Marketplace is Collateral, Proofs, StateRetrieval { slot.state = SlotState.Free; slot.host = address(0); slot.requestId = RequestId.wrap(0); + slot.slotIndex = 0; context.slotsFilled -= 1; emit SlotFreed(requestId, slotId); @@ -220,10 +223,10 @@ contract Marketplace is Collateral, Proofs, StateRetrieval { public view slotIsNotFree(slotId) - returns (Request memory) + returns (Request memory, uint256 slotIndex) { Slot storage slot = _slots[slotId]; - return _requests[slot.requestId]; + return (_requests[slot.requestId], slot.slotIndex); } modifier requestIsKnown(RequestId requestId) { diff --git a/test/Marketplace.test.js b/test/Marketplace.test.js index 029da1c..8a529a2 100644 --- a/test/Marketplace.test.js +++ b/test/Marketplace.test.js @@ -150,7 +150,7 @@ describe("Marketplace", function () { await marketplace.fillSlot(slot.request, slot.index, proof) expect( await marketplace.getRequestFromSlotId(slotId(slot)) - ).to.be.request(request) + ).to.be.request((request, slot.index)) }) it("is rejected when proof is incorrect", async function () {