Faster MVBA frame with optimistic path to support even lower latency in good cases.
pako's Introduction
pako's People
pako's Issues
Implement check_value() of Core
Implement the check_value() method of sMVBA protocol, which verifies the pi
proof to ensure no party committed the block of leader in the previous view.
Clean up epochs halted.
During one epoch reaching for consensus, Core
struct uses votes_aggregators
to store votes collected from each phase, which should be removed after halting from this epoch.
get_block() should be invoked after store_block()
Ref: https://github.com/guozhengxuan/fsMVBA/blob/7f8ecd672cfefdd35a050c401636df4ddec9124f/consensus/src/core.rs#LL58C6-L58C6
When core receives messages of n-f all No
Votes, it's going to reuse the block it proposed in current round as next-round block, which will be achieved by invoke self.get_block(&digest)
. For syncrony, get_block()
happens after store_block(&digest)
gets done, which requires implementing another customized future.
Wait for completed payloads when output a block.
Payload communication is isolated from the consensus of blocks. When generating a new block, the consensus Core
will grab some new payloads by mempool_driver
, which is actually done by mempool core. Meantime, the mempool core broadcasts all these new payloads to other nodes.
Before some node receives a block, the consensus requires all new payloads inside it are received to start any step progressing consensus.
A rough implementation is to discard the Val
message if the node does not receive all payloads the inside block holds. To restart processing this Val
, the node needs to send some retry message to let the dealer of Val
send it back.
The pi proof should be a member of core struct
Block
contains Proof
enum, which is either Pi
or Sigma
. Let core take over control of pi proof, otherwise this issue may occur:
When collecting n-f all No
Votes but the node itself has received the leader's block in the second PB, which means the block struct now has a Sigma
proof, this causes lost of the original Pi
proof in the first PB. Then there is no way to update the original Pi
proof by pushing into a new proof pair into it.
Use a synchoronizer to detach block storing and reading to background.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.