The threshold signature network behind Chain Signatures — signatures produced jointly by t-of-n nodes running in TEEs, with no single party ever holding the complete key.
flowchart LR
User["<b>User</b><br/><i>typically another<br/>smart contract</i>"]
Contract["<b>Signer contract</b><br/><i>queues sign requests,<br/>manages the signer set</i>"]
Nodes["<b>MPC nodes</b> (t-of-n)<br/><i>hold keyshares,<br/>run the signing protocols</i>"]
User -- "(1) requests a signature" ---> Contract
Contract -- "(4) returns the signature" ---> User
Contract ~~~ Nodes
Nodes -- "(2) observe pending requests" ---> Contract
Nodes -- "(3) respond with the signature" ---> Contract
- Signing — signs arbitrary payloads under keys derived per caller and derivation path, so a single NEAR account can control any number of keys without any of them ever existing in full. Supports ECDSA (Secp256k1) and EdDSA (Ed25519).
- Confidential Key Derivation — derives application-specific keys without revealing the master secret (BLS12-381).
- Read RPC — nodes independently verify transactions on foreign chains (Ethereum, Solana, Aptos, …) and threshold-sign the observed values, letting NEAR contracts react to external chain events without a trusted relayer. Known under the working name foreign chain transaction verification in the code.
A signature request is a call to the signer contract (v1.signer on mainnet); the nodes pick it up, sign jointly over P2P, and respond on chain. Nodes run inside trusted execution environments (TEEs) and attest what they run on chain; see the TEE design doc.
- Building on the network? Start with the Chain Signatures documentation; the
near-mpc-sdkcrate provides request builders and response verification. - Operating a node? Check the node requirements and the operating guide; the rest of
docs/guide/covers TEE setups, metrics, and migrations. - Developing this code? Building and testing gets you from checkout to green checks;
docs/development/has the rest, including the engineering standards. - Contributing? The contribution guidelines describe our issue and PR workflow.
- Researching security? We strive to have every feature and critical code path independently audited; the reports live in
audits/. To report a vulnerability, follow the security policy.
All crates live in a Cargo workspace under crates/. The ones you are most likely to look for:
| Crate | Purpose |
|---|---|
mpc-node |
The binary run by MPC participants: NEAR indexer, P2P networking, and the threshold protocols themselves |
mpc-contract |
The smart contract on NEAR: accepts signature requests, manages the participant set and protocol state, governs upgrades through participant voting |
near-mpc-contract-interface |
Wire formats accepted by the contract, plus a client feature for constructing typed contract calls |
near-mpc-sdk |
Logic shared between the MPC contract and its callers |
threshold-signatures |
The threshold cryptography itself |
The node and contract ship together as semantically versioned releases; see RELEASES.md for the process and compatibility guarantees. Docker images build reproducibly.
Questions, feedback, or building something on top? Join the NEAR Dev Telegram.