Navigation Menu

Skip to content


Repository files navigation


Implementation of the FLUTE protocol.

Running the protocol

Installing Rust

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 | sh

Rustup is also available via most operating system package managers.

Compiling the benchmarking binary

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.

Running the benchmarks

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.

Silver support

Due to breaking changes in gcc-13, support for the silver encoding of Silent-OT is currently broken and disabled by default.


FLUTE: Fast and Secure Lookup Table Evaluations








No releases published


No packages published

Contributors 4