linera-protocol
linera-protocol copied to clipboard
Do not discard certificates signed by revoked committees when syncing
Currently, when we sync, if we receive a certificate signed by a committee that has been revoked, we will simply consider it invalid and discard it. However, we should accept it if there is a newer certificate on that chain signed by an active committee.
In download_and_process_sender_chain, we should make sure that we remember the certificates that were signed by revoked committees and process them once we encounter a certificate signed by an active committee.
newer certificate on that chain signed by an active committee
But only if it refers to the old certificate by hash (e.g. because it's its child, or because it has it in previous_message_blocks).
Also, at that point the client can't know whether the actual signatures are correct on the old certificate, only that the block itself is correct. So ideally we'd only store the block at that point.