---
# System prepended metadata

title: 'ADR-007: Multi Party Computation'

---

# ADR-007: Multi Party Computation

- **Author(s):** [Prad Nukala](https://github.com/prnk28), [Brayden Cloud](https://github.com/mcjcloud), [Nick Tindle](https://github.com/ntindle)
- **Last Updated:** June 20, 2022
- **Status:** Draft
- **Deployment:** `beta/mpc`

# Abstract

# Background

## Cosmos TX Signing

### Types

### Direct Mode Signing

### Signature Verification

## MPC TX Signing

### Types

### ECDSA Signing

### ECDSA Verification

### MPC Signing

### MPC Verify Signature

# Sequence

## Affected Packages

```text
- /sonr/internal/motor
- /sonr/pkg/client
- /sonr/pkg/crypto
- /sonr/pkg/tx
```

## Types


## Steps

### (1) Creating Required Objects
1. Create TXBody from input messages
2. Create SignerInfo with account address in place of public key and ModeInfo as Single/DIRECT_SIGN_MODE
3. Add SignerInfo into AuthInfo and set the fee
4. Return AuthInfo and TXBody

### (2) Signing TX
1. Serialize AuthInfo, TXBody
2. Retreive Account Number
3. Construct SignDoc with authBz, txBz, accountNumber, and chainID
4. Serialize SignDoc with Wallet
5. Return ecdsa.Signature

### (3) Broadcasting TX
1. Fetch ecdsa.Signature, AuthInfo, TXBody
2. Serialize to authBz, txBz, and signature to DER sigBz
3. Create TxRaw with authBz, txBz, and add sigBz to signatures list
4. Serialize TXRaw with authBz, txBz, and add sigBz to signatures list
5. Serialize TxRaw and broadcast with Client

# CRUD Methods