Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/trudi-group/fbas_analyzer
- Owner: trudi-group
- License: mit
- Created: 2019-10-14T14:51:28.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-25T15:21:17.000Z (12 months ago)
- Last Synced: 2024-11-07T23:31:12.361Z (about 1 month ago)
- Topics: byzantine-fault-tolerance, consensus, federated, mobilecoin, quorums, rust, scp, stellar
- Language: Rust
- Homepage:
- Size: 688 KB
- Stars: 11
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 analysisPowers 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) :)