{"id":29273990,"url":"https://github.com/stellar/stellar-quorum-analyzer","last_synced_at":"2026-01-20T17:43:09.613Z","repository":{"id":300305411,"uuid":"924352530","full_name":"stellar/stellar-quorum-analyzer","owner":"stellar","description":"Library for analyzing Stellar network quorum properties","archived":false,"fork":false,"pushed_at":"2025-08-07T01:13:49.000Z","size":5045,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-08-07T03:11:59.485Z","etag":null,"topics":["fbas","network-analysis","quorum","quorum-intersection","sat-solver","stellar-network"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stellar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-29T21:05:42.000Z","updated_at":"2025-08-07T01:13:53.000Z","dependencies_parsed_at":"2025-08-07T03:08:38.060Z","dependency_job_id":"3578dbb2-4e3b-4f0f-ab99-e0737bf3c2d0","html_url":"https://github.com/stellar/stellar-quorum-analyzer","commit_stats":null,"previous_names":["stellar/stellar-quorum-analyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stellar/stellar-quorum-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellar%2Fstellar-quorum-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellar%2Fstellar-quorum-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellar%2Fstellar-quorum-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellar%2Fstellar-quorum-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stellar","download_url":"https://codeload.github.com/stellar/stellar-quorum-analyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellar%2Fstellar-quorum-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274949581,"owners_count":25379446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fbas","network-analysis","quorum","quorum-intersection","sat-solver","stellar-network"],"created_at":"2025-07-05T03:13:11.804Z","updated_at":"2026-01-20T17:43:09.585Z","avatar_url":"https://github.com/stellar.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FBAS Quorum Intersection Analyzer\n\nA library for analyzing quorum intersection properties in Federated Byzantine Agreement Systems (FBAS), specifically designed for the Stellar Consensus Protocol (SCP).\n\n## Overview\n\nThis analyzer uses a SAT solver to verify the quorum intersection property of FBAS networks. In SCP, the quorum intersection property (any two quorums must share at least one node) is crucial for network safety. The library can detect potential network splits by finding disjoint quorums if they exist.\n\n## Use Cases\n\n- **Primary**: Integrated with stellar-core for runtime quorum analysis during network operations (validator joins, departures, or configuration changes)\n- **Secondary**: Experimental analysis of network configurations via JSON input\n\n## Features\n\n- SAT solver-based analysis of quorum intersection properties\n- Support for XDR-serialized quorum set maps via buffer interface\n- JSON-based quorum set map input (optional, requires `json` feature)\n\n## Building and Testing\n\n- `cargo build --release`\n\n- `cargo build --features json`\n\n- `cargo test`\n\nTest cases can be found in the `tests/test_data` directory. `tests_date/random` directory contains randomly generated configurations up to 16 organizations.\n\n## Performance\n\nPerformance benchmarks comparing different SAT solvers are available in the `benches` directory. After evaluating multiple pure-Rust SAT solvers against the test cases, Batsat was chosen as the primary solver for its performance and features (e.g. async interrupt).\n\nTo run benchmarks:\n\n- `cargo bench`\n\n\n## Documentation\n\n- `docs/methods.md`: Contains detailed derivation of the methodology and SAT formulas used in the analyzer\n- API documentation: `cargo doc --open`\n\n## Usage\n\n### As a Library\n\n```rust\nuse fbas_analyzer::{FbasAnalyzer, Basic};\n// From XDR-serialized buffer\nlet analyzer = FbasAnalyzer::from_quorum_set_map_buf(nodes, quorum_sets, Basic::default())?;\nlet result = analyzer.solve();\n// From JSON (requires 'json' feature)\nlet analyzer = FbasAnalyzer::from_json_path(\"quorum_map.json\", Basic::default())?;\nlet result = analyzer.solve();\n// Get potential split information\nif let Ok((quorum_a, quorum_b)) = analyzer.get_potential_split() {\n    // Process split information\n}\n```\n\n## Input Formats\n\n- **Buffer Interface**: Primary method for stellar-core integration, accepts XDR-serialized quorum maps\n- **JSON**: Alternative input method for configuration testing (requires `json` feature)\n\n## Future Work\n\n- Command-line interface for JSON-based quorum analysis","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstellar%2Fstellar-quorum-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstellar%2Fstellar-quorum-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstellar%2Fstellar-quorum-analyzer/lists"}