module Bulletproofs.RangeProof.Prover (
generateProof,
generateProofUnsafe,
) where
import Protolude
import Crypto.Random.Types (MonadRandom(..))
import PrimeField (PrimeField(..), toInt)
import Bulletproofs.RangeProof.Internal
import qualified Bulletproofs.MultiRangeProof.Prover as MRP
generateProof
:: (KnownNat p, MonadRandom m)
=> Integer
-> (PrimeField p, PrimeField p)
-> ExceptT (RangeProofError (PrimeField p)) m (RangeProof (PrimeField p))
generateProof upperBound (v, vBlinding) =
MRP.generateProof upperBound [(v, vBlinding)]
generateProofUnsafe
:: (KnownNat p, MonadRandom m)
=> Integer
-> (PrimeField p, PrimeField p)
-> m (RangeProof (PrimeField p))
generateProofUnsafe upperBound (v, vBlinding) =
MRP.generateProofUnsafe upperBound [(v, vBlinding)]