Skip to content

Commit 74297f0

Browse files
authored
fix (batcher): gnark verifier bindings on linux (#271)
1 parent 71d4756 commit 74297f0

6 files changed

Lines changed: 166 additions & 41 deletions

File tree

batcher/build.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use std::{env, path::PathBuf, process::Command};
22

33
const GO_SRC: &str = "./gnark/verifier.go";
4-
const GO_OUT: &str = "libgo.a";
4+
const GO_OUT: &str = "libverifier.a";
5+
const GO_LIB: &str = "verifier";
56

67
fn main() {
78
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
@@ -20,5 +21,15 @@ fn main() {
2021
"cargo:rustc-link-search=native={}",
2122
out_dir.to_str().unwrap()
2223
);
23-
println!("cargo:rustc-link-lib=static=go");
24+
25+
if cfg!(target_os = "linux") {
26+
println!("cargo:rustc-link-lib=dylib=dl");
27+
println!("cargo:rustc-link-lib=dylib=rt");
28+
println!("cargo:rustc-link-lib=dylib=m");
29+
println!("cargo:rustc-link-lib=dylib=ssl");
30+
println!("cargo:rustc-link-lib=dylib=crypto");
31+
println!("cargo:rustc-link-arg=-Wl,--allow-multiple-definition");
32+
}
33+
34+
println!("cargo:rustc-link-lib=static={}", GO_LIB);
2435
}

batcher/gnark/go.mod

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,25 @@ require (
66
github.com/consensys/gnark v0.10.0
77
github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e
88
)
9+
10+
require (
11+
github.com/bits-and-blooms/bitset v1.8.0 // indirect
12+
github.com/blang/semver/v4 v4.0.0 // indirect
13+
github.com/consensys/bavard v0.1.13 // indirect
14+
github.com/davecgh/go-spew v1.1.1 // indirect
15+
github.com/fxamacker/cbor/v2 v2.5.0 // indirect
16+
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect
17+
github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 // indirect
18+
github.com/ingonyama-zk/iciclegnark v0.1.0 // indirect
19+
github.com/mattn/go-colorable v0.1.13 // indirect
20+
github.com/mattn/go-isatty v0.0.19 // indirect
21+
github.com/mmcloughlin/addchain v0.4.0 // indirect
22+
github.com/pmezard/go-difflib v1.0.0 // indirect
23+
github.com/rs/zerolog v1.30.0 // indirect
24+
github.com/stretchr/testify v1.8.4 // indirect
25+
github.com/x448/float16 v0.8.4 // indirect
26+
golang.org/x/sync v0.3.0 // indirect
27+
golang.org/x/sys v0.15.0 // indirect
28+
gopkg.in/yaml.v3 v3.0.1 // indirect
29+
rsc.io/tmplfunc v0.0.3 // indirect
30+
)

batcher/gnark/go.sum

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,72 @@
1-
github.com/consensys/gnark v0.9.0/go.mod h1:Sy9jJjIaGJFfNeupyNOR9Ei2IbAB6cfCO78DfG27YvM=
1+
github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c=
2+
github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
3+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
4+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
5+
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
6+
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
7+
github.com/consensys/gnark v0.10.0 h1:yhi6ThoeFP7WrH8zQDaO56WVXe9iJEBSkfrZ9PZxabw=
28
github.com/consensys/gnark v0.10.0/go.mod h1:VJU5JrrhZorbfDH+EUjcuFWr2c5z19tHPh8D6KVQksU=
3-
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
9+
github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e h1:MKdOuCiy2DAX1tMp2YsmtNDaqdigpY6B5cZQDJ9BvEo=
410
github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e/go.mod h1:wKqwsieaKPThcFkHe0d0zMsbHEUWFmZcG7KBCse210o=
11+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
12+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
13+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14+
github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE=
15+
github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo=
16+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
17+
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
18+
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
19+
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo=
20+
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
21+
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
22+
github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 h1:YxI1RTPzpFJ3MBmxPl3Bo0F7ume7CmQEC1M9jL6CT94=
23+
github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71/go.mod h1:kAK8/EoN7fUEmakzgZIYdWy1a2rBnpCaZLqSHwZWxEk=
24+
github.com/ingonyama-zk/iciclegnark v0.1.0 h1:88MkEghzjQBMjrYRJFxZ9oR9CTIpB8NG2zLeCJSvXKQ=
25+
github.com/ingonyama-zk/iciclegnark v0.1.0/go.mod h1:wz6+IpyHKs6UhMMoQpNqz1VY+ddfKqC/gRwR/64W6WU=
26+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
27+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
28+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
29+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
30+
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
31+
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
32+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
33+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
34+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
35+
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
36+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
37+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
38+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
39+
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
40+
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
41+
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
42+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
43+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
44+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
45+
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
46+
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
47+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
48+
github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c=
49+
github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w=
50+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
51+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
52+
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
53+
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
54+
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
55+
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
56+
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
57+
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
58+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
59+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
60+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
61+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
62+
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
63+
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
64+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
65+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
66+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
67+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
68+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
69+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
70+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
71+
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
72+
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=

batcher/gnark/verifier.go

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,55 @@
11
package main
22

3+
/*
4+
#include <stdlib.h>
5+
#include <stdint.h>
6+
7+
typedef struct ListRef {
8+
const uint8_t *ptr;
9+
uintptr_t len;
10+
} ListRef;
11+
12+
13+
*/
14+
import "C"
15+
316
import (
4-
"C"
517
"bytes"
618
"github.com/consensys/gnark-crypto/ecc"
719
"github.com/consensys/gnark/backend/groth16"
820
"github.com/consensys/gnark/backend/plonk"
921
"github.com/consensys/gnark/backend/witness"
1022
"log"
23+
"unsafe"
1124
)
1225

26+
func listRefToBytes(listRef C.ListRef) []byte {
27+
return C.GoBytes(unsafe.Pointer(listRef.ptr), C.int(listRef.len))
28+
}
29+
1330
func main() {}
1431

1532
//export VerifyPlonkProofBLS12_381
16-
func VerifyPlonkProofBLS12_381(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool {
33+
func VerifyPlonkProofBLS12_381(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool {
1734
return verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BLS12_381)
1835
}
1936

2037
//export VerifyPlonkProofBN254
21-
func VerifyPlonkProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool {
38+
func VerifyPlonkProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool {
2239
return verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254)
2340
}
2441

2542
//export VerifyGroth16ProofBN254
26-
func VerifyGroth16ProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool {
43+
func VerifyGroth16ProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool {
2744
return verifyGroth16Proof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254)
2845
}
2946

3047
// verifyPlonkProof contains the common proof verification logic.
31-
func verifyPlonkProof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool {
48+
func verifyPlonkProof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool {
49+
proofBytes := listRefToBytes(proofBytesRef)
50+
pubInputBytes := listRefToBytes(pubInputBytesRef)
51+
verificationKeyBytes := listRefToBytes(verificationKeyBytesRef)
52+
3253
proofReader := bytes.NewReader(proofBytes)
3354
proof := plonk.NewProof(curve)
3455
if _, err := proof.ReadFrom(proofReader); err != nil {
@@ -59,7 +80,11 @@ func verifyPlonkProof(proofBytes []byte, pubInputBytes []byte, verificationKeyBy
5980
}
6081

6182
// verifyGroth16Proof contains the common proof verification logic.
62-
func verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool {
83+
func verifyGroth16Proof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool {
84+
proofBytes := listRefToBytes(proofBytesRef)
85+
pubInputBytes := listRefToBytes(pubInputBytesRef)
86+
verificationKeyBytes := listRefToBytes(verificationKeyBytesRef)
87+
6388
proofReader := bytes.NewReader(proofBytes)
6489
proof := groth16.NewProof(curve)
6590
if _, err := proof.ReadFrom(proofReader); err != nil {
@@ -74,14 +99,14 @@ func verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, verificationKey
7499
return false
75100
}
76101
if _, err = pubInput.ReadFrom(pubInputReader); err != nil {
77-
log.Printf("Could not read PLONK public input: %v", err)
102+
log.Printf("Could not read Groth16 public input: %v", err)
78103
return false
79104
}
80105

81106
verificationKeyReader := bytes.NewReader(verificationKeyBytes)
82107
verificationKey := groth16.NewVerifyingKey(curve)
83108
if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil {
84-
log.Printf("Could not read PLONK verifying key from bytes: %v", err)
109+
log.Printf("Could not read Groth16 verifying key from bytes: %v", err)
85110
return false
86111
}
87112

batcher/src/gnark/mod.rs

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,70 @@
11
use crate::types::ProvingSystemId;
22

3+
#[derive(Copy, Clone, Debug)]
34
#[repr(C)]
4-
pub struct GoSlice {
5+
pub struct ListRef {
56
data: *const u8,
67
len: usize,
7-
cap: usize,
88
}
99

10-
impl From<Vec<u8>> for GoSlice {
10+
impl From<Vec<u8>> for ListRef {
1111
fn from(v: Vec<u8>) -> Self {
12-
Self::from(&v)
12+
Self::from(v.as_slice())
1313
}
1414
}
1515

16-
impl From<&Vec<u8>> for GoSlice {
16+
impl From<&Vec<u8>> for ListRef {
1717
fn from(v: &Vec<u8>) -> Self {
1818
Self::from(v.as_slice())
1919
}
2020
}
2121

22-
impl From<&[u8]> for GoSlice {
22+
impl From<&[u8]> for ListRef {
2323
fn from(v: &[u8]) -> Self {
2424
let len = v.len();
25-
let cap = v.len();
26-
let data = v.as_ptr();
27-
GoSlice { data, len, cap }
25+
let data = v.as_ptr().cast();
26+
ListRef{data, len}
2827
}
2928
}
3029

3130
pub fn verify_gnark(
3231
proving_system: &ProvingSystemId,
33-
proof: &[u8],
34-
public_input: &[u8],
35-
verification_key: &[u8],
32+
proof: &Vec<u8>,
33+
public_input: &Vec<u8>,
34+
verification_key: &Vec<u8>,
3635
) -> bool {
37-
let proof = GoSlice::from(proof);
38-
let public_input = GoSlice::from(public_input);
39-
let verification_key = GoSlice::from(verification_key);
36+
let proof = proof.into();
37+
let public_input = public_input.into();
38+
let verification_key = verification_key.into();
4039

4140
match proving_system {
4241
ProvingSystemId::GnarkPlonkBn254 => unsafe {
43-
VerifyPlonkProofBN254(&proof, &public_input, &verification_key)
42+
VerifyPlonkProofBN254(proof, public_input, verification_key)
4443
},
4544
ProvingSystemId::GnarkPlonkBls12_381 => unsafe {
46-
VerifyPlonkProofBLS12_381(&proof, &public_input, &verification_key)
45+
VerifyPlonkProofBLS12_381(proof, public_input, verification_key)
4746
},
4847
ProvingSystemId::Groth16Bn254 => unsafe {
49-
VerifyGroth16ProofBN254(&proof, &public_input, &verification_key)
48+
VerifyGroth16ProofBN254(proof, public_input, verification_key)
5049
},
5150
_ => panic!("Unsupported proving system"),
5251
}
5352
}
5453

5554
extern "C" {
5655
pub fn VerifyPlonkProofBLS12_381(
57-
proof: &GoSlice,
58-
public_input: &GoSlice,
59-
verification_key: &GoSlice,
56+
proof: ListRef,
57+
public_input: ListRef,
58+
verification_key: ListRef,
6059
) -> bool;
6160
pub fn VerifyPlonkProofBN254(
62-
proof: &GoSlice,
63-
public_input: &GoSlice,
64-
verification_key: &GoSlice,
61+
proof: ListRef,
62+
public_input: ListRef,
63+
verification_key: ListRef,
6564
) -> bool;
6665
pub fn VerifyGroth16ProofBN254(
67-
proof: &GoSlice,
68-
public_input: &GoSlice,
69-
verification_key: &GoSlice,
66+
proof: ListRef,
67+
public_input: ListRef,
68+
verification_key: ListRef,
7069
) -> bool;
7170
}

batcher/src/types/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ impl VerificationData {
5959
ProvingSystemId::GnarkPlonkBls12_381
6060
| ProvingSystemId::GnarkPlonkBn254
6161
| ProvingSystemId::Groth16Bn254 => {
62-
let vk = &self
62+
let vk = self
6363
.verification_key
6464
.as_ref()
6565
.expect("Verification key is required");
6666

67-
let pub_input = &self.pub_input.as_ref().expect("Public input is required");
67+
let pub_input = self.pub_input.as_ref().expect("Public input is required");
6868
let is_valid = verify_gnark(&self.proving_system, &self.proof, pub_input, vk);
6969
debug!("Gnark proof is valid: {}", is_valid);
7070
is_valid

0 commit comments

Comments
 (0)