@@ -71,20 +71,91 @@ function srs(wasm: Wasm, conversion: RustConversion) {
7171
7272function srsPerField ( f : 'fp' | 'fq' , wasm : Wasm , conversion : RustConversion ) {
7373 // note: these functions are properly typed, thanks to TS template literal types
74- let createSrs = ( s : number ) => wasm [ `caml_${ f } _srs_create_parallel` ] ( s ) ;
75- let getSrs = wasm [ `caml_${ f } _srs_get` ] ;
76- let setSrs = wasm [ `caml_${ f } _srs_set` ] ;
74+ let createSrs = ( size : number ) => {
75+ try {
76+ console . log ( 0 ) ;
77+ return wasm [ `caml_${ f } _srs_create_parallel` ] ( size ) ;
78+ } catch ( error ) {
79+ console . error ( `Error in SRS get for field ${ f } ` ) ;
80+ throw error ;
81+ }
82+ } ;
83+ let getSrs = ( srs : WasmSrs ) => {
84+ try {
85+ console . log ( 1 ) ;
86+ let v = wasm [ `caml_${ f } _srs_get` ] ( srs ) ;
87+ console . log ( 2 ) ;
88+ return v ;
89+ } catch ( error ) {
90+ console . error ( `Error in SRS get for field ${ f } ` ) ;
91+ throw error ;
92+ }
93+ } ;
94+ let setSrs = ( bytes : any ) => {
95+ try {
96+ console . log ( 2 ) ;
97+ return wasm [ `caml_${ f } _srs_set` ] ( bytes ) ;
98+ } catch ( error ) {
99+ console . error ( `Error in SRS set for field ${ f } args ${ bytes } ` ) ;
100+ throw error ;
101+ }
102+ } ;
103+
104+ let maybeLagrangeCommitment = ( srs : WasmSrs , domain_size : number , i : number ) => {
105+ try {
106+ console . log ( 3 ) ;
107+ return wasm [ `caml_${ f } _srs_maybe_lagrange_commitment` ] ( srs , domain_size , i ) ;
108+ } catch ( error ) {
109+ console . error ( `Error in SRS maybe lagrange commitment for field ${ f } ` ) ;
110+ throw error ;
111+ }
112+ } ;
113+ let lagrangeCommitment = ( srs : WasmSrs , domain_size : number , i : number ) => {
114+ try {
115+ console . log ( 4 ) ;
116+ return wasm [ `caml_${ f } _srs_lagrange_commitment` ] ( srs , domain_size , i ) ;
117+ } catch ( error ) {
118+ console . error ( `Error in SRS lagrange commitment for field ${ f } ` ) ;
119+ throw error ;
120+ }
121+ } ;
122+ let lagrangeCommitmentsWholeDomainPtr = ( srs : WasmSrs , domain_size : number ) => {
123+ try {
124+ console . log ( 5 ) ;
125+ return wasm [ `caml_${ f } _srs_lagrange_commitments_whole_domain_ptr` ] ( srs , domain_size ) ;
126+ } catch ( error ) {
127+ console . error ( `Error in SRS lagrange commitments whole domain ptr for field ${ f } ` ) ;
128+ throw error ;
129+ }
130+ } ;
131+ let setLagrangeBasis = ( srs : WasmSrs , domain_size : number , input : any ) => {
132+ try {
133+ console . log ( 6 ) ;
134+ return wasm [ `caml_${ f } _srs_set_lagrange_basis` ] ( srs , domain_size , input ) ;
135+ } catch ( error ) {
136+ console . error ( `Error in SRS set lagrange basis for field ${ f } ` ) ;
137+ throw error ;
138+ }
139+ } ;
140+ let getLagrangeBasis = ( srs : WasmSrs , n : number ) => {
141+ try {
142+ console . log ( 7 ) ;
143+ return wasm [ `caml_${ f } _srs_get_lagrange_basis` ] ( srs , n ) ;
144+ } catch ( error ) {
145+ console . error ( `Error in SRS get lagrange basis for field ${ f } ` ) ;
146+ throw error ;
147+ }
148+ } ;
149+ let getCommitmentsWholeDomainByPtr = ( ptr : number ) => {
150+ try {
151+ console . log ( 8 ) ;
152+ return wasm [ `caml_${ f } _srs_lagrange_commitments_whole_domain_read_from_ptr` ] ( ptr ) ;
153+ } catch ( error ) {
154+ console . error ( `Error in SRS get commitments whole domain by ptr for field ${ f } ` ) ;
155+ throw error ;
156+ }
157+ } ;
77158
78- let maybeLagrangeCommitment = wasm [ `caml_${ f } _srs_maybe_lagrange_commitment` ] ;
79- let lagrangeCommitment = ( srs : WasmFpSrs , domain_size : number , i : number ) =>
80- wasm [ `caml_${ f } _srs_lagrange_commitment` ] ( srs , domain_size , i ) ;
81- let lagrangeCommitmentsWholeDomainPtr = ( srs : WasmSrs , domain_size : number ) =>
82- wasm [ `caml_${ f } _srs_lagrange_commitments_whole_domain_ptr` ] ( srs , domain_size ) ;
83- let setLagrangeBasis = wasm [ `caml_${ f } _srs_set_lagrange_basis` ] ;
84- let getLagrangeBasis = ( srs : WasmSrs , n : number ) =>
85- wasm [ `caml_${ f } _srs_get_lagrange_basis` ] ( srs , n ) ;
86- let getCommitmentsWholeDomainByPtr =
87- wasm [ `caml_${ f } _srs_lagrange_commitments_whole_domain_read_from_ptr` ] ;
88159 return {
89160 /**
90161 * returns existing stored SRS or falls back to creating a new one
@@ -95,11 +166,14 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
95166 if ( srs === undefined ) {
96167 if ( cache === undefined ) {
97168 // if there is no cache, create SRS in memory
169+ console . log ( 'Creating SRS without cache' ) ;
98170 srs = createSrs ( size ) ;
171+ console . log ( 'SRS created without cache:' , srs ) ;
99172 } else {
100173 let header = cacheHeaderSrs ( f , size ) ;
101174
102175 // try to read SRS from cache / recompute and write if not found
176+ console . log ( 'Reading SRS from cache' ) ;
103177 srs = readCache ( cache , header , ( bytes ) => {
104178 // TODO: this takes a bit too long, about 300ms for 2^16
105179 // `pointsToRust` is the clear bottleneck
@@ -108,13 +182,17 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
108182 let wasmSrs = conversion [ f ] . pointsToRust ( mlSrs ) ;
109183 return setSrs ( wasmSrs ) ;
110184 } ) ;
111-
185+ console . log ( 'SRS read from cache:' , srs ) ;
112186 if ( srs === undefined ) {
113187 // not in cache
188+ console . log ( 1 ) ;
114189 srs = createSrs ( size ) ;
190+ console . log ( 'Writing SRS to cache' , srs ) ;
115191
116192 if ( cache . canWrite ) {
193+ console . log ( 2 ) ;
117194 let wasmSrs = getSrs ( srs ) ;
195+ console . log ( 3 ) ;
118196 let mlSrs = conversion [ f ] . pointsFromRust ( wasmSrs ) ;
119197 let jsonSrs = MlArray . mapFrom ( mlSrs , OrInfinity . toJSON ) ;
120198 let bytes = new TextEncoder ( ) . encode ( JSON . stringify ( jsonSrs ) ) ;
@@ -123,18 +201,21 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
123201 }
124202 }
125203 }
126-
204+ console . log ( 'Storing SRS in memory' ) ;
127205 srsStore [ f ] [ size ] = srs ;
206+ console . log ( 'SRS stored in memory:' , srs ) ;
128207 }
129208
130209 // TODO should we call freeOnFinalize() and expose a function to clean the SRS cache?
210+ console . trace ( 'Returning SRS:' , srs ) ;
131211 return srsStore [ f ] [ size ] ;
132212 } ,
133213
134214 /**
135215 * returns ith Lagrange basis commitment for a given domain size
136216 */
137217 lagrangeCommitment ( srs : WasmSrs , domainSize : number , i : number ) : PolyComm {
218+ console . log ( 'lagrangeCommitment' ) ;
138219 // happy, fast case: if basis is already stored on the srs, return the ith commitment
139220 let commitment = maybeLagrangeCommitment ( srs , domainSize , i ) ;
140221
@@ -208,6 +289,8 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
208289 * Returns the Lagrange basis commitments for the whole domain
209290 */
210291 lagrangeCommitmentsWholeDomain ( srs : WasmSrs , domainSize : number ) {
292+ console . log ( 'lagrangeCommitmentsWholeDomain' ) ;
293+
211294 // instead of getting the entire commitment directly (which works for nodejs/servers), we get a pointer to the commitment
212295 // and then read the commitment from the pointer
213296 // this is because the web worker implementation currently does not support returning UintXArray's directly
@@ -224,6 +307,7 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
224307 * adds Lagrange basis for a given domain size
225308 */
226309 addLagrangeBasis ( srs : WasmSrs , logSize : number ) {
310+ console . log ( 'addLagrangeBasis' ) ;
227311 // this ensures that basis is stored on the srs, no need to duplicate caching logic
228312 this . lagrangeCommitment ( srs , 1 << logSize , 0 ) ;
229313 } ,
@@ -270,3 +354,13 @@ function readCacheLazy(
270354 return true ;
271355 } ) ;
272356}
357+ function runInTryCatch < T extends ( ...args : any [ ] ) => any > ( fn : T ) : T {
358+ return function ( ...args : Parameters < T > ) : ReturnType < T > {
359+ try {
360+ return fn ( ...args ) ;
361+ } catch ( e ) {
362+ console . error ( `Error in SRS function ${ fn . name } with args:` , args ) ;
363+ throw e ;
364+ }
365+ } as T ;
366+ }
0 commit comments