@@ -15,7 +15,6 @@ use ibc::{
15
15
ics02_client:: {
16
16
client_state:: ClientType , events as ClientEvents ,
17
17
msgs:: update_client:: MsgUpdateAnyClient ,
18
- msgs:: update_client_zk:: MsgUpdateAnyClientProof ,
19
18
trust_threshold:: TrustThreshold ,
20
19
} ,
21
20
ics04_channel:: packet:: Sequence ,
@@ -66,10 +65,7 @@ use std::{collections::HashSet, f32::consts::E, pin::Pin, str::FromStr, time::Du
66
65
use tendermint:: block:: Height as TmHeight ;
67
66
pub use tendermint:: Hash ;
68
67
use tendermint_rpc:: {
69
- endpoint:: tx:: Response ,
70
- event:: { Event , EventData } ,
71
- query:: { EventType , Query } ,
72
- Client , Error as RpcError , Order , SubscriptionClient ,
68
+ endpoint:: tx:: Response , event:: { Event , EventData } , query:: { EventType , Query } , request, Client , Error as RpcError , Order , SubscriptionClient
73
69
} ;
74
70
use tokio:: { task:: JoinSet , time:: sleep} ;
75
71
@@ -130,14 +126,10 @@ where
130
126
log:: info!( target: "hyperspace_cosmos" , "Getting blocks {}..{}" , from, to) ;
131
127
let to2 = to. clone ( ) ;
132
128
133
- // query (exclusively) up to `to`, because the proof for the event at `to - 1` will be
134
- // contained at `to` and will be fetched below by `msg_update_client_header`
135
129
let update_headers =
136
130
self . msg_update_client_header ( from, to, client_state. latest_height ) . await ?;
137
131
let mut block_events = Vec :: new ( ) ;
138
- // block_events.push((0, Vec::new()));
139
132
let mut join_set: JoinSet < Result < _ , anyhow:: Error > > = JoinSet :: new ( ) ;
140
- // let range = (from.value()..to.value()).collect::<Vec<_>>();
141
133
let range = ( from. value ( ) ..to. value ( ) ) . collect :: < Vec < _ > > ( ) ;
142
134
let delay_to = self . rpc_call_delay ( ) . as_millis ( ) ;
143
135
for heights in range. chunks ( 100 ) {
@@ -163,8 +155,6 @@ where
163
155
}
164
156
}
165
157
166
- // block_events.push((to.increment().value(), Vec::new()));
167
-
168
158
if block_events. len ( ) != update_headers. len ( ) {
169
159
return Err ( anyhow:: anyhow!(
170
160
"block events and updates must match, got {} and {}" ,
@@ -174,9 +164,6 @@ where
174
164
}
175
165
block_events. sort_by_key ( |( height, _) | * height) ;
176
166
177
- //replace updates.last() -> max_event_height
178
- //replace mandatory_updates.last() -> max_event_height
179
- //use the filter from prev fn in process_updates()
180
167
let all_ibc_events =
181
168
block_events. iter ( ) . map ( |ev| ev. 1 . clone ( ) ) . flatten ( ) . collect :: < Vec < _ > > ( ) ;
182
169
@@ -201,18 +188,6 @@ where
201
188
log:: error!( target: "hyperspace" , "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" ) ;
202
189
log:: error!( target: "hyperspace_cosmos" , "max_event_height blocks {}..{}. h :{}" , from, to2, max_event_height) ;
203
190
204
- //we can leave max_event_height as a zero in for inside if statement will be ignore all height if it is not max_event_height or mandatory
205
-
206
- // .max().unwrap_or_else(|| Height::zero());
207
-
208
- // .map(|(_, _, events, ..)| events.clone())
209
- // .flatten()
210
- // .collect::<Vec<_>>();
211
- //max_event_height never should be ZERO!!!
212
- //panic unreachable
213
- //fi let. max_event_height could be zero
214
- // if let some max_event_height => ask zk proof from remote api service!!!
215
-
216
191
let mut updates = Vec :: new ( ) ;
217
192
let mut continew = false ;
218
193
let mut exist_at_least_one_proof = false ;
@@ -222,7 +197,6 @@ where
222
197
. zip ( update_headers)
223
198
. enumerate ( )
224
199
{
225
- //todo check the that we do not have mandatory updates and only then add this one as a mandatory
226
200
if i == NUMBER_OF_BLOCKS_TO_PROCESS_PER_ITER as usize - 1 /* -2 */ {
227
201
update_type = UpdateType :: Mandatory ;
228
202
}
@@ -233,17 +207,6 @@ where
233
207
let mut zk_bitmask = 0 ;
234
208
235
209
if update_type == UpdateType :: Mandatory || height == max_event_height {
236
- //h1, h2, h3, h4, h5, h6, h7, h8, h9, h10
237
- //?- ? + ?
238
- //ask generate the proof or poll the proof from remote api service
239
-
240
- //ask about proof from remote api service or poll resp from remote api service
241
- //if prove does not exist then break the for loop
242
-
243
- //if proof does not exsits then continue the loop.
244
- // let zk_input = update_header.get_zk_input(1).unwrap();
245
-
246
-
247
210
let mock_zk_prover = false ;
248
211
if mock_zk_prover{
249
212
let mut zk_proover = self . mock_zk_prover . lock ( ) . unwrap ( ) ;
@@ -253,13 +216,29 @@ where
253
216
log:: error!( target: "hyperspace_cosmos" , "requested proof: {:?}, {:?}, {}" , update_type, height, is_request_ready) ;
254
217
println ! ( "requested proof: {:?}" , height) ;
255
218
219
+ if true {
220
+ zk_proof = vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ; //mock proof
221
+ /*
222
+ let expected_validators = vec![1]; all validators included in the proof
223
+ let mut zk_bitmask: u64 = 0;
224
+ for (index, &validator) in expected_validators.iter().enumerate() {
225
+ if validator == 1 {
226
+ zk_bitmask |= 1 << index;
227
+ }
228
+ }
229
+ */
230
+ zk_bitmask = 1 ; //it is real bitmask for local tests with 1 validator [1]
231
+ is_request_ready = true ;
232
+ exist_at_least_one_proof = true ;
233
+ }
256
234
if !is_request_ready{
257
235
continew = true ;
258
236
}
259
237
}
260
238
else {
261
239
let mut zk_height_proof_id_map = self . zk_proof_requests . lock ( ) . unwrap ( ) ;
262
240
let zk_prover = self . zk_prover_api . clone ( ) ;
241
+ let delay_secs = self . zk_prover_api . delay_secs ;
263
242
let proof_id = zk_height_proof_id_map. get ( & height) ;
264
243
if let Some ( proof_request) = proof_id{
265
244
let proof_request = proof_request. clone ( ) ;
@@ -276,7 +255,7 @@ where
276
255
}
277
256
else {
278
257
log:: info!( target: "hyperspace" , "proof not ready Yet. proof is None. proof_id: {:?}, height: {:?}" , proof_request, height) ;
279
- if proof_request. is_waiting_for_proof_too_long ( ) {
258
+ if proof_request. is_waiting_for_proof_too_long ( delay_secs ) {
280
259
log:: error!( target: "hyperspace" , "Proof not ready too long. proof_id: {:?}, height: {:?}, requested proof at : {:?}" , proof_request, height, proof_request. request_time) ;
281
260
}
282
261
@@ -288,8 +267,7 @@ where
288
267
}
289
268
}
290
269
else {
291
- // //todo get input. uncomment
292
- // //todo size should be 32 for prodauction
270
+ // //todo size should be 32 for mainnets. 1 is only for local testing.
293
271
let size = 1 ;
294
272
let zk_input = update_header. get_zk_input ( size) ;
295
273
@@ -328,28 +306,19 @@ where
328
306
continue ;
329
307
}
330
308
331
- //push will into updates updates
332
- /*
333
- non mumdatary #1 updates -> push.
334
- mundatary #5 push but not metter if other next mandatory without proof #6
335
-
336
- */
337
-
338
309
let zk_update_header = ics07_tendermint_zk:: client_message:: ZkHeader {
339
310
signed_header : update_header. signed_header . clone ( ) ,
340
311
validator_set : update_header. validator_set . clone ( ) ,
341
312
trusted_height : update_header. trusted_height . clone ( ) ,
342
313
trusted_validator_set : update_header. trusted_validator_set . clone ( ) ,
343
- zk_proof : zk_proof, //todo put the proof here
344
- zk_bitmask : zk_bitmask, //todo put the bitmask here
314
+ zk_proof : zk_proof,
315
+ zk_bitmask : zk_bitmask,
345
316
} ;
346
317
347
318
let update_client_header = {
348
- let msg = MsgUpdateAnyClientProof :: < LocalClientTypes > {
319
+ let msg = MsgUpdateAnyClient :: < LocalClientTypes > {
349
320
client_id : client_id. clone ( ) ,
350
- // client_message: AnyClientMessage::Tendermint(ClientMessage::Header(
351
321
client_message : AnyClientMessage :: TendermintZk ( ics07_tendermint_zk:: client_message:: ZkClientMessage :: Header (
352
- // update_header, //todo use another tipe that will be able to hold the proof as well
353
322
zk_update_header,
354
323
) ) ,
355
324
signer : counterparty. account_id ( ) ,
0 commit comments