1
- use std:: sync:: { Arc , Mutex } ;
1
+ use std:: sync:: { Arc , RwLock } ;
2
2
3
3
use napi:: {
4
4
bindgen_prelude:: { AsyncTask , BigInt , Env , Error , Uint8Array } ,
@@ -26,7 +26,7 @@ pub struct AsyncBlobToKzgCommitment {
26
26
blob : Uint8Array ,
27
27
28
28
// TODO: make this RwLock parking_lot crate
29
- prover_context : Arc < Mutex < ProverContext > > ,
29
+ prover_context : Arc < RwLock < ProverContext > > ,
30
30
}
31
31
32
32
#[ napi]
@@ -38,7 +38,7 @@ impl Task for AsyncBlobToKzgCommitment {
38
38
let blob = self . blob . as_ref ( ) ;
39
39
let prover_context = self
40
40
. prover_context
41
- . lock ( )
41
+ . read ( )
42
42
. map_err ( |_| napi:: Error :: from_reason ( "Failed to acquire lock" ) ) ?;
43
43
let commitment = prover_context. blob_to_kzg_commitment ( blob) ;
44
44
Ok ( commitment)
@@ -62,7 +62,7 @@ pub struct CellsAndProofs {
62
62
63
63
pub struct AsyncComputeCellsAndKzgProofs {
64
64
blob : Uint8Array ,
65
- prover_context : Arc < Mutex < ProverContext > > ,
65
+ prover_context : Arc < RwLock < ProverContext > > ,
66
66
}
67
67
68
68
#[ napi]
@@ -74,7 +74,7 @@ impl Task for AsyncComputeCellsAndKzgProofs {
74
74
let blob = self . blob . as_ref ( ) ;
75
75
let prover_context = self
76
76
. prover_context
77
- . lock ( )
77
+ . read ( )
78
78
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
79
79
let ( cells, proofs) = prover_context. compute_cells_and_kzg_proofs ( blob) ;
80
80
@@ -98,7 +98,7 @@ impl Task for AsyncComputeCellsAndKzgProofs {
98
98
99
99
pub struct AsyncComputeCells {
100
100
blob : Uint8Array ,
101
- prover_context : Arc < Mutex < ProverContext > > ,
101
+ prover_context : Arc < RwLock < ProverContext > > ,
102
102
}
103
103
104
104
#[ napi]
@@ -110,7 +110,7 @@ impl Task for AsyncComputeCells {
110
110
let blob = self . blob . as_ref ( ) ;
111
111
let prover_context = self
112
112
. prover_context
113
- . lock ( )
113
+ . read ( )
114
114
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
115
115
let cells = prover_context. compute_cells ( blob) ;
116
116
Ok ( cells)
@@ -127,15 +127,15 @@ impl Task for AsyncComputeCells {
127
127
128
128
#[ napi]
129
129
pub struct ProverContextJs {
130
- inner : Arc < Mutex < ProverContext > > ,
130
+ inner : Arc < RwLock < ProverContext > > ,
131
131
}
132
132
133
133
#[ napi]
134
134
impl ProverContextJs {
135
135
#[ napi( constructor) ]
136
136
pub fn new ( ) -> Self {
137
137
ProverContextJs {
138
- inner : Arc :: new ( Mutex :: new ( ProverContext :: new ( ) ) ) ,
138
+ inner : Arc :: new ( RwLock :: new ( ProverContext :: new ( ) ) ) ,
139
139
}
140
140
}
141
141
@@ -144,7 +144,7 @@ impl ProverContextJs {
144
144
let blob = blob. as_ref ( ) ;
145
145
let prover_context = self
146
146
. inner
147
- . lock ( )
147
+ . read ( )
148
148
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
149
149
let commitment = prover_context. blob_to_kzg_commitment ( blob) ;
150
150
Ok ( Uint8Array :: from ( & commitment) )
@@ -166,7 +166,7 @@ impl ProverContextJs {
166
166
let blob = blob. as_ref ( ) ;
167
167
let prover_context = self
168
168
. inner
169
- . lock ( )
169
+ . read ( )
170
170
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
171
171
let ( cells, proofs) = prover_context. compute_cells_and_kzg_proofs ( blob) ;
172
172
@@ -201,7 +201,7 @@ impl ProverContextJs {
201
201
let blob = blob. as_ref ( ) ;
202
202
let prover_context = self
203
203
. inner
204
- . lock ( )
204
+ . read ( )
205
205
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
206
206
let cells = prover_context. compute_cells ( blob) ;
207
207
@@ -227,7 +227,7 @@ pub struct AsyncVerifyCellKzgProof {
227
227
cell_id : u64 ,
228
228
cell : Vec < u8 > ,
229
229
proof : Vec < u8 > ,
230
- verifier_context : Arc < Mutex < VerifierContext > > ,
230
+ verifier_context : Arc < RwLock < VerifierContext > > ,
231
231
}
232
232
233
233
#[ napi]
@@ -241,7 +241,7 @@ impl Task for AsyncVerifyCellKzgProof {
241
241
let proof = self . proof . as_ref ( ) ;
242
242
let verifier_context = self
243
243
. verifier_context
244
- . lock ( )
244
+ . read ( )
245
245
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
246
246
Ok ( verifier_context. verify_cell_kzg_proof ( commitment, self . cell_id , cell, proof) )
247
247
}
@@ -253,15 +253,15 @@ impl Task for AsyncVerifyCellKzgProof {
253
253
254
254
#[ napi]
255
255
pub struct VerifierContextJs {
256
- inner : Arc < Mutex < VerifierContext > > ,
256
+ inner : Arc < RwLock < VerifierContext > > ,
257
257
}
258
258
259
259
#[ napi]
260
260
impl VerifierContextJs {
261
261
#[ napi( constructor) ]
262
262
pub fn new ( ) -> Self {
263
263
VerifierContextJs {
264
- inner : Arc :: new ( Mutex :: new ( VerifierContext :: new ( ) ) ) ,
264
+ inner : Arc :: new ( RwLock :: new ( VerifierContext :: new ( ) ) ) ,
265
265
}
266
266
}
267
267
@@ -282,7 +282,7 @@ impl VerifierContextJs {
282
282
assert ! ( signed == false , "cell id should be an unsigned integer" ) ;
283
283
let verifier_context = self
284
284
. inner
285
- . lock ( )
285
+ . read ( )
286
286
. map_err ( |_| Error :: from_reason ( "Failed to acquire lock" ) ) ?;
287
287
288
288
let cell_id_u64 = cell_id_value as u64 ;
0 commit comments