Skip to content

Repository files navigation

Mercury

Mercury is a client/server implementation of a state chain (whitepaper).

Building

The current 2P-ECDSA uses library multi-party-ecdsa v0.1.0, which depends on rust-paillier v0.1.0. You will notice that rust-paillier contains depreciated code and so will not build. We will eventually update the 2P-ECDSA but for now you must open your local version of the rust-paillier library (as directed to in the error message) and remove/comment the problem line of code.

You will need to use an experimental branch of rust, use rustup to switch to the nightly branch, and use cargo to build:

rustup default nightly
cargo build

Disclaimer

USE AT YOUR OWN RISK, we are not responsible for software/hardware and/or any transactional issues that may occur while using Gotham city.

Project Status

The project is currently work in progress.

Server

RESTful web service exposing APIs for state chain and general wallet functionality. README

Client

Basic Bitcoin wallet with client side state chain implementation and:

  • Key HD key derivation and storage
  • View balance and UTXOs
  • Send transactions

README

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

Comperative Performance

The comparison was done on an Intel i9-8950HK (2.9GHz) using localhost for server (no real network). The numbers are mean for 20 runs of 2P-ECDSA KeyGen and 50 runs for 2P-ECDSA Signing. Standard deviation is inconsistent but for both implementations it is order of magnitude smaller than mean value.

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

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

An implementation of statechains

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages