Skip to content

Commit 2d35593

Browse files
authored
upgrade the gnark version: a. support optimized r1cs loading; b. fix binary decomposition bug (#52)
1 parent f983ac0 commit 2d35593

File tree

7 files changed

+87
-31
lines changed

7 files changed

+87
-31
lines changed

circuit/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import "math/big"
44

55
var (
66
// is poseidon hash(empty account info)
7-
EmptyAccountLeafNodeHash, _ = new(big.Int).SetString("221970e0ba2d0b02a979e616cf186305372e73aab1e74f749772c9fef54dbf91", 16)
7+
EmptyAccountLeafNodeHash, _ = new(big.Int).SetString("163607ac0eaf42c44a36448da92f3a29f1943659df740f2490d47ddcd40ee672", 16)
88
)

go.mod

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ require (
77
github.com/aws/aws-sdk-go-v2/config v1.1.1
88
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.1
99
github.com/bnb-chain/zkbnb-smt v0.0.3-0.20221227064653-7422bfd51aa0
10-
github.com/consensys/gnark v0.7.0
11-
github.com/consensys/gnark-crypto v0.7.0
10+
github.com/consensys/gnark v0.8.0
11+
github.com/consensys/gnark-crypto v0.10.0
1212
github.com/go-redis/redis/v8 v8.11.5
1313
github.com/gocarina/gocsv v0.0.0-20230123225133-763e25b40669
1414
github.com/shopspring/decimal v1.3.1
@@ -29,8 +29,10 @@ require (
2929
github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect
3030
github.com/aws/smithy-go v1.13.5 // indirect
3131
github.com/beorn7/perks v1.0.1 // indirect
32+
github.com/blang/semver/v4 v4.0.0 // indirect
3233
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
3334
github.com/cespare/xxhash/v2 v2.2.0 // indirect
35+
github.com/consensys/bavard v0.1.13 // indirect
3436
github.com/davecgh/go-spew v1.1.1 // indirect
3537
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
3638
github.com/ethereum/go-ethereum v1.12.1 // indirect
@@ -40,6 +42,7 @@ require (
4042
github.com/go-logr/stdr v1.2.2 // indirect
4143
github.com/go-sql-driver/mysql v1.7.0 // indirect
4244
github.com/golang/protobuf v1.5.3 // indirect
45+
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
4346
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
4447
github.com/hashicorp/golang-lru v0.5.5-0.20221011183528-d4900dc688bf // indirect
4548
github.com/holiman/uint256 v1.2.3 // indirect
@@ -59,7 +62,7 @@ require (
5962
github.com/prometheus/client_model v0.3.0 // indirect
6063
github.com/prometheus/common v0.39.0 // indirect
6164
github.com/prometheus/procfs v0.9.0 // indirect
62-
github.com/rs/zerolog v1.26.1 // indirect
65+
github.com/rs/zerolog v1.29.0 // indirect
6366
github.com/spaolacci/murmur3 v1.1.0 // indirect
6467
github.com/x448/float16 v0.8.4 // indirect
6568
go.opentelemetry.io/otel v1.11.0 // indirect
@@ -73,7 +76,7 @@ require (
7376
go.opentelemetry.io/otel/trace v1.11.0 // indirect
7477
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
7578
go.uber.org/automaxprocs v1.5.2 // indirect
76-
golang.org/x/crypto v0.9.0 // indirect
79+
golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc // indirect
7780
golang.org/x/net v0.10.0 // indirect
7881
golang.org/x/sys v0.9.0 // indirect
7982
golang.org/x/text v0.9.0 // indirect
@@ -82,9 +85,10 @@ require (
8285
google.golang.org/protobuf v1.30.0 // indirect
8386
gopkg.in/yaml.v2 v2.4.0 // indirect
8487
gopkg.in/yaml.v3 v3.0.1 // indirect
88+
rsc.io/tmplfunc v0.0.3 // indirect
8589
)
8690

8791
replace (
88-
github.com/consensys/gnark => github.com/bnb-chain/gnark v0.7.1-0.20230203031713-0d81c67d080a
89-
github.com/consensys/gnark-crypto => github.com/bnb-chain/gnark-crypto v0.7.1-0.20230203031630-7c643ad11891
92+
github.com/consensys/gnark => github.com/bnb-chain/gnark v0.7.2-0.20231008065852-bf4926770621
93+
github.com/consensys/gnark-crypto => github.com/bnb-chain/gnark-crypto v0.8.1-0.20230412133626-30223a679fb7
9094
)

go.sum

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -424,10 +424,12 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce
424424
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
425425
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
426426
github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4=
427-
github.com/bnb-chain/gnark v0.7.1-0.20230203031713-0d81c67d080a h1:qXSqpE4WxfmvxBgFSSNLzl2oYWl5G1xGYkGcPJMpTys=
428-
github.com/bnb-chain/gnark v0.7.1-0.20230203031713-0d81c67d080a/go.mod h1:dIiKXHFIJARfw+amakfjqOhw6myeLltyU1+RS8/ghl0=
429-
github.com/bnb-chain/gnark-crypto v0.7.1-0.20230203031630-7c643ad11891 h1:fmLpwLm71xMeB+45ngpXioTt78aL6YGxubbnobNdoWQ=
430-
github.com/bnb-chain/gnark-crypto v0.7.1-0.20230203031630-7c643ad11891/go.mod h1:KPSuJzyxkJA8xZ/+CV47tyqkr9MmpZA3PXivK4VPrVg=
427+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
428+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
429+
github.com/bnb-chain/gnark v0.7.2-0.20231008065852-bf4926770621 h1:axDn2UR/evNksueBbom7/TNGyDb3q/blvKJ1J1FaIZI=
430+
github.com/bnb-chain/gnark v0.7.2-0.20231008065852-bf4926770621/go.mod h1:fmHUzzss1n32K3COWMvrQj7uo7GjIeIr1wXzjj5gmj8=
431+
github.com/bnb-chain/gnark-crypto v0.8.1-0.20230412133626-30223a679fb7 h1:ME5Nif4WgGgWKH2omB6ybic5bsU22bHy43xBsgMBHgM=
432+
github.com/bnb-chain/gnark-crypto v0.8.1-0.20230412133626-30223a679fb7/go.mod h1:a2DQL4+5ywF6safEeZFEPGRiiGbjzGFRUN2sg06VuU4=
431433
github.com/bnb-chain/zkbnb-smt v0.0.3-0.20221227064653-7422bfd51aa0 h1:ctmwkpucisve1QBpCIgAH9hjYZGxbtyaCSh5yVM+F1s=
432434
github.com/bnb-chain/zkbnb-smt v0.0.3-0.20221227064653-7422bfd51aa0/go.mod h1:QmQTsv2fxBsobFLFZkaiNmr3P0M/mm3W1AiwSU3/cGY=
433435
github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4=
@@ -452,8 +454,11 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
452454
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
453455
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
454456
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
457+
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
458+
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
455459
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
456460
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
461+
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
457462
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
458463
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
459464
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -612,6 +617,8 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
612617
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
613618
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
614619
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
620+
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U=
621+
github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg=
615622
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
616623
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
617624
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -707,6 +714,7 @@ github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
707714
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
708715
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
709716
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
717+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
710718
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
711719
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
712720
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
@@ -815,9 +823,9 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
815823
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
816824
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
817825
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
818-
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
819-
github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc=
820-
github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc=
826+
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
827+
github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w=
828+
github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
821829
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
822830
github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
823831
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
@@ -869,7 +877,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
869877
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
870878
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
871879
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
872-
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
873880
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
874881
github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 h1:5mLPGnFdSsevFRFc9q3yYbBkB6tsm4aCwwQV/j1JQAQ=
875882
github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
@@ -941,10 +948,8 @@ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPh
941948
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
942949
golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
943950
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
944-
golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
945951
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
946952
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
947-
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
948953
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
949954
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
950955
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -955,6 +960,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
955960
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
956961
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
957962
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
963+
golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU=
964+
golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
958965
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
959966
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
960967
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1023,7 +1030,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
10231030
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
10241031
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
10251032
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
1026-
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
10271033
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
10281034
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
10291035
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@@ -1145,9 +1151,9 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
11451151
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11461152
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11471153
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1148-
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11491154
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11501155
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1156+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11511157
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11521158
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11531159
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1246,7 +1252,6 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
12461252
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
12471253
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
12481254
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
1249-
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
12501255
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
12511256
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
12521257
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1532,6 +1537,8 @@ k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2/go.mod h1:OLgZIPagt7ERELqWJFomSt
15321537
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
15331538
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
15341539
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
1540+
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
1541+
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
15351542
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
15361543
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
15371544
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

src/keygen/main.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import (
1111
"runtime"
1212
"strconv"
1313
"time"
14+
"os"
1415
)
1516

1617
func main() {
1718
circuit := circuit.NewBatchCreateUserCircuit(utils.AssetCounts, utils.BatchCreateUserOpsCounts)
18-
oR1cs, err := frontend.Compile(ecc.BN254, r1cs.NewBuilder, circuit, frontend.IgnoreUnconstrainedInputs())
19+
oR1cs, err := frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, circuit, frontend.IgnoreUnconstrainedInputs(), frontend.WithGKRBN(0))
1920
if err != nil {
2021
panic(err)
2122
}
@@ -30,7 +31,28 @@ func main() {
3031
fmt.Println(oR1cs.GetNbVariables())
3132
zkKeyName := "zkpor" + strconv.FormatInt(utils.BatchCreateUserOpsCounts, 10)
3233
fmt.Printf("Number of constraints: %d\n", oR1cs.GetNbConstraints())
33-
err = groth16.SetupLazyWithDump(oR1cs, zkKeyName)
34+
oR1cs.Lazify()
35+
fmt.Printf("After Lazify: Number of constraints: %d\n", oR1cs.GetNbConstraints())
36+
err = oR1cs.SplitDumpBinary(zkKeyName, utils.R1csBatchSize)
37+
if err != nil {
38+
panic(err)
39+
}
40+
oR1csFull := groth16.NewCS(ecc.BN254)
41+
oR1csFull.LoadFromSplitBinaryConcurrent(zkKeyName, oR1cs.GetNbR1C(), utils.R1csBatchSize, runtime.NumCPU())
42+
if err != nil {
43+
panic(err)
44+
}
45+
46+
f, err := os.Create(zkKeyName + ".r1cslen")
47+
if err != nil {
48+
panic(err)
49+
}
50+
_, err = f.WriteString(fmt.Sprint(oR1csFull.GetNbR1C()))
51+
if err != nil {
52+
panic(err)
53+
}
54+
f.Close()
55+
err = groth16.SetupDumpKeys(oR1csFull, zkKeyName)
3456
if err != nil {
3557
panic(err)
3658
}

src/prover/prover/prover.go

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/binance/zkmerkle-proof-of-solvency/src/witness/witness"
1717
"github.com/consensys/gnark-crypto/ecc"
1818
"github.com/consensys/gnark/backend/groth16"
19+
"github.com/consensys/gnark/constraint"
1920
"github.com/consensys/gnark/frontend"
2021
"github.com/consensys/gnark/std"
2122
"github.com/zeromicro/go-zero/core/logx"
@@ -39,7 +40,7 @@ type Prover struct {
3940
VerifyingKeys groth16.VerifyingKey
4041
ProvingKeys []groth16.ProvingKey
4142
SessionName string
42-
R1cs frontend.CompiledConstraintSystem
43+
R1cs constraint.ConstraintSystem
4344
}
4445

4546
func NewProver(config *config.Config) *Prover {
@@ -70,10 +71,15 @@ func NewProver(config *config.Config) *Prover {
7071
}
7172
}
7273
}()
73-
prover.R1cs, err = groth16.LoadR1CSFromFile(config.ZkKeyName)
74+
nbConstraints, err := LoadR1CSLen(config.ZkKeyName + ".r1cslen")
7475
if err != nil {
75-
panic("r1cs init error")
76+
panic("r1cs len load error...")
7677
}
78+
79+
prover.R1cs = groth16.NewCS(ecc.BN254)
80+
prover.R1cs.LoadFromSplitBinaryConcurrent(config.ZkKeyName, nbConstraints, utils.R1csBatchSize, runtime.NumCPU())
81+
// circuit := circuit.NewBatchCreateUserCircuit(utils.AssetCounts, utils.BatchCreateUserOpsCounts)
82+
// prover.R1cs, err = frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, circuit, frontend.IgnoreUnconstrainedInputs(), frontend.WithGKRBN(0))
7783
loadR1csChan <- true
7884
runtime.GC()
7985
fmt.Println("finish loading r1cs...")
@@ -221,9 +227,25 @@ func (p *Prover) Run(flag bool) {
221227
}
222228
}
223229

230+
func LoadR1CSLen(filename string) (nbConstraints int, err error) {
231+
f, err := os.Open(filename)
232+
if err != nil {
233+
return -1, fmt.Errorf("read file error")
234+
}
235+
defer f.Close()
236+
237+
var value int
238+
_, err = fmt.Fscanf(f, "%d", &value)
239+
if err != nil {
240+
return -1, err
241+
}
242+
243+
return value, nil
244+
}
245+
224246
func LoadProvingKey(filepath string) (pks []groth16.ProvingKey, err error) {
225247
logx.Info("start reading proving key")
226-
return groth16.ReadSegmentProveKey(filepath)
248+
return groth16.ReadSegmentProveKey(ecc.BN254, filepath)
227249
}
228250

229251
func LoadVerifyingKey(filepath string) (verifyingKey groth16.VerifyingKey, err error) {
@@ -237,7 +259,7 @@ func LoadVerifyingKey(filepath string) (verifyingKey groth16.VerifyingKey, err e
237259
return verifyingKey, nil
238260
}
239261

240-
func GenerateAndVerifyProof(r1cs frontend.CompiledConstraintSystem,
262+
func GenerateAndVerifyProof(r1cs constraint.ConstraintSystem,
241263
provingKey []groth16.ProvingKey,
242264
verifyingKey groth16.VerifyingKey,
243265
batchWitness *utils.BatchCreateUserWitness,
@@ -248,12 +270,12 @@ func GenerateAndVerifyProof(r1cs frontend.CompiledConstraintSystem,
248270
fmt.Println("begin to generate proof for batch: ", batchNumber)
249271
circuitWitness, _ := circuit.SetBatchCreateUserCircuitWitness(batchWitness)
250272
verifyWitness := circuit.NewVerifyBatchCreateUserCircuit(batchWitness.BatchCommitment)
251-
witness, err := frontend.NewWitness(circuitWitness, ecc.BN254)
273+
witness, err := frontend.NewWitness(circuitWitness, ecc.BN254.ScalarField())
252274
if err != nil {
253275
return proof, err
254276
}
255277

256-
vWitness, err := frontend.NewWitness(verifyWitness, ecc.BN254, frontend.PublicOnly())
278+
vWitness, err := frontend.NewWitness(verifyWitness, ecc.BN254.ScalarField(), frontend.PublicOnly())
257279
if err != nil {
258280
return proof, err
259281
}

0 commit comments

Comments
 (0)