PARSEC - Protocol for Asynchronous, Reliable, Secure and Efficient Consensus

|Crate|Documentation|Linux/macOS|Windows|Issues| |:---:|:-----------:|:---------:|:-----:|:----:| ||Documentation|Build Status|Build status|Stories in Ready|

| MaidSafe website | SAFE Dev Forum | SAFE Network Forum | |:----------------------------------------:|:-------------------------------------------:|:----------------------------------------------:|

Overview

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 --release --example=basic --features=mock,dump-graphs -- --initial-peers=5 --opaque=10

If you have dot from graphviz available in your path, then SVG graphs will also have been generated from each of these dot files. If not, you can copy the contents of a generated dot file into an online converter (e.g. http://viz-js.com) to view the gossip graph.

Detailed tutorial

If the instructions in the overview are a bit sparse for your taste, please refer to the tutorial for a step-by-step guide.

Implementation status:

Features already implemented

Upcoming features

License

Licensed under the General Public License (GPL), version 3 (LICENSE http://www.gnu.org/licenses/gpl-3.0.en.html).

Linking exception

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.

Contributing

Want to contribute? Great :tada:

There are many ways to give back to the project, whether it be writing new code, fixing bugs, or just reporting errors. All forms of contributions are encouraged!

For instructions on how to contribute, see our Guide to contributing.