Crate | Documentation | Linux/OS X | Windows | Issues |
---|---|---|---|---|
MaidSafe website | SAFE Dev Forum | SAFE Network Forum |
---|
There is a basic example available in the examples folder. This allows you to simulate a network of peers each running the Parsec protocol to reach consensus on a number of random network events. There is also the ability to dump each peer's gossip graph in dot format to a file in your system temp dir. This can be enabled via the feature dump-graphs
. So, e.g. to run the example for a network of five peers and ten network events:
cargo run --example=basic --features=dump-graphs -- --peers=5 --events=10
To generate SVG graphs from the resulting dot files:
dot -Tsvg *.dot -O
- Initial implementation of PARSEC
- Demonstrates working consensus in a static network of peers
- Integration tests
- Simple tests show consensus being reached in a network of small size, with all nodes simulated in a single thread
- Data is randomly generated to allow for soak testing
- Soak testing has been performed for tens of thousands of run without errors
- Generation of graphs
- With the feature:
dump-graphs
, a dot representation of all network communications is output - The graphs are snapshots at the time each consensus decision is taken (one graph per node per consensus decision)
- The graphs are annotated with details of the PARSEC protocol that explain how consensus was ultimately reached
- An image (for instance .svg) can be obtained from the dot representation using dot
- With the feature:
- Reproducibility
- In case of test failure, a seed is output. That seed can be used to reproduce the failing scenario, which helps investigate the potential issue
- Simple example
- A simple example was created to allow testing various scenarios
- The number of peers, number of votes etc. can be configured by command line arguments
- Initial documentation
- Early documentation of the API is available here
- Foolproof handling of malice
- Handle forks (one node sends more than one event with the same
self_parent
) - Double voting (one node votes more than once for the same network event)
- Detection of malicious behaviour, resulting in consensus on excluding the offending peer
- Handle forks (one node sends more than one event with the same
- Performance
- Benchmark and optimise the code
- Perform measurements of Transactions Per Second in simulated network
- Use setup that can be compared with competing consensus protocols
- Extensive tests
- Implement extensive tests that simulate adversarial scenarios to prove robustness outside of the "happy path"
- Extensive documentation
- Documentation will be made comprehensive
- Dynamic network membership
Licensed under the General Public License (GPL), version 3 (LICENSE http://www.gnu.org/licenses/gpl-3.0.en.html).
Parsec is licensed under GPLv3 with linking exception. This means you can link to and use the library from any program, proprietary or open source; paid or gratis. However, if you modify parsec, you must distribute the source to your modified version under the terms of the GPLv3.
See the LICENSE file for more details.