4

I've learned that babe chains, when all validators go offline, stalls and isn't recoverable. But my question is, from a database perspective we have the data in the chainstate folders right? So wouldn't it be possible to do something to "resurrect" a chain?

1 Answer 1

6

We do have the data of the current chain state but we are still bound by the rules that are set in the runtime, one of the current rules is that the BABE pallet assumes that there will be at least one block per epoch. Unless you somehow change the runtime (which you can't do without producing blocks), it is hard to get around this. Currently the only approach to recover from this situation is to "wind back" the local clock and produce blocks in the past so that they are accepted by the runtime. This is a manual and convoluted process, something that we do not want to inflict on our users (there are some pieces of advice on it here: https://github.com/paritytech/substrate/issues/4464).

That said, the end goal is to remove this limitation by allowing BABE to skip epochs entirely, i.e. if we were offline for 2 epochs then we would skip from epoch 2 to 4 when the validators come back online. This would still have security implications since the security model of BABE assumes protocol liveness (otherwise we don't collect entropy from the VRFs), but it would make this error go away for good.

1
  • What's the github issue (if there exists one) that will remove this limitation from babe? Could you post it here? May 1 at 11:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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