Lelantus is Firo’s next generation privacy protocol which improves on Sigma by removing the requirement of fixed denominations allowing people to burn arbitrary amounts and redeem partial amounts without revealing values or the source. Lelantus doesn’t require any trusted setup and uses only DDH assumptions. It also supports untraceable direct anonymous payments by allowing people to pass the right to redeem to someone else. Lelantus is Firo’s own innovation described in [https://lelantus.io/].
.
├── src # Source code for the protocol & schema
├── bitcoin # Slightly modified source code from bitcoin
├── secp256k1 # Slightly modified source code from secp256k1
├── tests # Test executables
├── build # Script to build executables in tests (Linux & MacOS)
├── run_all_tests # Script to run all tests together
└── README.mdℤ
The code can be compiled using the following command from the root directory of the repository.
./build <directory>
For example, build ~/macos
will put the executables protocol_tests
, challenge_generator_tests
, coin_tests
, inner_product_test
, joinsplit_tests
, lelantus_primitives_tests
, range_proof_test
, serialize_test
, sigma_extended_test
and schnorr_test
in the directory ~/macos
.
The elliptic curve group secp256k1
used in Bitcoin.
The executable protocol_tests runs Lelantus proof generation and verification tests. It creates random anonymity sets, puts there there coins, generates proofs and tries to verify
The executable challenge_generator_tests creates various types of challenges, used in Lelantus protocol, and checks correctness of challenges
The executable coin_tests creates coins and runes several checks on them
The executable inner_product_test creates inner profuct proofs and tries to verify running InnerProductProofVerifier
The executable joinsplit_tests runs tests for whole schema.
The executable lelantus_primitives_tests runs tests for primitives used in Lelantus protocol
The executable schnorr_test creates Schnorr proofs and tires to verify them for checking the correctness of creation and verification of the proof.
The executable range_proof_test creates Bulletproofs Range proofs and tires to verify them for checking the correctness of creation and verification of the proof.
The executable sigma_extended_test creates Sigma proofs and tires to verify them for checking the correctness of creation and verification of the proof.
The executable serialization_test runs tests for EC Group element, Scalar, InnerProduct proof, Range proof, Schnorr proof, Sigma and Sigma proofs. It serializes the object, deserializes it to another object and compares them.