This repository contains a working implementation of MPC processes designed to run inside of a secure execution environment of Cypherock X1. Private and authenticated channels are set up between all devices in the group securely in the group setup phase. The architecture utilises hardware security and asset protection features offered by the Cypherock device and helps the group of users or an institution to own their assets completely. Further we have proposed an extension to the BIP32 protocol ("Extended BIP32"
) with which any group member will be able to generate child or receive addresses from the group public key without having everyone else in the group to come online. All the polynomials required in the signature phase are generated randomly and consumed within the signature phase itself.
The setting comprises of 3 sub-processes running independent MPC group sessions over the group of parties. These sub-process are:
- User group setup
A trustless setup to create a group - Distributed key generation
Generates child public keys for the group - Transaction signing
Sign ECDSA based transactions