mirror of
https://github.com/arnaucube/gnark-plonky2-verifier.git
synced 2026-01-12 17:11:31 +01:00
got plonk.evalVanishingPoly working
This commit is contained in:
13
go.mod
13
go.mod
@@ -2,18 +2,23 @@ module gnark-ed25519
|
|||||||
|
|
||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8
|
||||||
|
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/blang/semver/v4 v4.0.0 // indirect
|
github.com/blang/semver/v4 v4.0.0 // indirect
|
||||||
github.com/consensys/bavard v0.1.13 // indirect
|
github.com/consensys/bavard v0.1.13 // indirect
|
||||||
github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8 // indirect
|
|
||||||
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e // indirect
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/fxamacker/cbor/v2 v2.2.0 // indirect
|
github.com/fxamacker/cbor/v2 v2.2.0 // indirect
|
||||||
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 // indirect
|
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 // indirect
|
||||||
|
github.com/kr/text v0.2.0 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.16 // indirect
|
github.com/mattn/go-isatty v0.0.16 // indirect
|
||||||
github.com/mmcloughlin/addchain v0.4.0 // indirect
|
github.com/mmcloughlin/addchain v0.4.0 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0 // indirect
|
||||||
github.com/rs/zerolog v1.28.0 // indirect
|
github.com/rs/zerolog v1.28.0 // indirect
|
||||||
github.com/stretchr/testify v1.8.0 // indirect
|
github.com/stretchr/testify v1.8.0 // indirect
|
||||||
github.com/x448/float16 v0.8.4 // indirect
|
github.com/x448/float16 v0.8.4 // indirect
|
||||||
@@ -22,3 +27,7 @@ require (
|
|||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
rsc.io/tmplfunc v0.0.3 // indirect
|
rsc.io/tmplfunc v0.0.3 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// For now, use a forked version of gnark so that the emaulated fields are
|
||||||
|
// mod'ed when printed. See here: https://github.com/kevjue/gnark/commit/0b216679a380b4b8d29f10dd96f34e8a5702463e
|
||||||
|
replace github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8 => github.com/kevjue/gnark v0.7.2-0.20221031212238-0b216679a380
|
||||||
21
go.sum
21
go.sum
@@ -2,28 +2,26 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM
|
|||||||
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
|
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
|
||||||
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
|
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
|
||||||
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
|
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
|
||||||
github.com/consensys/gnark v0.7.0 h1:zyI8zPAhSazrZPeQpKIFUHLgrnAuxI+EDrFLNizKb9I=
|
|
||||||
github.com/consensys/gnark v0.7.0/go.mod h1:oQnMurInsfe+9rG4l8qh8AFVihfuRCS5H3XPJH/6HPM=
|
|
||||||
github.com/consensys/gnark v0.7.2-0.20220915193524-b33f88c79af6 h1:T19XI5vxnMPOdoyyubM81cYr4MHll0n67EDrRjtA2Pg=
|
|
||||||
github.com/consensys/gnark v0.7.2-0.20220915193524-b33f88c79af6/go.mod h1:iN7/IRE6Eu2QKnTJEsoS48suBV0O5XrM+Nzo1ipp6Zw=
|
|
||||||
github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8 h1:vVr7kyVKEQGiMtrLsvS37QPOUzdHVT3X1QlXRZHOo2c=
|
|
||||||
github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8/go.mod h1:vxk8P9btWUlF9tgqOyB76wXbB6As5IXxkb/4sNJvE0M=
|
|
||||||
github.com/consensys/gnark-crypto v0.7.0 h1:rwdy8+ssmLYRqKp+ryRRgQJl/rCq2uv+n83cOydm5UE=
|
|
||||||
github.com/consensys/gnark-crypto v0.7.0/go.mod h1:KPSuJzyxkJA8xZ/+CV47tyqkr9MmpZA3PXivK4VPrVg=
|
|
||||||
github.com/consensys/gnark-crypto v0.7.1-0.20220603201101-938eff486457 h1:GCxBDfMg0bM1ZN2fi3OfywjDDr19N+SThchczg5kqJQ=
|
|
||||||
github.com/consensys/gnark-crypto v0.7.1-0.20220603201101-938eff486457/go.mod h1:9pJ7c3Pq7Rnw3iYoZldpbPRRGNJaRz47YgMiaavwyRY=
|
|
||||||
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e h1:FyL5vcbvCIoD20M4Fvy+TXRbXKjT16gq7Uq0QDkyytM=
|
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e h1:FyL5vcbvCIoD20M4Fvy+TXRbXKjT16gq7Uq0QDkyytM=
|
||||||
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e/go.mod h1:ZTnSzNlt98CpwYIJyk6q/KVcshYWr3fOXXFrrY8a0QQ=
|
github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e/go.mod h1:ZTnSzNlt98CpwYIJyk6q/KVcshYWr3fOXXFrrY8a0QQ=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fxamacker/cbor/v2 v2.2.0 h1:6eXqdDDe588rSYAi1HfZKbx6YYQO4mxQ9eC6xYpU/JQ=
|
github.com/fxamacker/cbor/v2 v2.2.0 h1:6eXqdDDe588rSYAi1HfZKbx6YYQO4mxQ9eC6xYpU/JQ=
|
||||||
github.com/fxamacker/cbor/v2 v2.2.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo=
|
github.com/fxamacker/cbor/v2 v2.2.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo=
|
||||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||||
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 h1:8pyqKJvrJqUYaKS851Ule26pwWvey6IDMiczaBLDKLQ=
|
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 h1:8pyqKJvrJqUYaKS851Ule26pwWvey6IDMiczaBLDKLQ=
|
||||||
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk=
|
github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk=
|
||||||
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||||
|
github.com/kevjue/gnark v0.7.2-0.20221031212238-0b216679a380 h1:AaxoOsAa/6HME7IIZ8XF0RsFNaDjy4WhRX7iK290YqM=
|
||||||
|
github.com/kevjue/gnark v0.7.2-0.20221031212238-0b216679a380/go.mod h1:iN7/IRE6Eu2QKnTJEsoS48suBV0O5XrM+Nzo1ipp6Zw=
|
||||||
|
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
|
||||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
@@ -36,6 +34,8 @@ github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFV
|
|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
|
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
|
||||||
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
|
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
|
||||||
@@ -54,6 +54,7 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI=
|
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI=
|
||||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -2,18 +2,32 @@ package plonky2_verifier
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
. "gnark-ed25519/field"
|
. "gnark-ed25519/field"
|
||||||
|
|
||||||
"github.com/consensys/gnark/frontend"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type PlonkChip struct {
|
type PlonkChip struct {
|
||||||
api frontend.API
|
qe *QuadraticExtensionAPI
|
||||||
field frontend.API
|
|
||||||
qe *QuadraticExtensionAPI
|
|
||||||
|
|
||||||
commonData CommonCircuitData
|
commonData CommonCircuitData
|
||||||
proofChallenges ProofChallenges
|
proofChallenges ProofChallenges
|
||||||
openings OpeningSet
|
openings OpeningSet
|
||||||
|
|
||||||
|
DEGREE F
|
||||||
|
DEGREE_BITS_F F
|
||||||
|
DEGREE_QE QuadraticExtension
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPlonkChip(qe *QuadraticExtensionAPI, commonData CommonCircuitData) *PlonkChip {
|
||||||
|
// TODO: Should degreeBits be verified that it fits within the field and that degree is within uint64?
|
||||||
|
|
||||||
|
return &PlonkChip{
|
||||||
|
qe: qe,
|
||||||
|
|
||||||
|
commonData: commonData,
|
||||||
|
|
||||||
|
DEGREE: NewFieldElement(1 << commonData.DegreeBits),
|
||||||
|
DEGREE_BITS_F: NewFieldElement(commonData.DegreeBits),
|
||||||
|
DEGREE_QE: QuadraticExtension{NewFieldElement(1 << commonData.DegreeBits), NewFieldElement(0)},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlonkChip) expPowerOf2Extension(x QuadraticExtension) QuadraticExtension {
|
func (p *PlonkChip) expPowerOf2Extension(x QuadraticExtension) QuadraticExtension {
|
||||||
@@ -31,8 +45,8 @@ func (p *PlonkChip) evalL0(x QuadraticExtension, xPowN QuadraticExtension) Quadr
|
|||||||
p.qe.ONE,
|
p.qe.ONE,
|
||||||
)
|
)
|
||||||
denominator := p.qe.SubExtension(
|
denominator := p.qe.SubExtension(
|
||||||
p.qe.ScalarMulExtension(x, p.qe.DEGREE_BITS_F),
|
p.qe.ScalarMulExtension(x, p.DEGREE),
|
||||||
p.qe.DEGREE_BITS_QE,
|
p.DEGREE_QE,
|
||||||
)
|
)
|
||||||
return p.qe.DivExtension(
|
return p.qe.DivExtension(
|
||||||
evalZeroPoly,
|
evalZeroPoly,
|
||||||
@@ -55,7 +69,7 @@ func (p *PlonkChip) checkPartialProducts(
|
|||||||
|
|
||||||
partialProductChecks := make([]QuadraticExtension, 0, numPartProds)
|
partialProductChecks := make([]QuadraticExtension, 0, numPartProds)
|
||||||
|
|
||||||
for i := uint64(0); i < numPartProds; i += 1 {
|
for i := uint64(0); i <= numPartProds; i += 1 {
|
||||||
ppStartIdx := i * quotDegreeFactor
|
ppStartIdx := i * quotDegreeFactor
|
||||||
numeProduct := numerators[ppStartIdx]
|
numeProduct := numerators[ppStartIdx]
|
||||||
denoProduct := denominators[ppStartIdx]
|
denoProduct := denominators[ppStartIdx]
|
||||||
@@ -92,10 +106,9 @@ func (p *PlonkChip) evalVanishingPoly() []QuadraticExtension {
|
|||||||
vanishingPartialProductsTerms := make([]QuadraticExtension, 0, p.commonData.Config.NumChallenges*p.commonData.NumPartialProducts)
|
vanishingPartialProductsTerms := make([]QuadraticExtension, 0, p.commonData.Config.NumChallenges*p.commonData.NumPartialProducts)
|
||||||
for i := uint64(0); i < p.commonData.Config.NumChallenges; i++ {
|
for i := uint64(0); i < p.commonData.Config.NumChallenges; i++ {
|
||||||
// L_0(zeta) (Z(zeta) - 1) = 0
|
// L_0(zeta) (Z(zeta) - 1) = 0
|
||||||
z1_term := p.qe.SubExtension(
|
z1_term := p.qe.MulExtension(
|
||||||
p.qe.MulExtension(l0Zeta, p.openings.PlonkZs[i]),
|
|
||||||
l0Zeta,
|
l0Zeta,
|
||||||
)
|
p.qe.SubExtension(p.openings.PlonkZs[i], p.qe.ONE))
|
||||||
vanishingZ1Terms = append(vanishingZ1Terms, z1_term)
|
vanishingZ1Terms = append(vanishingZ1Terms, z1_term)
|
||||||
|
|
||||||
numeratorValues := make([]QuadraticExtension, 0, p.commonData.Config.NumRoutedWires)
|
numeratorValues := make([]QuadraticExtension, 0, p.commonData.Config.NumRoutedWires)
|
||||||
@@ -135,9 +148,16 @@ func (p *PlonkChip) evalVanishingPoly() []QuadraticExtension {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return vanishingPartialProductsTerms
|
return append(vanishingZ1Terms, vanishingPartialProductsTerms...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlonkChip) Verify() {
|
func (p *PlonkChip) Verify() {
|
||||||
p.evalVanishingPoly()
|
p.evalVanishingPoly()
|
||||||
|
|
||||||
|
/*
|
||||||
|
vanishingPolys := p.evalVanishingPoly()
|
||||||
|
|
||||||
|
for _, vp := range vanishingPolys {
|
||||||
|
//fmt.Println(vp)
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,14 +37,9 @@ func (circuit *TestPlonkCircuit) Define(api frontend.API) error {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
plonkChip := PlonkChip{
|
plonkChip := NewPlonkChip(qe, commonCircuitData)
|
||||||
api: api,
|
plonkChip.proofChallenges = proofChallenges
|
||||||
field: field,
|
plonkChip.openings = proofWithPis.Proof.Openings
|
||||||
qe: qe,
|
|
||||||
commonData: commonCircuitData,
|
|
||||||
proofChallenges: proofChallenges,
|
|
||||||
openings: proofWithPis.Proof.Openings,
|
|
||||||
}
|
|
||||||
|
|
||||||
plonkChip.Verify()
|
plonkChip.Verify()
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package plonky2_verifier
|
package plonky2_verifier
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
. "gnark-ed25519/field"
|
. "gnark-ed25519/field"
|
||||||
|
|
||||||
"github.com/consensys/gnark/frontend"
|
"github.com/consensys/gnark/frontend"
|
||||||
@@ -9,28 +10,24 @@ import (
|
|||||||
type QuadraticExtensionAPI struct {
|
type QuadraticExtensionAPI struct {
|
||||||
field frontend.API
|
field frontend.API
|
||||||
|
|
||||||
W F
|
W F
|
||||||
DTH_ROOT F
|
DTH_ROOT F
|
||||||
ZERO_F F
|
ZERO_F F
|
||||||
DEGREE_BITS_F F
|
|
||||||
|
|
||||||
ONE QuadraticExtension
|
ONE QuadraticExtension
|
||||||
DEGREE_BITS_QE QuadraticExtension
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQuadraticExtensionAPI(field frontend.API, degreeBits uint64) *QuadraticExtensionAPI {
|
func NewQuadraticExtensionAPI(field frontend.API, degreeBits uint64) *QuadraticExtensionAPI {
|
||||||
// TODO: Should degreeBits be verified that it fits within the field?
|
// TODO: Should degreeBits be verified that it fits within the field and that degree is within uint64?
|
||||||
|
|
||||||
return &QuadraticExtensionAPI{
|
return &QuadraticExtensionAPI{
|
||||||
field: field,
|
field: field,
|
||||||
|
|
||||||
W: NewFieldElement(7),
|
W: NewFieldElement(7),
|
||||||
DTH_ROOT: NewFieldElement(18446744069414584320),
|
DTH_ROOT: NewFieldElement(18446744069414584320),
|
||||||
ZERO_F: NewFieldElement(0),
|
ZERO_F: NewFieldElement(0),
|
||||||
DEGREE_BITS_F: NewFieldElement(degreeBits),
|
|
||||||
|
|
||||||
ONE: QuadraticExtension{NewFieldElement(1), NewFieldElement(0)},
|
ONE: QuadraticExtension{NewFieldElement(1), NewFieldElement(0)},
|
||||||
DEGREE_BITS_QE: QuadraticExtension{NewFieldElement(degreeBits), NewFieldElement(0)},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,3 +79,11 @@ func (c *QuadraticExtensionAPI) ScalarMulExtension(a QuadraticExtension, scalar
|
|||||||
func (c *QuadraticExtensionAPI) FieldToQE(a F) QuadraticExtension {
|
func (c *QuadraticExtensionAPI) FieldToQE(a F) QuadraticExtension {
|
||||||
return QuadraticExtension{a, c.ZERO_F}
|
return QuadraticExtension{a, c.ZERO_F}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *QuadraticExtensionAPI) Println(a QuadraticExtension) {
|
||||||
|
fmt.Print("Degree 0 coefficient")
|
||||||
|
c.field.Println(a[0])
|
||||||
|
|
||||||
|
fmt.Print("Degree 1 coefficient")
|
||||||
|
c.field.Println(a[1])
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user