[marketplace] require storage proofs when fulfilling request
This commit is contained in:
parent
83291ef06b
commit
f3b969fd7c
|
@ -60,6 +60,11 @@ contract Marketplace is Collateral, Proofs {
|
||||||
require(balanceOf(msg.sender) >= collateral, "Insufficient collateral");
|
require(balanceOf(msg.sender) >= collateral, "Insufficient collateral");
|
||||||
_lock(msg.sender, requestId);
|
_lock(msg.sender, requestId);
|
||||||
|
|
||||||
|
_expectProofs(
|
||||||
|
requestId,
|
||||||
|
request.ask.proofProbability,
|
||||||
|
request.ask.duration
|
||||||
|
);
|
||||||
_submitProof(requestId, proof);
|
_submitProof(requestId, proof);
|
||||||
|
|
||||||
state.fulfilled = true;
|
state.fulfilled = true;
|
||||||
|
@ -123,6 +128,18 @@ contract Marketplace is Collateral, Proofs {
|
||||||
return requestState[requestId].selectedOffer;
|
return requestState[requestId].selectedOffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function proofPeriod() public view returns (uint256) {
|
||||||
|
return _period();
|
||||||
|
}
|
||||||
|
|
||||||
|
function proofTimeout() public view returns (uint256) {
|
||||||
|
return _timeout();
|
||||||
|
}
|
||||||
|
|
||||||
|
function proofEnd(bytes32 contractId) public view returns (uint256) {
|
||||||
|
return _end(contractId);
|
||||||
|
}
|
||||||
|
|
||||||
struct Request {
|
struct Request {
|
||||||
address client;
|
address client;
|
||||||
Ask ask;
|
Ask ask;
|
||||||
|
|
|
@ -59,18 +59,6 @@ contract Storage is Collateral, Marketplace {
|
||||||
require(token.transfer(offer.host, offer.price), "Payment failed");
|
require(token.transfer(offer.host, offer.price), "Payment failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
function proofPeriod() public view returns (uint256) {
|
|
||||||
return _period();
|
|
||||||
}
|
|
||||||
|
|
||||||
function proofTimeout() public view returns (uint256) {
|
|
||||||
return _timeout();
|
|
||||||
}
|
|
||||||
|
|
||||||
function proofEnd(bytes32 contractId) public view returns (uint256) {
|
|
||||||
return _end(contractId);
|
|
||||||
}
|
|
||||||
|
|
||||||
function missingProofs(bytes32 contractId) public view returns (uint256) {
|
function missingProofs(bytes32 contractId) public view returns (uint256) {
|
||||||
return _missed(contractId);
|
return _missed(contractId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,6 +115,11 @@ describe("Marketplace", function () {
|
||||||
await expect(marketplace.withdraw()).to.be.revertedWith("Account locked")
|
await expect(marketplace.withdraw()).to.be.revertedWith("Account locked")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("starts requiring storage proofs", async function () {
|
||||||
|
await marketplace.fulfillRequest(requestId(request), proof)
|
||||||
|
expect(await marketplace.proofEnd(requestId(request))).to.be.gt(0)
|
||||||
|
})
|
||||||
|
|
||||||
it("is rejected when proof is incorrect", async function () {
|
it("is rejected when proof is incorrect", async function () {
|
||||||
let invalid = hexlify([])
|
let invalid = hexlify([])
|
||||||
await expect(
|
await expect(
|
||||||
|
|
Loading…
Reference in New Issue