Skip to content

Commit f6fa4d7

Browse files
Add BytesToBLSField go kzg_new, use it instead of hashToFr
1 parent 3937b78 commit f6fa4d7

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

core/types/data_blob.go

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"errors"
66
"fmt"
77
"io"
8-
"math/big"
98

109
"github.com/ethereum/go-ethereum/common"
1110
"github.com/ethereum/go-ethereum/common/hexutil"
@@ -328,13 +327,12 @@ func (blobs Blobs) ComputeCommitmentsAndAggregatedProof() (commitments []KZGComm
328327
if err != nil {
329328
return nil, nil, KZGProof{}, err
330329
}
331-
var z bls.Fr
332-
hashToFr(&z, sum)
330+
z := kzg.BytesToBLSField(sum)
333331

334332
var y bls.Fr
335-
kzg.EvaluatePolyInEvaluationForm(&y, aggregatePoly[:], &z)
333+
kzg.EvaluatePolyInEvaluationForm(&y, aggregatePoly[:], z)
336334

337-
aggProofG1, err := kzg.ComputeProof(aggregatePoly, &z)
335+
aggProofG1, err := kzg.ComputeProof(aggregatePoly, z)
338336
if err != nil {
339337
return nil, nil, KZGProof{}, err
340338
}
@@ -465,17 +463,16 @@ func (b *BlobTxWrapData) verifyBlobs(inner TxData) error {
465463
if err != nil {
466464
return err
467465
}
468-
var z bls.Fr
469-
hashToFr(&z, sum)
466+
z := kzg.BytesToBLSField(sum)
470467

471468
var y bls.Fr
472-
kzg.EvaluatePolyInEvaluationForm(&y, aggregatePoly[:], &z)
469+
kzg.EvaluatePolyInEvaluationForm(&y, aggregatePoly[:], z)
473470

474471
aggregateProofG1, err := bls.FromCompressedG1(b.KzgAggregatedProof[:])
475472
if err != nil {
476473
return fmt.Errorf("aggregate proof parse error: %v", err)
477474
}
478-
if !kzg.VerifyKZGProofFromPoints(aggregateCommitmentG1, &z, &y, aggregateProofG1) {
475+
if !kzg.VerifyKZGProofFromPoints(aggregateCommitmentG1, z, &y, aggregateProofG1) {
479476
return errors.New("failed to verify kzg")
480477
}
481478
return nil
@@ -524,10 +521,9 @@ func computeAggregateKzgCommitment(blobs Blobs, commitments []KZGCommitment) ([]
524521
if err != nil {
525522
return nil, nil, err
526523
}
527-
var r bls.Fr
528-
hashToFr(&r, sum)
524+
r := kzg.BytesToBLSField(sum)
529525

530-
powers := kzg.ComputePowers(&r, len(blobs))
526+
powers := kzg.ComputePowers(r, len(blobs))
531527

532528
commitmentsG1 := make([]bls.G1Point, len(commitments))
533529
for i := 0; i < len(commitmentsG1); i++ {
@@ -548,13 +544,3 @@ func computeAggregateKzgCommitment(blobs Blobs, commitments []KZGCommitment) ([]
548544
}
549545
return aggregatePoly, aggregateCommitmentG1, nil
550546
}
551-
552-
func hashToFr(out *bls.Fr, h [32]byte) {
553-
// re-interpret as little-endian
554-
var b [32]byte = h
555-
for i := 0; i < 16; i++ {
556-
b[31-i], b[i] = b[i], b[31-i]
557-
}
558-
zB := new(big.Int).Mod(new(big.Int).SetBytes(b[:]), kzg.BLSModulus)
559-
_ = kzg.BigToFr(out, zB)
560-
}

crypto/kzg/kzg.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ package kzg
33
import (
44
"encoding/json"
55
"errors"
6-
//"fmt"
76
"math/big"
87
"math/bits"
9-
//"sync"
108

119
"github.com/ethereum/go-ethereum/params"
1210

crypto/kzg/kzg_new.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package kzg
33
import (
44
"errors"
55
"fmt"
6+
"math/big"
67

78
"github.com/protolambda/go-kzg/bls"
89

@@ -125,3 +126,17 @@ func BlobToKZGCommitment(eval Blob) KZGCommitment {
125126
copy(out[:], bls.ToCompressedG1(g1))
126127
return out
127128
}
129+
130+
// BytesToBLSField implements bytes_to_bls_field from the EIP-4844 consensus spec:
131+
// https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/polynomial-commitments.md#bytes_to_bls_field
132+
func BytesToBLSField(h [32]byte) *bls.Fr {
133+
// re-interpret as little-endian
134+
var b [32]byte = h
135+
for i := 0; i < 16; i++ {
136+
b[31-i], b[i] = b[i], b[31-i]
137+
}
138+
zB := new(big.Int).Mod(new(big.Int).SetBytes(b[:]), BLSModulus)
139+
out := new(bls.Fr)
140+
BigToFr(out, zB)
141+
return out
142+
}

0 commit comments

Comments
 (0)