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

Gossipping => Finality #8

Open
jonas089 opened this issue Sep 13, 2024 · 4 comments
Open

Gossipping => Finality #8

jonas089 opened this issue Sep 13, 2024 · 4 comments

Comments

@jonas089
Copy link
Owner

jonas089 commented Sep 13, 2024

The way gossipping is implemented there will be a loop of requesting commitments for multiple blocks => a validator could cheat the network by submitting 2 blocks to different nodes.

A finality gadget could help solve this problem.

@jonas089 jonas089 reopened this Sep 13, 2024
@jonas089 jonas089 changed the title Gossipping => multiple valid blocks Gossipping => Finality Sep 13, 2024
@jonas089
Copy link
Owner Author

jonas089 commented Sep 18, 2024

Update: My current idea is that the past 10 blocks can be "challenged". If someone gossips a proposal with a lower hash than the one that was accepted, then the block is replaced. The timestamp will remain the same and therefore not impact the consensus established over future blocks.

This wouldn't work for a Blockchain that processes transactions, but since this is a sequencer we don't have to worry about temporary balance discrepancies. Finality will be reached after n + 10 Blocks so the L1 contract should await that period before processing the Transaction. The L2 should be mindful of this when submitting batches.

To anyone reading this, please let me know if you have better suggestions / ideas.

@jonas089
Copy link
Owner Author

jonas089 commented Oct 8, 2024

From my notes:
Synchronization must be adjusted to fetch Blocks where h<i<j.

h: block height
i: finality span
j: chain height

Also the longest chain should win whenever there is a conflict of two valid chains.

@Saksham010
Copy link

What would happen if there were more than 1 chain with same height at the 10th block seemingly broadcasted at nearly same time ?

@jonas089
Copy link
Owner Author

jonas089 commented Oct 17, 2024

What would happen if there were more than 1 chain with same height at the 10th block seemingly broadcasted at nearly same time ?

Sorry, nevermind. My first comment wasn't exactly on point. Here the real explanation for you scenario:

It can't happen because of the way the consensus is designed.

It's a bit complicated but essentially one of the reasons why a chainsplit won't happen is the majority threshold and perfectly deterministic validator selection algorithm.

There is always only one truth and it won't happen that nodes start accepting different blocks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants