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

Allow transaction certification before synchronization #16

Open
kushal-babel opened this issue Jul 31, 2023 · 3 comments
Open

Allow transaction certification before synchronization #16

kushal-babel opened this issue Jul 31, 2023 · 3 comments

Comments

@kushal-babel
Copy link
Contributor

IIUC from the code, we currently wait for the causal history of a block to be completely synchronized before aggregating votes for transactions and checking if we have a certificate (2f+1 votes).
If we can already see that we have a certificate for a transaction (regardless of the position of that block in the DAG), I think we need not wait for sync to be complete in order to process the certificate (e.g. execution).
This may help us in bridging some of the latency gap between fast path of Mysticeti and that of Sui Lutris.
cc @andll @asonnino @gdanezis

@andll
Copy link
Collaborator

andll commented Aug 1, 2023

Yes, I think we can do it from the correctness point of view. I would challenge a bit whether this will in practice reduce the latency though. Perhaps you can add a metric for a number of blocks suspended in the BlockManager(can be useful anyway) to check if we actually have any blocks there(the good practice here would be to add two counters - when block is suspended and when it is removed from suspended, this way we can estimate both number of blocks in suspended and the rate at which blocks are added to suspended)

@andll
Copy link
Collaborator

andll commented Aug 1, 2023

cc @LefKok

@asonnino
Copy link
Collaborator

asonnino commented Aug 1, 2023

Let's just be careful to not do too much work about a block with non-existent parents. The important bit is that we cannot issue a vote without having the parents. Also the exec engine will have to realise that some dependencies may be missing and suspend execution (not a big deal, Sui does it)

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

4 participants
@andll @asonnino @kushal-babel and others