Autonomous Cooperative Consensus Orbit Determination (ACCORD) is a decentralised framework for satellite operations in Low Earth Orbit (LEO). It addresses the limitations of centralised coordination, such as single points of failure and trust bottlenecks, by leveraging a Directed Acyclic Graph (DAG)-based Distributed Ledger Technology (DLT).
In ACCORD, satellites use on-board sensors to observe one another and collaboratively determine their orbital positions. These observations are submitted to the distributed ledger, where consensus is achieved through Proof of Inter-Satellite Evaluation (PoISE) - a novel, reputation-based, Byzantine Fault Tolerant (BFT) consensus mechanism. Unlike traditional blockchain systems, PoISE does not rely on financial incentives or intermediaries. Instead, it validates orbit data by evaluating mutual observations and assessing the trustworthiness of both the data and the observing satellites.
This decentralised approach enhances data integrity, trust, and resilience across heterogeneous constellations. As more satellites join the network, ACCORD scales naturally, enabling secure and autonomous satellite operations—even in zero-trust environments.
This code is licensed under a GNU General Public License v3.0.
The project is currently at TRL 0. The PoISE consensus mechanism is in the early phases of development by Beth Probert, a PhD student at the University of Strathclyde's Applied Space Technology Laboratory. Once development of PoISE is completed, the rest of the ACCORD framework shall be developed around this consensus mechanism. By incorporating smart contracts in future development, the system will enable autonomous decision-making, allowing satellites to self-govern, coordinate tasks, and reroute services in real time.
📁 accord/ │ ├── 📁 .github/workflows/ # GitHub Workflow files │ └── main.yml # CI configuration for github: Pylint, Mypy and Pytest │ ├── 📁 design/ # Design documents, Jupyter notebooks and PlantUML diagrams │ ├── 📁 images/ # Image assets │ ├── 📁 src/ # Main source code │ └── __init__.py # Empty file, for module creation │ └── consensus_mech.py # Code for the PoISE consensus mechanism │ └── dag.py # Code for the Directed Acyclic Graph ledger structure │ └── filter.py # Code for the orbit determination calculations │ └── logger.py # Code for the app logger | └── plotting.py # Code for plotting simulation results │ └── reputation.py # Code for the satellite reputation manager │ └── satellite_node.py # Code representing a satellite in the network │ └── simulation.py # Helper functions for generating and converting satellite orbital elements. │ └── transaction.py # Code representing a transaction submitted by a satellite │ ├── 📁 tests/ # Unit tests, written with pytest | ├── .codespellrc # Codespell configuration file ├── .coveragerc # Pytest coverage configuration file ├── .gitignore # Files/folders to ignore in Git ├── .pylintrc # Pylint configuration file ├── accord_demo.py # Demonstration of ACCORD ├── changelog.md # Release change log ├── LICENSE.MD # License file ├── mypy.ini # Mypy configuration ├── README.md # Project overview ├── requirements.txt # List of python package dependencies └── requirements_linux.txt # List of python package dependencies for Linux and CI
Make sure Python 3.13 is installed on your system before proceeding with the installation. Follow these steps to set up the project in a Python virtual environment:
-
Clone the repository
git clone https://github.com/bprobert97/accord.git
-
Create a virtual environment
python -m venv venv
-
Activate the virtual environment
On Windows:
venv\Scripts\activate
On macOS/Linux:
source venv/bin/activate -
Install dependencies
On Windows:
pip install -r requirements.txt
On macOS/Linux:
pip install -r requirements_linux.txt
To run the ACCORD demo, either:
- In VSCode, right click
accord_demo.pyand selectRun Python File in Terminal - In a terminal, execute
py accord_demo.py