diff --git a/cabal.project b/cabal.project index 84dd92a..0215d42 100644 --- a/cabal.project +++ b/cabal.project @@ -25,7 +25,7 @@ source-repository-package source-repository-package type: git location: https://github.com/l-adic/arithmetic-circuits.git - tag: 7d06e2b5df24237d8d694ca842ff1cd7e6609b34 + tag: 7323152c3942c546d676ad6dcafe747f88d72663 --sha256: ldjPgZN7M+hsD6S7kx0QsVJsK8FbCl0d7oSyPHQRoaw= index-state: 2024-05-21T06:16:08Z diff --git a/factors/cli/Main.hs b/factors/cli/Main.hs index 3ae9ff9..824738e 100644 --- a/factors/cli/Main.hs +++ b/factors/cli/Main.hs @@ -3,8 +3,9 @@ module Main where import Circom.CLI (defaultMain) +import Circuit (BN128) import Protolude -import ZK.Factors (Fr, factors) +import ZK.Factors (factors) main :: IO () -main = defaultMain "circuit" $ factors @Fr +main = defaultMain "circuit" $ factors @BN128 diff --git a/factors/src/ZK/Factors.hs b/factors/src/ZK/Factors.hs index d3a53ff..56a79c7 100644 --- a/factors/src/ZK/Factors.hs +++ b/factors/src/ZK/Factors.hs @@ -1,20 +1,17 @@ -{-# LANGUAGE DataKinds #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - module ZK.Factors ( factors, - Fr, ) where import Circuit import Circuit.Language -import Data.Field.Galois (GaloisField, Prime) +import Data.Field.Galois (GaloisField) import Protolude -type Fr = Prime 21888242871839275222246405745257275088548364400416034343698204186575808495617 - -factors :: (GaloisField f, Hashable f) => ExprM f (Var Wire f 'TBool) +factors :: + (GaloisField f) => + (Hashable f) => + ExprM f (Var Wire f 'TBool) factors = do a <- var_ <$> fieldInput Private "a" b <- var_ <$> fieldInput Private "b" diff --git a/factors/test/Main.hs b/factors/test/Main.hs index f57b4e8..bb72774 100644 --- a/factors/test/Main.hs +++ b/factors/test/Main.hs @@ -10,11 +10,11 @@ import Protolude import R1CS (Witness (..)) import Test.Hspec import Test.QuickCheck -import ZK.Factors (Fr, factors) +import ZK.Factors (factors) main :: IO () main = hspec $ do - let BuilderState {bsVars, bsCircuit} = snd $ runCircuitBuilder (factors @Fr) + let BuilderState {bsVars, bsCircuit} = snd $ runCircuitBuilder (factors @BN128) program = mkCircomProgram bsVars bsCircuit vars = cpVars program describe "Factors" $ do diff --git a/wasm-solver/app/Main.hs b/wasm-solver/app/Main.hs index db24902..87b093f 100644 --- a/wasm-solver/app/Main.hs +++ b/wasm-solver/app/Main.hs @@ -1,22 +1,22 @@ module Main where import Circom.Solver qualified as Circom +import Circuit (BN128) import Data.Binary (decodeFile) import Data.IORef (IORef, newIORef) import Protolude import System.IO.Unsafe (unsafePerformIO) -import ZK.Factors (Fr) main :: IO () main = mempty -stateRef :: IORef (Circom.ProgramState Fr) +stateRef :: IORef (Circom.ProgramState BN128) stateRef = unsafePerformIO $ do st <- Circom.mkProgramState env newIORef st {-# NOINLINE stateRef #-} -env :: Circom.ProgramEnv Fr +env :: Circom.ProgramEnv BN128 env = unsafePerformIO $ do p <- decodeFile "/circuit.bin" pure $ Circom.mkProgramEnv p diff --git a/wasm-solver/cabal.project b/wasm-solver/cabal.project index a8304bc..f065b24 100644 --- a/wasm-solver/cabal.project +++ b/wasm-solver/cabal.project @@ -35,5 +35,5 @@ source-repository-package source-repository-package type: git location: https://github.com/l-adic/arithmetic-circuits.git - tag: 7d06e2b5df24237d8d694ca842ff1cd7e6609b34 + tag: 7323152c3942c546d676ad6dcafe747f88d72663 --sha256: ldjPgZN7M+hsD6S7kx0QsVJsK8FbCl0d7oSyPHQRoaw= diff --git a/wasm-solver/factors-solver.cabal b/wasm-solver/factors-solver.cabal index 6a8f5db..bce3c97 100644 --- a/wasm-solver/factors-solver.cabal +++ b/wasm-solver/factors-solver.cabal @@ -17,8 +17,8 @@ executable wasm-solver "-optl-Wl,--export=init,--export=getNVars,--export=getVersion,--export=getRawPrime,--export=writeSharedRWMemory,--export=readSharedRWMemory,--export=getFieldNumLen32,--export=setInputSignal,--export=getInputSignalSize,--export=getWitnessSize,--export=getWitness,--export=getInputSize" build-depends: - arithmetic-circuits:circom-compat + arithmetic-circuits + , arithmetic-circuits:circom-compat , base >=4.10 && <5 , binary - , factors , protolude