Skip to content

Commit 90221d6

Browse files
z2trillionholimanMason Liang
authored
chore(dep): upgrade go kzg 4844 (#718)
* crypto/kz4844: pass blobs by ref (ethereum#29050) This change makes use of the following underlying changes to the kzg-libraries in order to avoid passing large things on the stack: - c-kzg: ethereum/c-kzg-4844#393 and - go-kzg: https://github.com/crate-crypto/go-kzg-4844/pull/63 * update version patch * run go mod tidy * use blob reference --------- Co-authored-by: Martin HS <[email protected]> Co-authored-by: Mason Liang <[email protected]>
1 parent 246955a commit 90221d6

File tree

9 files changed

+33
-33
lines changed

9 files changed

+33
-33
lines changed

crypto/kzg4844/kzg4844.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func UseCKZG(use bool) error {
6666
}
6767

6868
// BlobToCommitment creates a small commitment out of a data blob.
69-
func BlobToCommitment(blob Blob) (Commitment, error) {
69+
func BlobToCommitment(blob *Blob) (Commitment, error) {
7070
if useCKZG.Load() {
7171
return ckzgBlobToCommitment(blob)
7272
}
@@ -75,7 +75,7 @@ func BlobToCommitment(blob Blob) (Commitment, error) {
7575

7676
// ComputeProof computes the KZG proof at the given point for the polynomial
7777
// represented by the blob.
78-
func ComputeProof(blob Blob, point Point) (Proof, Claim, error) {
78+
func ComputeProof(blob *Blob, point Point) (Proof, Claim, error) {
7979
if useCKZG.Load() {
8080
return ckzgComputeProof(blob, point)
8181
}
@@ -95,15 +95,15 @@ func VerifyProof(commitment Commitment, point Point, claim Claim, proof Proof) e
9595
// the commitment.
9696
//
9797
// This method does not verify that the commitment is correct with respect to blob.
98-
func ComputeBlobProof(blob Blob, commitment Commitment) (Proof, error) {
98+
func ComputeBlobProof(blob *Blob, commitment Commitment) (Proof, error) {
9999
if useCKZG.Load() {
100100
return ckzgComputeBlobProof(blob, commitment)
101101
}
102102
return gokzgComputeBlobProof(blob, commitment)
103103
}
104104

105105
// VerifyBlobProof verifies that the blob data corresponds to the provided commitment.
106-
func VerifyBlobProof(blob Blob, commitment Commitment, proof Proof) error {
106+
func VerifyBlobProof(blob *Blob, commitment Commitment, proof Proof) error {
107107
if useCKZG.Load() {
108108
return ckzgVerifyBlobProof(blob, commitment, proof)
109109
}

crypto/kzg4844/kzg4844_ckzg_cgo.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ func ckzgInit() {
6262
}
6363

6464
// ckzgBlobToCommitment creates a small commitment out of a data blob.
65-
func ckzgBlobToCommitment(blob Blob) (Commitment, error) {
65+
func ckzgBlobToCommitment(blob *Blob) (Commitment, error) {
6666
ckzgIniter.Do(ckzgInit)
6767

68-
commitment, err := ckzg4844.BlobToKZGCommitment((ckzg4844.Blob)(blob))
68+
commitment, err := ckzg4844.BlobToKZGCommitment((*ckzg4844.Blob)(blob))
6969
if err != nil {
7070
return Commitment{}, err
7171
}
@@ -74,10 +74,10 @@ func ckzgBlobToCommitment(blob Blob) (Commitment, error) {
7474

7575
// ckzgComputeProof computes the KZG proof at the given point for the polynomial
7676
// represented by the blob.
77-
func ckzgComputeProof(blob Blob, point Point) (Proof, Claim, error) {
77+
func ckzgComputeProof(blob *Blob, point Point) (Proof, Claim, error) {
7878
ckzgIniter.Do(ckzgInit)
7979

80-
proof, claim, err := ckzg4844.ComputeKZGProof((ckzg4844.Blob)(blob), (ckzg4844.Bytes32)(point))
80+
proof, claim, err := ckzg4844.ComputeKZGProof((*ckzg4844.Blob)(blob), (ckzg4844.Bytes32)(point))
8181
if err != nil {
8282
return Proof{}, Claim{}, err
8383
}
@@ -103,21 +103,21 @@ func ckzgVerifyProof(commitment Commitment, point Point, claim Claim, proof Proo
103103
// the commitment.
104104
//
105105
// This method does not verify that the commitment is correct with respect to blob.
106-
func ckzgComputeBlobProof(blob Blob, commitment Commitment) (Proof, error) {
106+
func ckzgComputeBlobProof(blob *Blob, commitment Commitment) (Proof, error) {
107107
ckzgIniter.Do(ckzgInit)
108108

109-
proof, err := ckzg4844.ComputeBlobKZGProof((ckzg4844.Blob)(blob), (ckzg4844.Bytes48)(commitment))
109+
proof, err := ckzg4844.ComputeBlobKZGProof((*ckzg4844.Blob)(blob), (ckzg4844.Bytes48)(commitment))
110110
if err != nil {
111111
return Proof{}, err
112112
}
113113
return (Proof)(proof), nil
114114
}
115115

116116
// ckzgVerifyBlobProof verifies that the blob data corresponds to the provided commitment.
117-
func ckzgVerifyBlobProof(blob Blob, commitment Commitment, proof Proof) error {
117+
func ckzgVerifyBlobProof(blob *Blob, commitment Commitment, proof Proof) error {
118118
ckzgIniter.Do(ckzgInit)
119119

120-
valid, err := ckzg4844.VerifyBlobKZGProof((ckzg4844.Blob)(blob), (ckzg4844.Bytes48)(commitment), (ckzg4844.Bytes48)(proof))
120+
valid, err := ckzg4844.VerifyBlobKZGProof((*ckzg4844.Blob)(blob), (ckzg4844.Bytes48)(commitment), (ckzg4844.Bytes48)(proof))
121121
if err != nil {
122122
return err
123123
}

crypto/kzg4844/kzg4844_ckzg_nocgo.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ func ckzgInit() {
3232
}
3333

3434
// ckzgBlobToCommitment creates a small commitment out of a data blob.
35-
func ckzgBlobToCommitment(blob Blob) (Commitment, error) {
35+
func ckzgBlobToCommitment(blob *Blob) (Commitment, error) {
3636
panic("unsupported platform")
3737
}
3838

3939
// ckzgComputeProof computes the KZG proof at the given point for the polynomial
4040
// represented by the blob.
41-
func ckzgComputeProof(blob Blob, point Point) (Proof, Claim, error) {
41+
func ckzgComputeProof(blob *Blob, point Point) (Proof, Claim, error) {
4242
panic("unsupported platform")
4343
}
4444

@@ -52,11 +52,11 @@ func ckzgVerifyProof(commitment Commitment, point Point, claim Claim, proof Proo
5252
// the commitment.
5353
//
5454
// This method does not verify that the commitment is correct with respect to blob.
55-
func ckzgComputeBlobProof(blob Blob, commitment Commitment) (Proof, error) {
55+
func ckzgComputeBlobProof(blob *Blob, commitment Commitment) (Proof, error) {
5656
panic("unsupported platform")
5757
}
5858

5959
// ckzgVerifyBlobProof verifies that the blob data corresponds to the provided commitment.
60-
func ckzgVerifyBlobProof(blob Blob, commitment Commitment, proof Proof) error {
60+
func ckzgVerifyBlobProof(blob *Blob, commitment Commitment, proof Proof) error {
6161
panic("unsupported platform")
6262
}

crypto/kzg4844/kzg4844_gokzg.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ func gokzgInit() {
4646
}
4747

4848
// gokzgBlobToCommitment creates a small commitment out of a data blob.
49-
func gokzgBlobToCommitment(blob Blob) (Commitment, error) {
49+
func gokzgBlobToCommitment(blob *Blob) (Commitment, error) {
5050
gokzgIniter.Do(gokzgInit)
5151

52-
commitment, err := context.BlobToKZGCommitment((gokzg4844.Blob)(blob), 0)
52+
commitment, err := context.BlobToKZGCommitment((*gokzg4844.Blob)(blob), 0)
5353
if err != nil {
5454
return Commitment{}, err
5555
}
@@ -58,10 +58,10 @@ func gokzgBlobToCommitment(blob Blob) (Commitment, error) {
5858

5959
// gokzgComputeProof computes the KZG proof at the given point for the polynomial
6060
// represented by the blob.
61-
func gokzgComputeProof(blob Blob, point Point) (Proof, Claim, error) {
61+
func gokzgComputeProof(blob *Blob, point Point) (Proof, Claim, error) {
6262
gokzgIniter.Do(gokzgInit)
6363

64-
proof, claim, err := context.ComputeKZGProof((gokzg4844.Blob)(blob), (gokzg4844.Scalar)(point), 0)
64+
proof, claim, err := context.ComputeKZGProof((*gokzg4844.Blob)(blob), (gokzg4844.Scalar)(point), 0)
6565
if err != nil {
6666
return Proof{}, Claim{}, err
6767
}
@@ -80,19 +80,19 @@ func gokzgVerifyProof(commitment Commitment, point Point, claim Claim, proof Pro
8080
// the commitment.
8181
//
8282
// This method does not verify that the commitment is correct with respect to blob.
83-
func gokzgComputeBlobProof(blob Blob, commitment Commitment) (Proof, error) {
83+
func gokzgComputeBlobProof(blob *Blob, commitment Commitment) (Proof, error) {
8484
gokzgIniter.Do(gokzgInit)
8585

86-
proof, err := context.ComputeBlobKZGProof((gokzg4844.Blob)(blob), (gokzg4844.KZGCommitment)(commitment), 0)
86+
proof, err := context.ComputeBlobKZGProof((*gokzg4844.Blob)(blob), (gokzg4844.KZGCommitment)(commitment), 0)
8787
if err != nil {
8888
return Proof{}, err
8989
}
9090
return (Proof)(proof), nil
9191
}
9292

9393
// gokzgVerifyBlobProof verifies that the blob data corresponds to the provided commitment.
94-
func gokzgVerifyBlobProof(blob Blob, commitment Commitment, proof Proof) error {
94+
func gokzgVerifyBlobProof(blob *Blob, commitment Commitment, proof Proof) error {
9595
gokzgIniter.Do(gokzgInit)
9696

97-
return context.VerifyBlobKZGProof((gokzg4844.Blob)(blob), (gokzg4844.KZGCommitment)(commitment), (gokzg4844.KZGProof)(proof))
97+
return context.VerifyBlobKZGProof((*gokzg4844.Blob)(blob), (gokzg4844.KZGCommitment)(commitment), (gokzg4844.KZGProof)(proof))
9898
}

crypto/kzg4844/kzg4844_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ func randFieldElement() [32]byte {
3636
return gokzg4844.SerializeScalar(r)
3737
}
3838

39-
func randBlob() Blob {
39+
func randBlob() *Blob {
4040
var blob Blob
4141
for i := 0; i < len(blob); i += gokzg4844.SerializedScalarSize {
4242
fieldElementBytes := randFieldElement()
4343
copy(blob[i:i+gokzg4844.SerializedScalarSize], fieldElementBytes[:])
4444
}
45-
return blob
45+
return &blob
4646
}
4747

4848
func TestCKZGWithPoint(t *testing.T) { testKZGWithPoint(t, true) }

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/cespare/cp v0.1.0
1414
github.com/cloudflare/cloudflare-go v0.14.0
1515
github.com/consensys/gnark-crypto v0.10.0
16-
github.com/crate-crypto/go-kzg-4844 v0.7.0
16+
github.com/crate-crypto/go-kzg-4844 v1.0.0
1717
github.com/davecgh/go-spew v1.1.1
1818
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea
1919
github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH
101101
github.com/consensys/gnark-crypto v0.10.0 h1:zRh22SR7o4K35SoNqouS9J/TKHTyU2QWaj5ldehyXtA=
102102
github.com/consensys/gnark-crypto v0.10.0/go.mod h1:Iq/P3HHl0ElSjsg2E1gsMwhAyxnxoKK5nVyZKd+/KhU=
103103
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
104-
github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA=
105-
github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
104+
github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
105+
github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
106106
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
107107
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
108108
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=

params/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
const (
2525
VersionMajor = 5 // Major version component of the current release
2626
VersionMinor = 3 // Minor version component of the current release
27-
VersionPatch = 0 // Patch version component of the current release
27+
VersionPatch = 1 // Patch version component of the current release
2828
VersionMeta = "mainnet" // Version metadata to append to the version string
2929
)
3030

rollup/types/encoding/codecv1/codecv1.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ func constructBlobPayload(chunks []*encoding.Chunk) (*kzg4844.Blob, common.Hash,
355355
}
356356

357357
// compute blob versioned hash
358-
c, err := kzg4844.BlobToCommitment(*blob)
358+
c, err := kzg4844.BlobToCommitment(blob)
359359
if err != nil {
360360
return nil, common.Hash{}, nil, fmt.Errorf("failed to create blob commitment")
361361
}
@@ -452,12 +452,12 @@ func (b *DABatch) BlobDataProof() ([]byte, error) {
452452
return nil, errors.New("called BlobDataProof with empty z")
453453
}
454454

455-
commitment, err := kzg4844.BlobToCommitment(*b.blob)
455+
commitment, err := kzg4844.BlobToCommitment(b.blob)
456456
if err != nil {
457457
return nil, fmt.Errorf("failed to create blob commitment")
458458
}
459459

460-
proof, y, err := kzg4844.ComputeProof(*b.blob, *b.z)
460+
proof, y, err := kzg4844.ComputeProof(b.blob, *b.z)
461461
if err != nil {
462462
log.Crit("failed to create KZG proof at point", "err", err, "z", hex.EncodeToString(b.z[:]))
463463
}

0 commit comments

Comments
 (0)