-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathProver.hs
33 lines (27 loc) · 1.02 KB
/
Prover.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Bulletproofs.RangeProof.Prover (
generateProof,
generateProofUnsafe,
) where
import Protolude
import Control.Monad.Random (MonadRandom)
import Data.Curve.Weierstrass.SECP256K1 (PA, Fr)
import Bulletproofs.RangeProof.Internal
import qualified Bulletproofs.MultiRangeProof.Prover as MRP
-- | Prove that a value lies in a specific range
generateProof
:: (MonadRandom m)
=> Integer -- ^ Upper bound of the range we want to prove
-> (Fr, Fr)
-- ^ Values we want to prove in range and their blinding factors
-> ExceptT (RangeProofError Fr) m (RangeProof Fr PA)
generateProof upperBound (v, vBlinding) =
MRP.generateProof upperBound [(v, vBlinding)]
-- | Generate range proof from valid inputs
generateProofUnsafe
:: (MonadRandom m)
=> Integer -- ^ Upper bound of the range we want to prove
-> (Fr, Fr)
-- ^ Values we want to prove in range and their blinding factors
-> m (RangeProof Fr PA)
generateProofUnsafe upperBound (v, vBlinding) =
MRP.generateProofUnsafe upperBound [(v, vBlinding)]