This is a simple prototype of an Ethereum crypto wallet that uses ZenGo-X implementation of {t,n}-Threshold ECDSA based on the GG20 algorithm. We point to their Binance academy article for an exmplanation of threshold signatures.
The prototype has the following features:
- For every wallet, n key shares are generated.
- Any n-t out of the n shares can sign a transaction.
- A private key is never generated to create a new wallet.
- The private key doesn’t need to be reconstructed to sign a transaction. \end{enumerate}
- Install ZenGo-X implementation in your Home directory.
- Install Rust
- Install GMP library (optionally)
- Clone the repo from manel1874 fork. (Note: this takes into account the updates by narayanprusty)
git clone https://github.com/manel1874/multi-party-ecdsa.git
- Build the project
cargo build --release --examples
For further guidance we refer to ZenGo-X library.
- Install Python dependencies
Python version: 3.5.* and above.
pip install pycryptodome pycoin nummaster Flask==1.1.4
- Clone this repo.
- Inside the threshold-wallet main folder run:
python webapp.py
- Open your browser at http://127.0.0.1:5000/
You can see a demo on YouTube.