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

Rollup protocol #2321

Merged
merged 2 commits into from
Jul 29, 2020
Merged

Rollup protocol #2321

merged 2 commits into from
Jul 29, 2020

Conversation

ineiti
Copy link
Member

@ineiti ineiti commented Jun 24, 2020

This replaces the transaction-gathering loop by a 'create-blocks-as-transactions-arrive'.
Instead of querying every blockInterval seconds all nodes for new transactions, this PR has all nodes sending their transactions to the leader whenever they get one.
The leader will immediately start a new block with the first transaction. While the block is created, more transactions can queue up. Once the block is done, all queued transactions will be put in a new block.

PLEASE DO NOT MERGE YET!

@ineiti ineiti added this to WIP in Cothority via automation Jun 24, 2020
@ineiti ineiti marked this pull request as draft June 24, 2020 14:29
@ineiti ineiti mentioned this pull request Jun 24, 2020
10 tasks
@ineiti ineiti marked this pull request as ready for review June 24, 2020 14:30
@ineiti ineiti force-pushed the rollup-protocol branch 7 times, most recently from 17174af to 8b5050f Compare July 1, 2020 13:54
@ineiti ineiti force-pushed the rollup-protocol branch 11 times, most recently from 170630c to f901058 Compare July 28, 2020 13:40
@ineiti ineiti moved this from WIP to Ready4Merge in Cothority Jul 29, 2020
@ineiti ineiti requested a review from tharvik July 29, 2020 10:27
@ineiti ineiti self-assigned this Jul 29, 2020
@ineiti ineiti moved this from Ready4Merge to WIP in Cothority Jul 29, 2020
byzcoin/rostsimul_test.go Show resolved Hide resolved
byzcoin/rostsimul_test.go Show resolved Hide resolved
byzcoin/service.go Outdated Show resolved Hide resolved
byzcoin/service.go Outdated Show resolved Hide resolved
byzcoin/transaction.go Outdated Show resolved Hide resolved
byzcoin/tx_pipeline.go Outdated Show resolved Hide resolved
byzcoin/tx_pipeline.go Show resolved Hide resolved
byzcoin/viewchange_test.go Outdated Show resolved Hide resolved
Previously the leader polled for new transactions. This is inefficient,
as new transactions have to wait for the leader to poll.

With this PR, the all followers forward transactions directly to the leader.
Once the leader has a transaction, he directly starts a new block.
Once the new block has been accepted, eventually queued up transactions
are also sent.

This has been tested to be able to go from old nodes to new nodes on a
local machine.
@ineiti
Copy link
Member Author

ineiti commented Jul 29, 2020

Thanks, I think I addressed all of the comments. Now I'm tempted to try and switch the chain tomorrow - just before 2 weeks of holidays... Probably not a good idea ;)

@ineiti ineiti moved this from WIP to Ready4Merge in Cothority Jul 29, 2020
@ineiti
Copy link
Member Author

ineiti commented Jul 29, 2020

OK - let's be crazy. I'll merge it and launch an update of the nodes tomorrow morning (4am UTC).

@ineiti ineiti merged commit 63a2ff9 into master Jul 29, 2020
Cothority automation moved this from Ready4Merge to Closed Jul 29, 2020
@ineiti ineiti deleted the rollup-protocol branch July 29, 2020 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Cothority
  
Closed
Development

Successfully merging this pull request may close these issues.

None yet

2 participants