From 604d4c87eb2e4faa0fd65d9c85186741d69be250 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Fri, 24 Jan 2025 10:13:45 +0100 Subject: [PATCH] Reject when probability is 0 (#212) * Reject when probability is 0 * Apply custom error --- contracts/Proofs.sol | 4 ++++ test/Proofs.test.js | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/contracts/Proofs.sol b/contracts/Proofs.sol index d0719e0..3b9d267 100644 --- a/contracts/Proofs.sol +++ b/contracts/Proofs.sol @@ -19,6 +19,7 @@ abstract contract Proofs is Periods { error Proofs_ProofNotMissing(); error Proofs_ProofNotRequired(); error Proofs_ProofAlreadyMarkedMissing(); + error Proofs_InvalidProbability(); ProofConfig private _config; IGroth16Verifier private _verifier; @@ -69,6 +70,9 @@ abstract contract Proofs is Periods { * and saves the required probability. */ function _startRequiringProofs(SlotId id, uint256 probability) internal { + if (probability == 0) { + revert Proofs_InvalidProbability(); + } _slotStarts[id] = block.timestamp; _probabilities[id] = probability; } diff --git a/test/Proofs.test.js b/test/Proofs.test.js index 4cd5b73..1c6931b 100644 --- a/test/Proofs.test.js +++ b/test/Proofs.test.js @@ -299,5 +299,12 @@ describe("Proofs", function () { await proofs.setSlotState(slotId, SlotState.Finished) expect(await proofs.isProofRequired(slotId)).to.be.false }) + + it("is rejected when probability is 0", async function () { + const probability = 0 + await expect( + proofs.startRequiringProofs(slotId, probability) + ).to.be.revertedWith("Proofs_InvalidProbability") + }) }) })