Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/trudi-group/fbas_analyzer

Tools and library for analyzing FBASs like Stellar and MobileCoin
https://github.com/trudi-group/fbas_analyzer

byzantine-fault-tolerance consensus federated mobilecoin quorums rust scp stellar

Last synced: 20 days ago
JSON representation

Tools and library for analyzing FBASs like Stellar and MobileCoin

Awesome Lists containing this project

README

        

# FBAS analyzer

[![Cargo](https://img.shields.io/crates/v/fbas_analyzer.svg)](https://crates.io/crates/fbas_analyzer)
[![Documentation](https://docs.rs/fbas_analyzer/badge.svg)](https://docs.rs/fbas_analyzer)
[![CI](https://github.com/wiberlin/fbas_analyzer/actions/workflows/test.yml/badge.svg)](https://github.com/wiberlin/fbas_analyzer/actions/workflows/test.yml)
[![codecov](https://codecov.io/gh/wiberlin/fbas_analyzer/branch/master/graph/badge.svg?token=SADRQEH8DT)](https://codecov.io/gh/wiberlin/fbas_analyzer)

Library and tools for analyzing the quorum structure of Federated Byzantine Agreement Systems (FBASs) like [Stellar](https://www.stellar.org/) and [MobileCoin](https://mobilecoin.com/).
Related research paper [here](https://link.springer.com/article/10.1007/s00446-022-00430-0).

Among other things, the implementation here can:

- read node and organizations data in [stellarbeat](https://stellarbeat.io/)'s JSON format
- determine quorum intersection
- find all minimal quorums (minimal here means that each existing quorum is a superset of one of the minimal quorums)
- find all minimal blocking sets (minimal indispensable sets for liveness)
- find all minimal splitting sets (minimal indispensable sets for safety)
- simulate different quorum set configuration policies, yielding synthetic FBASs for further analysis

Powers our analysis websites for the [Stellar](https://trudi.weizenbaum-institut.de/stellar_analysis/) and [MobileCoin](https://trudi.weizenbaum-institut.de/mobilecoin_analysis/) networks.

## Usage as tools

1. [Install Rust](https://www.rust-lang.org/learn/get-started)
2. (optional) Run unit tests and functional tests:
```
scripts/tests.py
```
3. Build:
```
cargo build --release
```
4. Try tool using older data from stellarbeat:
```
target/release/fbas_analyzer test_data/stellarbeat_nodes_2019-09-17.json --merge-by-org test_data/stellarbeat_organizations_2019-09-17.json -a -p -S --only-core-nodes
```
5. Get some new data from stellarbeat:
```
scripts/get_latest_stellarbeat_data.sh
```
6. Play around some more:
```
target/release/fbas_analyzer -h
target/release/bulk_fbas_analyzer -h
```

You can also just `cargo install fbas_analyzer`, of course.

## Usage as Rust library

Add this to your `Cargo.toml`:
```
[dependencies]
fbas_analyzer = { version = "0.7", default-features = false }
```
Or this, if you need simulation functionality:
```
[dependencies]
fbas_analyzer = { version = "0.7", default-features = false, features = ["qsc-simulation"] }
```

Check out the [API Reference](https://docs.rs/fbas_analyzer/)
and how the API is used by the tools in `src/bin/` and the example in `examples`.

## See also / Acknowledgements

- The algorithms for determining quorum intersection and finding minimal quorums are inspired by [Lachowski 2019](https://arxiv.org/abs/1902.06493), respectively this [implementation](https://github.com/fixxxedpoint/quorum_intersection).
- [Stellar Observatory](https://github.com/andrenarchy/stellar-observatory) - a different set of FBAS analyses.
- [nodejs_fbas_analyzer](https://github.com/stellarbeat/nodejs_fbas_analyzer/)

...and of course the awesome [stellarbeat.io](http://stellarbeat.io) :)