mirror of
https://github.com/logos-storage/gnark-plonky2-verifier.git
synced 2026-01-05 22:53:09 +00:00
some rearranging of the functions
This commit is contained in:
parent
cbb50ef3bd
commit
317f4baf0a
42
plonky2_verifier/hash.go
Normal file
42
plonky2_verifier/hash.go
Normal file
@ -0,0 +1,42 @@
|
||||
package plonky2_verifier
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "gnark-ed25519/field"
|
||||
|
||||
"github.com/consensys/gnark/frontend"
|
||||
)
|
||||
|
||||
type Hash = [4]F
|
||||
|
||||
func SelectHash(fieldAPI frontend.API, bit frontend.Variable, leftHash, rightHash Hash) Hash {
|
||||
var returnHash Hash
|
||||
for i := 0; i < 4; i++ {
|
||||
returnHash[i] = fieldAPI.Select(bit, leftHash[i], rightHash[i]).(F)
|
||||
}
|
||||
|
||||
return returnHash
|
||||
}
|
||||
|
||||
func Lookup2Hash(fieldAPI frontend.API, b0 frontend.Variable, b1 frontend.Variable, h0, h1, h2, h3 Hash) Hash {
|
||||
var returnHash Hash
|
||||
|
||||
for i := 0; i < 4; i++ {
|
||||
returnHash[i] = fieldAPI.Lookup2(b0, b1, h0[i], h1[i], h2[i], h3[i]).(F)
|
||||
}
|
||||
|
||||
return returnHash
|
||||
}
|
||||
|
||||
func AssertIsEqualHash(fieldAPI frontend.API, h1, h2 Hash) {
|
||||
for i := 0; i < 4; i++ {
|
||||
fieldAPI.AssertIsEqual(h1[0], h2[0])
|
||||
}
|
||||
}
|
||||
|
||||
func PrintHash(f frontend.API, h Hash) {
|
||||
for i := 0; i < 4; i++ {
|
||||
fmt.Println("Hash Limb", i)
|
||||
f.Println(h[i])
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,6 @@ package plonky2_verifier
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gnark-ed25519/field"
|
||||
. "gnark-ed25519/field"
|
||||
"math/bits"
|
||||
|
||||
@ -67,7 +66,7 @@ func (c *QuadraticExtensionAPI) InverseExtension(a QuadraticExtension) Quadratic
|
||||
a1_is_zero := c.fieldAPI.IsZero(a[1])
|
||||
|
||||
// assert that a0_is_zero OR a1_is_zero == false
|
||||
c.fieldAPI.AssertIsEqual(c.fieldAPI.Mul(a0_is_zero, a1_is_zero).(F), field.ZERO_F)
|
||||
c.fieldAPI.AssertIsEqual(c.fieldAPI.Mul(a0_is_zero, a1_is_zero).(F), ZERO_F)
|
||||
|
||||
a_pow_r_minus_1 := QuadraticExtension{a[0], c.fieldAPI.Mul(a[1], c.DTH_ROOT).(F)}
|
||||
a_pow_r := c.MulExtension(a_pow_r_minus_1, a)
|
||||
@ -79,7 +78,7 @@ func (c *QuadraticExtensionAPI) ScalarMulExtension(a QuadraticExtension, scalar
|
||||
}
|
||||
|
||||
func (c *QuadraticExtensionAPI) FieldToQE(a F) QuadraticExtension {
|
||||
return QuadraticExtension{a, field.ZERO_F}
|
||||
return QuadraticExtension{a, ZERO_F}
|
||||
}
|
||||
|
||||
// / Exponentiate `base` to the power of a known `exponent`.
|
||||
@ -110,6 +109,22 @@ func (c *QuadraticExtensionAPI) ExpU64Extension(a QuadraticExtension, exponent u
|
||||
return product
|
||||
}
|
||||
|
||||
func (c *QuadraticExtensionAPI) reduceWithPowers(terms []QuadraticExtension, scalar QuadraticExtension) QuadraticExtension {
|
||||
sum := c.ZERO_QE
|
||||
|
||||
for i := len(terms) - 1; i >= 0; i-- {
|
||||
sum = c.AddExtension(
|
||||
c.MulExtension(
|
||||
sum,
|
||||
scalar,
|
||||
),
|
||||
terms[i],
|
||||
)
|
||||
}
|
||||
|
||||
return sum
|
||||
}
|
||||
|
||||
func (c *QuadraticExtensionAPI) Println(a QuadraticExtension) {
|
||||
fmt.Print("Degree 0 coefficient")
|
||||
c.fieldAPI.Println(a[0])
|
||||
|
||||
@ -2,28 +2,9 @@ package plonky2_verifier
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "gnark-ed25519/field"
|
||||
"math/bits"
|
||||
|
||||
"github.com/consensys/gnark/frontend"
|
||||
)
|
||||
|
||||
func reduceWithPowers(qe *QuadraticExtensionAPI, terms []QuadraticExtension, scalar QuadraticExtension) QuadraticExtension {
|
||||
sum := qe.ZERO_QE
|
||||
|
||||
for i := len(terms) - 1; i >= 0; i-- {
|
||||
sum = qe.AddExtension(
|
||||
qe.MulExtension(
|
||||
sum,
|
||||
scalar,
|
||||
),
|
||||
terms[i],
|
||||
)
|
||||
}
|
||||
|
||||
return sum
|
||||
}
|
||||
|
||||
// Computes `log_2(n)`, panicking if `n` is not a power of two.
|
||||
func log2Strict(n uint) int {
|
||||
res := bits.TrailingZeros(n)
|
||||
@ -32,35 +13,3 @@ func log2Strict(n uint) int {
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func SelectHash(fieldAPI frontend.API, bit frontend.Variable, leftHash, rightHash Hash) Hash {
|
||||
var returnHash Hash
|
||||
for i := 0; i < 4; i++ {
|
||||
returnHash[i] = fieldAPI.Select(bit, leftHash[i], rightHash[i]).(F)
|
||||
}
|
||||
|
||||
return returnHash
|
||||
}
|
||||
|
||||
func Lookup2Hash(fieldAPI frontend.API, b0 frontend.Variable, b1 frontend.Variable, h0, h1, h2, h3 Hash) Hash {
|
||||
var returnHash Hash
|
||||
|
||||
for i := 0; i < 4; i++ {
|
||||
returnHash[i] = fieldAPI.Lookup2(b0, b1, h0[i], h1[i], h2[i], h3[i]).(F)
|
||||
}
|
||||
|
||||
return returnHash
|
||||
}
|
||||
|
||||
func AssertIsEqualHash(fieldAPI frontend.API, h1, h2 Hash) {
|
||||
for i := 0; i < 4; i++ {
|
||||
fieldAPI.AssertIsEqual(h1[0], h2[0])
|
||||
}
|
||||
}
|
||||
|
||||
func PrintHash(f frontend.API, h Hash) {
|
||||
for i := 0; i < 4; i++ {
|
||||
fmt.Println("Hash Limb", i)
|
||||
f.Println(h[i])
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user