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

Full nodes should not accept invalid blocks #2789

Open
4 tasks
cmwaters opened this issue Oct 30, 2023 · 0 comments
Open
4 tasks

Full nodes should not accept invalid blocks #2789

cmwaters opened this issue Oct 30, 2023 · 0 comments
Labels
bug Something isn't working WS: Maintenance 🔧 includes bugs, refactors, flakes, and tech debt etc

Comments

@cmwaters
Copy link
Contributor

cmwaters commented Oct 30, 2023

Summary

Blocks can be invalid for several reasons:

  • The square was incorrectly built based on the set of txs
  • PFBs and NonPFBs were not correctly separated
  • Signatures were invalid
  • Insufficient fees or gas

Note, that because we don't actually execute the block, it's okay that some transactions aren't valid.

If a group of byzantine validators (>2/3 in voting power) commit to an invalid block, whereby an honest node rejected it in ProcessProposal, all honest nodes will still continue to execute and propagate that invalid block.

What we should do is generate BEFPs (and any other proof), propagate them around the network using go-fraud and shut down the consensus reactor so we no longer vote on any more block until social consensus has re-established the canonical path forward (perhaps in the future we can resolve some invalid blocks automatically)

Proposal

Most likely we should cache the hashes of the invalid blocks in ProcessProposal and if we seem them committed in BeginBlock we return an error to consensus which deletes the last block and no longer processes any more transactions

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@cmwaters cmwaters added enhancement New feature or request and removed enhancement New feature or request labels Oct 30, 2023
@cmwaters cmwaters added this to the Post-mainnet milestone Oct 30, 2023
@evan-forbes evan-forbes modified the milestones: Post-mainnet, v2 Nov 8, 2023
@rootulp rootulp removed this from the v2 milestone Mar 1, 2024
@evan-forbes evan-forbes added bug Something isn't working and removed needs:triage labels Mar 4, 2024
@evan-forbes evan-forbes added WS: Maintenance 🔧 includes bugs, refactors, flakes, and tech debt etc needs:triage and removed needs:triage labels May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working WS: Maintenance 🔧 includes bugs, refactors, flakes, and tech debt etc
Projects
None yet
Development

No branches or pull requests

3 participants