You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge branch 'eichhorl/fetch-complaints' into 'master'
fix(ecdsa): CON-1039 Do not drop complaints/openings for requested transcripts
Let [A, B, C, D] be a subnet.
Let `h_r` be the height at which transcripts `t1`, `t2` are requested (i.a. their configs are written into the block and the id is added to `requested_transcripts`).
Assume `t1` and `t2` are completed at a height `h_c > h_r`. They are added to `active_transcripts` and a new config for a transcript `t'` building on `t1` and `t2` is created.
Assume further that node A (B) was unable to support `t1` (`t2`) due to a corrupted dealing. When A (B) tries to create a dealing for `t'`, it is unable to load `t1` (`t2`), thus proceeds by sending a complaint for `t1` (`t2`).
Now assume that nodes C and D are slightly behind at a height `h` with `h_c > h >= h_r`. They receive A and B's complaints for `t1` and `t2`, but as the transcripts are not yet completed (`h_c > h`), in the current implementation, C and D will drop the adverts of the complaints and never receive them again or send the corresponding openings. Therefore, A and B are unable to create a dealing for `t'` and the transcript is stuck.
With this MR we fetch Complaints/Openings even if the corresponding transcript is requested but not yet completed. As processing Complaints/Openings without the completed transcript is impossible, we defer processing until later, when the transcript has moved from `requested` to `active`.
Additionally:
- Stop trying to create openings for own complaints. This fails when calling the crypto function and creates unnecessary logs and overhead.
See merge request dfinity-lab/public/ic!12486
0 commit comments