Pushing MPC accessibility to the next level in public (plus a tool!)

TL;DR: As an industry-leader in MPC and open-source cryptography, at Zengo wallet we are committed to building our cryptography in public. Today, following the recent upgrade to our MPC architecture, we’re elevating this commitment by sharing updates to our MPC cryptographic library, known as Gotham City, and tools to make it increasingly accessible to anyone who wants to better understand MPC. These updates include client Ethereum integration (previously available for Bitcoin only), an API for limitless hierarchical address derivation, and advanced key rotation, demonstrating our dedication to security, transparency, and empowering fellow members of the ecosystem. 

This blogpost is an overview of these updates, and includes a tool you can try yourself. See below!

Updates to Gotham City – Test our CLI Wallet tool

Gotham City is a client-server Rust application implementing a two-party ECDSA signature protocol. Its main features of key generation, signing, and signature verification, cover the primary functional requirements of any cryptocurrency wallet. Moreover, it includes additional advanced features like key share derivation and key shares rotation, to be elaborated later on. All this is available for public use and testing with a minimalistic CLI wallet application that now supports both Ethereum and Bitcoin.   


To use it, boot up Gotham server, create a new wallet and begin issuing transactions to the blockchain. For example, see the demonstration of sending ETH in Sepolia Testnet.

First, create a new wallet and a new address:

Then, create another address and send some ETH to it:

A complete description of supported actions can be seen in its github repository.

Updates to Key share derivation and rotation 

More advanced features, which are also executed in the two-party MPC settings, are key share derivation and key share rotation. 

  • The first, derivation, allows unlimited child shares to be derived from a single master share. This achieves concepts similar to ones presented in BIP32 where multiple addresses can be managed in hierarchical structure in a more convenient and secure manner.
  • The second, rotation, allows “refreshing” the private secret shares without changing the joint public key. This provides a convenient solution to when a private secret share is compromised and the old share must be discarded.

In addition to Gotham City code, the cryptography is built on top of the most popular Rust libraries for Etherum (ethers-rs) and Bitcoin (rust-bitcoin). As an implementation example, the ethers-rs library includes a unified interface for building custom transaction signing processes.

The wallet’s code includes such a custom process that simply invokes the Gotham client, which then performs the required interaction with the Gotham server. The above allows embedding correct signatures, produced by the two-party protocol, into every Ethereum transaction.

As another example, here is a demo for using the key rotation feature:

Talk to us

Learn more about the Zengo X Research team here.

Follow Zengo on X / Twitter here.