Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TendermintMachine may equivocate on reboot #345

Closed
kayabaNerve opened this issue Aug 16, 2023 · 2 comments
Closed

TendermintMachine may equivocate on reboot #345

kayabaNerve opened this issue Aug 16, 2023 · 2 comments
Labels
bug Something isn't working critical This is critical tendermint

Comments

@kayabaNerve
Copy link
Member

One method would be to wait till the next block after boot, to ensure it doesn't, yet then it risks stalling if every node goes offline (as on reboot, they'll all wait for the next block which will never come).

@kayabaNerve kayabaNerve added bug Something isn't working critical This is critical tendermint labels Aug 16, 2023
kayabaNerve added a commit that referenced this issue Mar 8, 2024
Part of #345.

The lack of full DB persistence does mean enough nodes rebooting at the same
time may cause a halt. This will prevent slashes.
@kayabaNerve
Copy link
Member Author

#561 will fix this.

@kayabaNerve
Copy link
Member Author

This was solved in the cited PR:

// Check we haven't sent this message within this round
let msg_key = key(match res.data.step() {
Step::Propose => PROPOSE_KEY,
Step::Prevote => PEVOTE_KEY,
Step::Precommit => PRECOMMIT_KEY,
});
if txn.get(&msg_key).is_some() {
assert!(!new_block);
assert!(!new_round);
None?;
}
// Put that we're sending this message to the DB
txn.put(&msg_key, []);
txn.commit();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working critical This is critical tendermint
Projects
None yet
Development

No branches or pull requests

1 participant