|
|
|
# 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.
|