oleiba / gotham-city

Gotham city is a fully functional project to demonstrate real-life example of minimalist Bitcoin decentralized HD wallet using 2 party ECDSA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gotham City

Gotham city is a fully functional project to demonstrate real-life example of minimalist Bitcoin decentralized HD wallet using 2 party ECDSA.

Demo

Project Status

The project is currently work in progress. For more information you can email us.

Elements

Gotham Server Gotham Client
Description RESTful web service exposing APIs for two party ECDSA key generation and signing Bitcoin minimalist decentralized wallet CLI app
Instructions View View

Project Description

Design Overview

ECDSA Keygen and Signing

ECDSA

Cryptographic libraries

  • secp256k1: Rust language bindings for Bitcoin secp256k1 library.
  • curv : basic ECC primitives using secp256k1
  • rust-paillier: A pure-Rust implementation of the Paillier encryption scheme
  • zk-paillier: A collection of zero knowledge proofs using Paillier cryptosystem
  • multi-party-ecdsa: Rust implelemtation of Lindell's Crypto17 paper: Fast Secure Two-Party ECDSA Signing
  • kms: Two party key managament system (master keys, 2p-HD, shares rotation) for secp256k1 based two party digital sigantures

White paper overview

Abstract

We demonstrate a Bitcoin wallet that utilizes two party ECDSA (2P-ECDSA). Our architecture relies on a simple client-server communication model. We show support for 2 party deterministic child derivation (2P-HD), secret share rotation and verifiable recovery. We discuss the opportunities and challenges of using a multi-party wallet.

Background

For end-users, cryptocurrencies and blockchain-based assets are hard to store and manage. One of the reasons is the tradeoff between security and availability. Storing private keys safely requires dedicated hardware or extreme security measures which make using the coins on a daily basis difficult. Threshold cryptography provides ways to distribute the private key and digital signing. This can potentially benefit security but at the same time reveal new challenges such as availability, ownership and recovery. Bitcoin is utilizing ECDSA as the signing scheme. There is an active line of research for practical and efficient multi-party ECDSA schemes.

For more information, see our white paper.

Comperative Performance

The comparison was done on an Intel i9-8950HK (2.9GHz) using localhost for server (no real network)

Implementation Gotham city (this repo) Unbound
2P-ECDSA KeyGen 1.05 s 3.32 s
2P-ECDSA Signing 0.153 s 0.193 s

Disclaimer

Gotham city is a proof of concept. DO NOT USE this project for PRODUCTION use! USE AT YOUR OWN RISK, we are not responsible for software/hardware and/or any transactional issues that may occur while using Gotham city.

License

Gotham City is released under the terms of the GPL-3.0 license. See LICENSE for more information.

Contact

For any questions, feel free to email us.

About

Gotham city is a fully functional project to demonstrate real-life example of minimalist Bitcoin decentralized HD wallet using 2 party ECDSA

License:GNU General Public License v3.0


Languages

Language:Rust 78.5%Language:TeX 20.7%Language:Dockerfile 0.6%Language:Shell 0.1%