Skip to content

Commit def0f87

Browse files
committed
refactor: migrate go-circom-prover-verifier to go-rapidsnark
1 parent f1d207d commit def0f87

File tree

7 files changed

+55
-29
lines changed

7 files changed

+55
-29
lines changed

crates/batcher/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fn main() {
1010
// Fix the missing dependency issue
1111
let mut get_cmd = Command::new("go");
1212
get_cmd.arg("get")
13-
.arg("github.com/yetanotherco/go-circom-prover-verifier/parsers@v0.0.0-20250618185957-f01a8a8ec4a6");
13+
.arg("github.com/iden3/go-rapidsnark/verifier@v0.0.5");
1414

1515
let _ = get_cmd.output(); // Run but don't fail if it has issues
1616

crates/batcher/go_verifiers_lib/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ go 1.22.3
55
require (
66
github.com/consensys/gnark v0.12.0
77
github.com/consensys/gnark-crypto v0.17.0
8-
github.com/yetanotherco/go-circom-prover-verifier v0.0.0-20250618185957-f01a8a8ec4a6
8+
github.com/iden3/go-rapidsnark/types v0.0.3
9+
github.com/iden3/go-rapidsnark/verifier v0.0.5
910
)
1011

1112
require (
@@ -14,6 +15,7 @@ require (
1415
github.com/consensys/bavard v0.1.29 // indirect
1516
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
1617
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
18+
github.com/iden3/go-iden3-crypto v0.0.17 // indirect
1719
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b // indirect
1820
github.com/mattn/go-colorable v0.1.13 // indirect
1921
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -26,5 +28,3 @@ require (
2628
golang.org/x/sys v0.30.0 // indirect
2729
rsc.io/tmplfunc v0.0.3 // indirect
2830
)
29-
30-
require github.com/ethereum/go-ethereum v1.14.0 // indirect

crates/batcher/go_verifiers_lib/go.sum

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ github.com/consensys/gnark-crypto v0.17.0/go.mod h1:A2URlMHUT81ifJ0UlLzSlm7TmnE3
1111
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
1212
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1313
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14-
github.com/ethereum/go-ethereum v1.14.0/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8=
1514
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
1615
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
1716
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -20,6 +19,12 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
2019
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k=
2120
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
2221
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
22+
github.com/iden3/go-iden3-crypto v0.0.17 h1:NdkceRLJo/pI4UpcjVah4lN/a3yzxRUGXqxbWcYh9mY=
23+
github.com/iden3/go-iden3-crypto v0.0.17/go.mod h1:dLpM4vEPJ3nDHzhWFXDjzkn1qHoBeOT/3UEhXsEsP3E=
24+
github.com/iden3/go-rapidsnark/types v0.0.3 h1:f0s1Qdut1qHe1O67+m+xUVRBPwSXnq5j0xSrBi0jqM4=
25+
github.com/iden3/go-rapidsnark/types v0.0.3/go.mod h1:ApgcaUxKIgSRA6fAeFxK7p+lgXXfG4oA2HN5DhFlfF4=
26+
github.com/iden3/go-rapidsnark/verifier v0.0.5 h1:J7y0ovrEjDQoWtZmlrp4tgGng1A9faMeYsQH4igAEqA=
27+
github.com/iden3/go-rapidsnark/verifier v0.0.5/go.mod h1:KgL3Yr9NehlFDI4EIWVLE3UDUi8ulyjbp7HcXSBfiGI=
2328
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b h1:AvQTK7l0PTHODD06PVQX1Tn2o29sRIaKIDOvTJmKurY=
2429
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b/go.mod h1:e0JHb27/P6WorCJS3YolbY5XffS4PGBuoW38OthLkDs=
2530
github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
@@ -45,7 +50,6 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
4550
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
4651
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
4752
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
48-
github.com/yetanotherco/go-circom-prover-verifier v0.0.0-20250618185957-f01a8a8ec4a6/go.mod h1:A6TUcQ/lvmwAA/Ir8kRMIX5NcIglk8iNKeHF8Nj6Hu0=
4953
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
5054
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
5155
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=

crates/batcher/go_verifiers_lib/verifier.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ import "C"
1313

1414
import (
1515
"bytes"
16-
"github.com/yetanotherco/go-circom-prover-verifier/parsers"
17-
"github.com/yetanotherco/go-circom-prover-verifier/verifier"
16+
"encoding/json"
17+
"github.com/iden3/go-rapidsnark/types"
18+
"github.com/iden3/go-rapidsnark/verifier"
19+
1820
"log"
1921
"unsafe"
2022

@@ -126,23 +128,29 @@ func VerifyCircomGroth16ProofBN128(proofBytesRef C.ListRef, pubInputBytesRef C.L
126128
pubInputBytes := listRefToBytes(pubInputBytesRef)
127129
verificationKeyBytes := listRefToBytes(verificationKeyBytesRef)
128130

129-
proof, err := parsers.ParseProof(proofBytes)
131+
proofData := &types.ProofData{}
132+
err := json.Unmarshal(proofBytes, proofData)
130133
if err != nil {
131-
log.Printf("Could not parse proof: %v", err)
134+
log.Printf("Could not marshal proof: %v", err)
132135
return false
133136
}
134137

135-
public, err := parsers.ParsePublicSignals(pubInputBytes)
138+
var pubSignals []string
139+
err = json.Unmarshal(pubInputBytes, &pubSignals)
136140
if err != nil {
137-
log.Printf("Could not parse public signals: %v", err)
141+
log.Printf("Error unmarshaling JSON: %v", err)
138142
return false
139143
}
140144

141-
vk, err := parsers.ParseVk(verificationKeyBytes)
145+
zkProof := types.ZKProof{
146+
Proof: proofData,
147+
PubSignals: pubSignals,
148+
}
149+
150+
err = verifier.VerifyGroth16(zkProof, verificationKeyBytes)
142151
if err != nil {
143-
log.Printf("Could not parse verification key: %v", err)
152+
log.Printf("Could not verify Groth16 proof: %v", err)
144153
return false
145154
}
146-
147-
return verifier.Verify(vk, proof, public)
155+
return true
148156
}

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ require (
1818
github.com/consensys/gnark v0.12.0
1919
github.com/consensys/gnark-crypto v0.17.0
2020
github.com/fxamacker/cbor/v2 v2.7.0
21+
github.com/iden3/go-rapidsnark/types v0.0.3
22+
github.com/iden3/go-rapidsnark/verifier v0.0.5
2123
github.com/rs/zerolog v1.33.0
2224
github.com/ugorji/go/codec v1.2.12
23-
github.com/yetanotherco/go-circom-prover-verifier v0.0.0-20250618185957-f01a8a8ec4a6
2425
gopkg.in/yaml.v3 v3.0.1
2526
)
2627

@@ -61,6 +62,7 @@ require (
6162
github.com/google/uuid v1.6.0 // indirect
6263
github.com/gorilla/websocket v1.5.1 // indirect
6364
github.com/holiman/uint256 v1.2.4 // indirect
65+
github.com/iden3/go-iden3-crypto v0.0.17 // indirect
6466
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b // indirect
6567
github.com/klauspost/compress v1.17.7 // indirect
6668
github.com/lmittmann/tint v1.0.4 // indirect

go.sum

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
190190
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
191191
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
192192
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
193+
github.com/iden3/go-iden3-crypto v0.0.17 h1:NdkceRLJo/pI4UpcjVah4lN/a3yzxRUGXqxbWcYh9mY=
194+
github.com/iden3/go-iden3-crypto v0.0.17/go.mod h1:dLpM4vEPJ3nDHzhWFXDjzkn1qHoBeOT/3UEhXsEsP3E=
195+
github.com/iden3/go-rapidsnark/types v0.0.3 h1:f0s1Qdut1qHe1O67+m+xUVRBPwSXnq5j0xSrBi0jqM4=
196+
github.com/iden3/go-rapidsnark/types v0.0.3/go.mod h1:ApgcaUxKIgSRA6fAeFxK7p+lgXXfG4oA2HN5DhFlfF4=
197+
github.com/iden3/go-rapidsnark/verifier v0.0.5 h1:J7y0ovrEjDQoWtZmlrp4tgGng1A9faMeYsQH4igAEqA=
198+
github.com/iden3/go-rapidsnark/verifier v0.0.5/go.mod h1:KgL3Yr9NehlFDI4EIWVLE3UDUi8ulyjbp7HcXSBfiGI=
193199
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b h1:AvQTK7l0PTHODD06PVQX1Tn2o29sRIaKIDOvTJmKurY=
194200
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b/go.mod h1:e0JHb27/P6WorCJS3YolbY5XffS4PGBuoW38OthLkDs=
195201
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
@@ -317,8 +323,6 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
317323
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
318324
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
319325
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
320-
github.com/yetanotherco/go-circom-prover-verifier v0.0.0-20250618185957-f01a8a8ec4a6 h1:Agf6nDeTEJelBU/v7QXB2iHx/+7e1L9Gua/IfVG6Bxg=
321-
github.com/yetanotherco/go-circom-prover-verifier v0.0.0-20250618185957-f01a8a8ec4a6/go.mod h1:A6TUcQ/lvmwAA/Ir8kRMIX5NcIglk8iNKeHF8Nj6Hu0=
322326
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
323327
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
324328
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=

operator/pkg/operator.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"encoding/hex"
77
"encoding/json"
88
"fmt"
9-
"github.com/yetanotherco/go-circom-prover-verifier/parsers"
10-
"github.com/yetanotherco/go-circom-prover-verifier/verifier"
9+
rapidsnark_types "github.com/iden3/go-rapidsnark/types"
10+
"github.com/iden3/go-rapidsnark/verifier"
1111
"log"
1212
"math/big"
1313
"net/http"
@@ -618,23 +618,31 @@ func (o *Operator) verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, v
618618

619619
// verifyCircomGroth16Bn128Proof verifies a Circom Groth16 proof using BN128 curve.
620620
func (o *Operator) verifyCircomGroth16Bn128Proof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool {
621-
proof, err := parsers.ParseProof(proofBytes)
621+
proofData := &rapidsnark_types.ProofData{}
622+
err := json.Unmarshal(proofBytes, proofData)
622623
if err != nil {
623-
o.Logger.Infof("Could not parse proof: %v", err)
624+
o.Logger.Infof("Could not marshal proof: %v", err)
624625
return false
625626
}
626-
public, err := parsers.ParsePublicSignals(pubInputBytes)
627+
628+
var pubSignals []string
629+
err = json.Unmarshal(pubInputBytes, &pubSignals)
627630
if err != nil {
628-
o.Logger.Infof("Could not parse public signals: %v", err)
631+
o.Logger.Infof("Could not marshal public signals: %v", err)
629632
return false
630633
}
631-
vk, err := parsers.ParseVk(verificationKeyBytes)
634+
635+
zkProof := rapidsnark_types.ZKProof{
636+
Proof: proofData,
637+
PubSignals: pubSignals,
638+
}
639+
640+
err = verifier.VerifyGroth16(zkProof, verificationKeyBytes)
632641
if err != nil {
633-
o.Logger.Infof("Could not parse verification key: %v", err)
642+
o.Logger.Infof("Could not verify Circom Groth16 BN128 proof: %v", err)
634643
return false
635644
}
636-
637-
return verifier.Verify(vk, proof, public)
645+
return true
638646
}
639647

640648
func (o *Operator) SignTaskResponse(batchIdentifierHash [32]byte) *bls.Signature {

0 commit comments

Comments
 (0)