From bab49bc94fb4279026f7d28d0e1ffb5168ed2471 Mon Sep 17 00:00:00 2001 From: Ivo Kubjas Date: Fri, 19 Jan 2024 15:15:46 +0100 Subject: [PATCH 1/2] fix: remove shorthash override for same field --- std/recursion/wrapped_hash.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/std/recursion/wrapped_hash.go b/std/recursion/wrapped_hash.go index 6c5f3a8a3b..ab7b65137c 100644 --- a/std/recursion/wrapped_hash.go +++ b/std/recursion/wrapped_hash.go @@ -65,9 +65,6 @@ func NewShort(current, target *big.Int) (hash.Hash, error) { return nil, fmt.Errorf("no default mimc for scalar field: %s", current.String()) } hh := h.New() - if target.Cmp(current) == 0 { - return hh, nil - } nbBits := target.BitLen() if nbBits > current.BitLen() { nbBits = current.BitLen() @@ -165,9 +162,6 @@ func NewHash(api frontend.API, target *big.Int, bitmode bool) (stdhash.FieldHash if err != nil { return nil, fmt.Errorf("get mimc: %w", err) } - if api.Compiler().Field().Cmp(target) == 0 { - return &h, nil - } nbBits := target.BitLen() if nbBits > api.Compiler().FieldBitLen() { nbBits = api.Compiler().FieldBitLen() From dc4b0242b727bf7b2163a7785b7c36b3c9d944c9 Mon Sep 17 00:00:00 2001 From: Ivo Kubjas Date: Fri, 19 Jan 2024 15:37:56 +0100 Subject: [PATCH 2/2] test: add BN254 in BN254 --- std/recursion/plonk/verifier_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/std/recursion/plonk/verifier_test.go b/std/recursion/plonk/verifier_test.go index bd857e0299..7c930c2c1b 100644 --- a/std/recursion/plonk/verifier_test.go +++ b/std/recursion/plonk/verifier_test.go @@ -15,6 +15,7 @@ import ( "github.com/consensys/gnark/frontend/cs/scs" "github.com/consensys/gnark/std/algebra" "github.com/consensys/gnark/std/algebra/emulated/sw_bls12381" + "github.com/consensys/gnark/std/algebra/emulated/sw_bn254" "github.com/consensys/gnark/std/algebra/emulated/sw_bw6761" "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/std/math/emulated" @@ -299,6 +300,32 @@ func TestBLS12381InBN254Commit(t *testing.T) { assert.NoError(err) } +func TestBN254InBN254Commit(t *testing.T) { + + assert := test.NewAssert(t) + innerCcs, innerVK, innerWitness, innerProof := getInnerCommit(assert, ecc.BN254.ScalarField(), ecc.BN254.ScalarField()) + + // outer proof + circuitVk, err := ValueOfVerifyingKey[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine](innerVK) + assert.NoError(err) + circuitWitness, err := ValueOfWitness[sw_bn254.ScalarField](innerWitness) + assert.NoError(err) + circuitProof, err := ValueOfProof[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine](innerProof) + assert.NoError(err) + + outerCircuit := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + InnerWitness: PlaceholderWitness[sw_bn254.ScalarField](innerCcs), + Proof: PlaceholderProof[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine](innerCcs), + VerifyingKey: circuitVk, + } + outerAssignment := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + InnerWitness: circuitWitness, + Proof: circuitProof, + } + err = test.IsSolved(outerCircuit, outerAssignment, ecc.BN254.ScalarField()) + assert.NoError(err) +} + type InnerCircuitParametric struct { X frontend.Variable Y frontend.Variable `gnark:",public"`