diff --git a/contracts/Marketplace.sol b/contracts/Marketplace.sol index e0f3f8d..4ea1b6f 100644 --- a/contracts/Marketplace.sol +++ b/contracts/Marketplace.sol @@ -95,6 +95,10 @@ contract Marketplace is Proofs, StateRetrieval, Endian { request.expiry > 0 && request.expiry < request.ask.duration, "Expiry not in range" ); + require( + request.ask.maxSlotLoss <= request.ask.slots, + "maxSlotLoss exceeds slots" + ); _requests[id] = request; _requestContexts[id].endsAt = block.timestamp + request.ask.duration; diff --git a/test/Marketplace.test.js b/test/Marketplace.test.js index 38e75f6..413ce68 100644 --- a/test/Marketplace.test.js +++ b/test/Marketplace.test.js @@ -185,6 +185,13 @@ describe("Marketplace", function () { ) }) + it("is rejected when maxSlotLoss exceeds slots", async function () { + request.ask.maxSlotLoss = request.ask.slots + 1 + await expect(marketplace.requestStorage(request)).to.be.revertedWith( + "maxSlotLoss exceeds slots" + ) + }) + it("rejects resubmission of request", async function () { await token.approve(marketplace.address, price(request) * 2) await marketplace.requestStorage(request)