In the pallet_babe config one can see the type KeyOwnerProofSystem as being set to Historical which is a reference to pallet_session::historical.

What functions does a KeyProofSystem serve? What is it "proving" and for whom?

1 Answer 1


Let's say you have found an equivocation for Babe. Aka you are saying that Alice build two blocks on the same height in session 100. You will now need to prove to the runtime that there is an equivocation. You send the proof to the runtime. While the runtime checks the proof, it needs to ensure that Alice is really part of the validator set in session 100. This check is done using the KeyProofSystem. In case of pallet_session::historical, it records all the validator sets for the last X sessions (can be configured) to prove these kind of requests.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.