tcrain / cons Goto Github PK
View Code? Open in Web Editor NEWExperimental project for testing and scaling consensus and broadcast algorithms
License: GNU General Public License v3.0
Experimental project for testing and scaling consensus and broadcast algorithms
License: GNU General Public License v3.0
When local random member selection is used, security relies on only the local node knowing the members.
Currently when an external node asks for recovery (i.e. in case of a lost message), the reply will, when loaded from disk contain the full state of the consensus instance which will reveal the members. Instead this should only contain the message sent by the local node.
Another issue is when using reliable broadcast, a set of Byzantine nodes can get the system to enter a sate when the Broadcast has started but not terminated, but the Byzantine nodes may allow it to
terminate later. This gives the attacker infinite time to identify and corrupt the member selection of nodes. A possible fix would be to allow a node to change members even for within the same reliable broadcast instance after a timeout, though this would need some careful design to ensure other properties are not broken.
The local random member selection type should be set using custom threshold instead of the usual
1/3 or 2/3. The reason is that the number of faults tolerated will be different given the randomization
Various discussions on things to add/improve in the project are found in TOADD.md,
eventually they should be added as issues.
Various issues are written in tofix, eventually they should be created as issues here.
Should add channels for transmitting metadata in a reliable way.
This could include things like
Allocation of buffers should be handled better.
Currently a message buffer may be copied multiple times after it is loaded from the network,
including when storing to disk.
After a message is read from the network there should be minimal copies.
It should also keep track of if a buffer is read only, so we know when it should be copied.
Also it would be nice to use a pool for message byte buffers to lessen impact of garbage collection.
There are points where crypto hashing is done even when not necessary, or done multiple times.
This especially is the case when not using signed messages.
Additionally, the hashes are sometimes used as keys in maps, where a shorter identifier should be used.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.