# FROST Multisig

### Overview

RadFi validators use **FROST (Flexible Round-Optimized Schnorr Threshold Signatures)** for decentralized signing of Bitcoin transactions.\
FROST replaces the legacy Taproot multisig scheme with a threshold signing protocol, increasing flexibility and resilience.

Key properties of this implementation:

* 5 signers (3-of-5 threshold)
* Distributed key generation (no single party ever holds the full private key)
* Signer key management in AWS Secrets Manager
* Support for key refresh, recovery, replacement, and removal

### Benefits

* Decentralized signing: No single point of failure.
* Security: Keys are distributed, refreshed on leak, and recoverable on loss.
* Flexibility: Signers can be replaced or removed without disrupting the wallet.
* Backward compatibility: Legacy Taproot key is retained for non-signing use cases

### Cryptographic Design

**Key Generation**

* A `pubkey_package` and 5 signer key pairs are generated.
* Each signer receives:
  * `secret` → backup seed
  * `key` → active signing key (derived from `secret`)

### Signing Model

* Threshold: **3-of-5**
* Signers collaborate via FROST rounds to produce a Schnorr signature.
* Signatures are valid Taproot-compatible signatures for Bitcoin transactions.

### Keys Lifecycle

**1. Refresh Keys**

* Used when a signer key leaks.
* Distributor issues refresh shares.
* Each signer derives a new key while retaining the same wallet identity.
* Old keys are destroyed.

**2. Recover a Lost Key**

* If one signer loses their key, any **3 helpers** can collaboratively reconstruct it.
* Recovery is a 3-step protocol using `delta` and `sigma` values.

**3. Replace a Key**

* A new signer can take over an old signer’s role by recovering their key, then refreshing.

**4. Remove a Key**

* 4 signers refresh without including the unwanted signer.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.radfi.co/technical-architecture/frost-multisig.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
