# Ironforce + Degeon IronForce is a peer-to-peer decentralized network, Degeon is a messenger built on it. In this repository there is three Cargo crates and one python project: - `ironforce` is the decentralized network - `degeon_core` contains messenger's protocol - `degeon` is the messenger app in Rust + Iced - `degeon_py` is a version of the messenger app in Python + Pygame ![](images/dependency_graph.png) # Ironforce The Ironforce network: - Has messages encrypted and signed using RSA - Can build efficient tunnels between two nodes - Is anonymous: it's very hard to create a connection between a node's IP and its public key - Can be extended to support any interface, like Bluetooth or even radio - Can run on ARM microcontrollers ![](images/scheme.png) ### Running IronForce The `IF` network has a worker daemon that can be used to read the broadcast messages and write them. Also, you can us `IF` as a Rust library (as it's done in Degeon). To get started: 1. Clone this repository: `git clone ssh://git@gitlab.ennucore.com:10022/ironforce/ironforce.git` 2. Install Rust and Cargo. The best way to do this is to use RustUp: ```shell sudo pacman -S rustup # this is for Arch Linux, on other distros use the corresponding package manager rustup default nightly # this will install rust & cargo (nightly toolchain) ``` 3. Run the worker: ```shell cd ironforce/ironforce cargo build --features std # This will build ironforce network # To run the worker, use this: cargo run --bin worker --features std ``` # Degeon Degeon is a messenger built on IronForce to show its abilities. Its core is in the crate `degeon_core`. The crate can be used as a Python module or in Rust. To build it, install Cargo and Rust, then do this: ```shell cd ironforce/degeon_core cargo build ``` You will find the `libdegeon_core.so` file that can be used in Python in the `target/debug` directory. It should be renamed to `degeon_core.so`. In Windows Rust should generate a `.dll` file that you will be able to use likewise. There are two GUI options for this interface: - A Rust + Iced client (preferred) - A Pygame client To run the Rust client, `cd` into the `degeon` folder of this repository, then use cargo: `cargo run`. Note: this application requires Vulkan to be installed. For me on Arch Linux and Intel GPU the installation command was `sudo pacman -S vulkan-intel`. On most systems it should be pre-installed.