Skip to content

Python implementation of the ring confidential transaction signatures used in Monero

License

Notifications You must be signed in to change notification settings

Fantoni0/RingCTPerformance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ring Confidential Transaction Signatures Performance Analysis

Python implementation of the ring confidential transaction signatures used in Monero. More details about RingCT can be found here on chapter 6.

We present a framework to analyze and compare the performance of ringCT using different elliptic curves. The code is parallelized using joblib and it tries to run as many signatures in parallel as cpu cores available.

⚠️ This is a repository for research purposes. Cryptography is a pretty sensible issue and only reputed and tested sources should be used in a production environment. Use at your own risk!

⚠️ Also bear in mind that Monero is a huge and dynamic open source project subjected to changes. The signatures here implemented might change in the future.

ℹ️ The presented results were obtained using a Ryzen 7 3700X (16 cores) processor on Linux 🐧. Times might change in different environments.

Installation

Assuming that you have pip installed:

git clone https://github.com/Fantoni0/RingCTPerformance
cd RingCTPerformance
pip install -r requirements.txt

Requirements

The library has minimal requirements. All of them are included in requirements.txt. Following the installation process solves the dependencies.

  • tinyec for EC math.
  • nummaster for modular square root.
  • matplotlib for plotting the results.
  • joblib for parallelization.

Usage

An example of how to use the library:

python main.py -rs 8 16 32 64\ 
 -c brainpoolP160r1 secp192r1 secp224r1 secp256r1\
 -m 'I voted for Kodos'\ 
 -o comparative

If you want to experiment with single ring signatures, you can do so in test_RingCT.ipynb.

Resources

Multiple ring signature algorithms exist and they might be confusing at first. Here are some pointers we found useful:

Citation

This repository is part of a research article carried out by ALFA research group. If you use it, please cite:

@article{larriba2021distributed,
  title={Distributed Trust, a Blockchain Election Scheme},
  author={Larriba, Antonio M and Cerd{\`a} i Cuc{\'o}, Aleix and Sempere, Jos{\'e} M and L{\'o}pez, Dami{\'a}n},
  journal={Informatica},
  volume={32},
  number={2},
  pages={321--355},
  year={2021},
  publisher={Vilnius University Institute of Data Science and Digital Technologies}
}

About

Python implementation of the ring confidential transaction signatures used in Monero

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published