@@ -29,11 +29,14 @@ export async function main() {
2929 g1 : strip0x ( trustedSetup . g1_lagrange ) ,
3030 g2 : strip0x ( trustedSetup . g2_monomial ) ,
3131 } ;
32- const wasmKZG = await loadKZG ( opts ) ;
33- const nobleKZG = new kzg . KZG ( s_fast ) ;
32+ let mkzg , wkzg ;
3433
35- await bench ( 'init micro-eth-signer' , ( ) => new kzg . KZG ( s_fast ) , 1 ) ;
36- await bench ( 'init kzg-wasm' , ( ) => loadKZG ( opts ) , 1 ) ;
34+ await bench ( 'init micro-eth-signer' , ( ) => {
35+ mkzg = new kzg . KZG ( s_fast ) ;
36+ } , 1 ) ;
37+ await bench ( 'init kzg-wasm' , async ( ) => {
38+ wkzg = await loadKZG ( opts )
39+ } , 1 ) ;
3740
3841 const i0 = VIEM [ 'blob-to-kzg-commitment' ] [ 1 ] . input ;
3942 const i1 = VIEM [ 'compute-kzg-proof' ] [ 0 ] . input ;
@@ -42,50 +45,50 @@ export async function main() {
4245 const i4 = VIEM [ 'verify-blob-kzg-proof' ] [ 0 ] . input ;
4346 const i5 = VIEM [ 'verify-blob-kzg-proof-batch' ] [ 1 ] . input ;
4447
45- eql ( nobleKZG . blobToKzgCommitment ( i0 . blob ) , wasmKZG . blobToKZGCommitment ( i0 . blob ) . toLowerCase ( ) ) ;
48+ eql ( mkzg . blobToKzgCommitment ( i0 . blob ) , wkzg . blobToKZGCommitment ( i0 . blob ) . toLowerCase ( ) ) ;
4649 eql (
47- nobleKZG . computeBlobProof ( i2 . blob , i2 . commitment ) ,
48- wasmKZG . computeBlobKZGProof ( i2 . blob , i2 . commitment ) . toLowerCase ( )
50+ mkzg . computeBlobProof ( i2 . blob , i2 . commitment ) ,
51+ wkzg . computeBlobKZGProof ( i2 . blob , i2 . commitment ) . toLowerCase ( )
4952 ) ;
5053 eql (
51- nobleKZG . verifyProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ,
52- wasmKZG . verifyKZGProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof )
54+ mkzg . verifyProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ,
55+ wkzg . verifyKZGProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof )
5356 ) ;
5457 eql (
55- nobleKZG . verifyBlobProof ( i4 . blob , i4 . commitment , i4 . proof ) ,
56- wasmKZG . verifyBlobKZGProof ( i4 . blob , i4 . commitment , i4 . proof )
58+ mkzg . verifyBlobProof ( i4 . blob , i4 . commitment , i4 . proof ) ,
59+ wkzg . verifyBlobKZGProof ( i4 . blob , i4 . commitment , i4 . proof )
5760 ) ;
5861 eql (
59- nobleKZG . verifyBlobProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs ) ,
60- wasmKZG . verifyBlobKZGProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
62+ mkzg . verifyBlobProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs ) ,
63+ wkzg . verifyBlobKZGProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
6164 ) ;
6265 async function benchSigner ( ) {
6366 console . log ( ) ;
6467 console . log ( '# micro-eth-signer' ) ;
65- await bench ( 'blobToKzgCommitment' , ( ) => nobleKZG . blobToKzgCommitment ( i0 . blob ) ) ;
66- await bench ( 'computeProof' , ( ) => nobleKZG . computeProof ( i1 . blob , i1 . z ) ) ;
67- await bench ( 'computeBlobProof' , ( ) => nobleKZG . computeBlobProof ( i2 . blob , i2 . commitment ) ) ;
68- await bench ( 'verifyProof' , ( ) => nobleKZG . verifyProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ) ;
69- await bench ( 'verifyBlogProof ' , ( ) =>
70- nobleKZG . verifyBlobProof ( i4 . blob , i4 . commitment , i4 . proof )
68+ await bench ( 'blobToKzgCommitment' , ( ) => mkzg . blobToKzgCommitment ( i0 . blob ) ) ;
69+ await bench ( 'computeProof' , ( ) => mkzg . computeProof ( i1 . blob , i1 . z ) ) ;
70+ await bench ( 'computeBlobProof' , ( ) => mkzg . computeBlobProof ( i2 . blob , i2 . commitment ) ) ;
71+ await bench ( 'verifyProof' , ( ) => mkzg . verifyProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ) ;
72+ await bench ( 'verifyBlobProof ' , ( ) =>
73+ mkzg . verifyBlobProof ( i4 . blob , i4 . commitment , i4 . proof )
7174 ) ;
7275 await bench ( 'verifyBlobProofBatch' , ( ) =>
73- nobleKZG . verifyBlobProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
76+ mkzg . verifyBlobProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
7477 ) ;
7578 }
7679
7780 async function benchWasm ( ) {
7881 console . log ( ) ;
7982 console . log ( '# kzg-wasm' ) ;
80- await bench ( 'blobToKZGCommitment' , ( ) => wasmKZG . blobToKZGCommitment ( i0 . blob ) ) ;
83+ await bench ( 'blobToKZGCommitment' , ( ) => wkzg . blobToKZGCommitment ( i0 . blob ) ) ;
8184 // () => nobleKZG.computeProof(i1.blob, i1.z)
82- await bench ( 'computeBlobProof' , ( ) => wasmKZG . computeBlobKZGProof ( i2 . blob , i2 . commitment ) ) ;
83- await bench ( 'verifyProof' , ( ) => wasmKZG . verifyKZGProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ) ;
84- await bench ( 'verifyBlogProof ' , ( ) =>
85- wasmKZG . verifyBlobKZGProof ( i4 . blob , i4 . commitment , i4 . proof )
85+ await bench ( 'computeBlobProof' , ( ) => wkzg . computeBlobKZGProof ( i2 . blob , i2 . commitment ) ) ;
86+ await bench ( 'verifyProof' , ( ) => wkzg . verifyKZGProof ( i3 . commitment , i3 . z , i3 . y , i3 . proof ) ) ;
87+ await bench ( 'verifyBlobProof ' , ( ) =>
88+ wkzg . verifyBlobKZGProof ( i4 . blob , i4 . commitment , i4 . proof )
8689 ) ;
8790 await bench ( 'verifyBlobProofBatch' , ( ) =>
88- wasmKZG . verifyBlobKZGProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
91+ wkzg . verifyBlobKZGProofBatch ( i5 . blobs , i5 . commitments , i5 . proofs )
8992 ) ;
9093 }
9194 await benchSigner ( ) ;
@@ -97,27 +100,3 @@ import url from 'node:url';
97100if ( import . meta. url === url . pathToFileURL ( process . argv [ 1 ] ) . href ) {
98101 main ( ) ;
99102}
100-
101- /*
102- M2, Nov 2024
103- init
104- ├─wasm x 3 ops/sec @ 294ms/op
105- └─noble x 161 ops/sec @ 6ms/op
106- blobToKzgCommitment
107- ├─wasm x 3 ops/sec @ 304ms/op
108- └─noble x 1 ops/sec @ 705ms/op
109- computeKzgProof
110- └─noble x 112 ops/sec @ 8ms/op
111- computeBlobKzgProof
112- ├─wasm x 3 ops/sec @ 311ms/op
113- └─noble x 1 ops/sec @ 725ms/op
114- verifyKzgProof
115- ├─wasm x 241 ops/sec @ 4ms/op
116- └─noble x 91 ops/sec @ 10ms/op
117- verifyBlobKzgProof
118- ├─wasm x 109 ops/sec @ 9ms/op
119- └─noble x 59 ops/sec @ 16ms/op
120- verifyBlobKzgProofBatch
121- ├─wasm x 15 ops/sec @ 64ms/op
122- └─noble x 14 ops/sec @ 71ms/op
123- */
0 commit comments