diff --git a/internal/gkr/test_vectors/generate.go b/internal/gkr/test_vectors/generate.go index 3f68ff3d51..91e2b53c76 100644 --- a/internal/gkr/test_vectors/generate.go +++ b/internal/gkr/test_vectors/generate.go @@ -1,105 +1,27 @@ package main import ( - "fmt" - "os" - "path/filepath" "sync" - "github.com/consensys/gnark-crypto/ecc" - "github.com/consensys/gnark/frontend" - "github.com/consensys/gnark/frontend/cs/scs" gkr "github.com/consensys/gnark/internal/gkr/small_rational" _ "github.com/consensys/gnark/std/hash/mimc" // register MIMC hash - gkr_poseidon2 "github.com/consensys/gnark/std/hash/poseidon2/gkr-poseidon2" ) func main() { tasks := []func() error{ gkr.GenerateSumcheckVectors, gkr.GenerateVectors, - generateGkrSolveTestdata, } var wg sync.WaitGroup wg.Add(len(tasks)) for _, f := range tasks { - go func() { - assertNoError(f()) + go func(f func() error) { + if err := f(); err != nil { + panic(err) + } wg.Done() - }() + }(f) } wg.Wait() } - -func assertNoError(err error) { - if err != nil { - panic(err) - } -} - -// gkrPoseidon2Circuit computes H(X,Y) using gkr-poseidon2. -type gkrPoseidon2Circuit struct { - X, Y frontend.Variable -} - -func (c *gkrPoseidon2Circuit) Define(api frontend.API) error { - h, err := gkr_poseidon2.New(api) - if err != nil { - return err - } - h.Write(c.X, c.Y) - api.AssertIsDifferent(h.Sum(), 0) - return nil -} - -// generateGkrSolveTestdata compiles a small GKR-Poseidon2 validator circuit for -// BLS12-377 and writes its constraint system and a matching witness to the -// integration_test/ directory. The test there reads them back in a process that -// does not import gkrapi and calls Solve, exercising the full CBOR round-trip -// of the GKR proving schedule end-to-end. -func generateGkrSolveTestdata() error { - fmt.Println("generating GKR-Poseidon2 integration testdata") - - assignment := gkrPoseidon2Circuit{1, 2} - var circuit gkrPoseidon2Circuit - - ccs, err := frontend.Compile(ecc.BLS12_377.ScalarField(), scs.NewBuilder, &circuit) - if err != nil { - return fmt.Errorf("failed to compile circuit: %w", err) - } - - w, err := frontend.NewWitness(&assignment, ecc.BLS12_377.ScalarField()) - if err != nil { - return fmt.Errorf("failed to build witness: %w", err) - } - - const testDataDir = "integration_test" - if err = os.MkdirAll(testDataDir, 0755); err != nil { - return fmt.Errorf("failed to create testdata directory: %w", err) - } - - scsPath := filepath.Join(testDataDir, "gkr_poseidon2.scs") - scsFile, err := os.Create(scsPath) - if err != nil { - return fmt.Errorf("failed to create scs file: %w", err) - } - defer scsFile.Close() - if _, err = ccs.WriteTo(scsFile); err != nil { - return fmt.Errorf("failed to write constraint system: %w", err) - } - fmt.Printf("\twrote %s\n", scsPath) - - wtnsPath := filepath.Join(testDataDir, "gkr_poseidon2.wtns") - wtnsFile, err := os.Create(wtnsPath) - if err != nil { - return fmt.Errorf("failed to create witness file: %w", err) - } - defer wtnsFile.Close() - if _, err = w.WriteTo(wtnsFile); err != nil { - return fmt.Errorf("failed to write witness: %w", err) - } - fmt.Printf("\twrote %s\n", wtnsPath) - - return nil -} diff --git a/internal/gkr/test_vectors/integration_test/gkr_poseidon2.scs b/internal/gkr/test_vectors/integration_test/gkr_poseidon2.scs deleted file mode 100644 index 43cb987c64..0000000000 Binary files a/internal/gkr/test_vectors/integration_test/gkr_poseidon2.scs and /dev/null differ diff --git a/internal/gkr/test_vectors/integration_test/gkr_poseidon2.wtns b/internal/gkr/test_vectors/integration_test/gkr_poseidon2.wtns deleted file mode 100644 index 887ff827b2..0000000000 Binary files a/internal/gkr/test_vectors/integration_test/gkr_poseidon2.wtns and /dev/null differ diff --git a/internal/gkr/test_vectors/integration_test/integration_test.go b/internal/gkr/test_vectors/integration_test/integration_test.go deleted file mode 100644 index d993e39c67..0000000000 --- a/internal/gkr/test_vectors/integration_test/integration_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package integration_test - -import ( - "os" - "testing" - - "github.com/consensys/gnark-crypto/ecc" - _ "github.com/consensys/gnark-crypto/ecc/bls12-377/fr/mimc" // register native MIMC for GKR Fiat-Shamir - "github.com/consensys/gnark/backend/plonk" - "github.com/consensys/gnark/backend/witness" - "github.com/stretchr/testify/require" -) - -func TestGkrIntegration(t *testing.T) { - ccs := plonk.NewCS(ecc.BLS12_377) - scsFile, err := os.Open("gkr_poseidon2.scs") - require.NoError(t, err) - defer scsFile.Close() - _, err = ccs.ReadFrom(scsFile) - require.NoError(t, err) - - w, err := witness.New(ecc.BLS12_377.ScalarField()) - require.NoError(t, err) - wtnsFile, err := os.Open("gkr_poseidon2.wtns") - require.NoError(t, err) - defer wtnsFile.Close() - _, err = w.ReadFrom(wtnsFile) - require.NoError(t, err) - - _, err = ccs.Solve(w) - require.NoError(t, err) -} diff --git a/std/multicommit/nativecommit_test.go b/std/multicommit/nativecommit_test.go index 63f3c1f0c6..f9ebafc3e1 100644 --- a/std/multicommit/nativecommit_test.go +++ b/std/multicommit/nativecommit_test.go @@ -58,24 +58,6 @@ func TestMultipleCommitments(t *testing.T) { assert.ProverSucceeded(&circuit, &assignment, test.WithCurves(ecc.BN254)) } -type noCommitVariable struct { - X frontend.Variable -} - -func (c *noCommitVariable) Define(api frontend.API) error { - WithCommitment(api, func(api frontend.API, commitment frontend.Variable) error { return nil }) - return nil -} - -// TestNoCommitVariable checks that a circuit that doesn't use the commitment variable -// compiles and prover succeeds. This is due to the randomization of the commitment. -func TestNoCommitVariable(t *testing.T) { - circuit := noCommitVariable{} - assignment := noCommitVariable{X: 10} - assert := test.NewAssert(t) - assert.ProverSucceeded(&circuit, &assignment, test.WithCurves(ecc.BN254)) -} - type wideCommitment struct { X frontend.Variable withCommitment bool