Implementation of the FLUTE protocol.
The project is implemented in the Rust programming language. To compile it, the latest stable toolchain is needed (older toolchains might work but are not guaranteed). The recommended way to install it, is via the toolchain manager rustup.
One way of installing rustup
:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rustup is also available via most operating system package managers.
To compile the benchmarking binary, use the command:
cargo build --release --bin bench
The binary will be placed at target/release/bench
.
Note that Flute currently only works with AVX2 support which means it is limited to x86. It will not compile on e.g. Apple Silicon.
To list the available options of the benchmarking binary.
./target/release/bench --help
A simple execution of a single circuit can be done via the following command:
RUST_LOG=info ./target/release/bench --id 0 --circuits crates/flute_benchmark/to_eval/sbox8.lut --net none
and in another terminal
RUST_LOG=info ./target/release/bench --id 1 --circuits crates/flute_benchmark/to_eval/sbox8.lut --net none
You will likely see error relating to the Baseline
directory. If you wish to benchmark the baseline circuits as well, the easiest way is to execute the bench
binary while inside crates/flute_benchmark/
. Then the default paths to the baseline circuits are correct.
Due to breaking changes in gcc-13, support for the silver encoding of Silent-OT is currently broken and disabled by default.