> For the complete documentation index, see [llms.txt](https://shinkalabs.gitbook.io/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinkalabs.gitbook.io/hub/andromeda/concepts/dwallets.md).

# dWallets & 2PC-MPC

A **dWallet** is a wallet whose signing key is never assembled in one place. Instead of a single private key sitting on a device or a server, the key is produced and used through a two-party computation: the Ika network holds one share, the user side holds the other, and a signature is the output of a protocol both run together. There is no seed phrase that, by itself, controls the wallet.

This matters for three reasons:

* **No single point of compromise.** Stealing one share does not let an attacker sign.
* **No custody.** Andromeda never holds a complete key. The `prepare -> submit` pattern (see [Custody-free model](/hub/andromeda/concepts/custody-free.md)) keeps the user share on the user side.
* **Cross-chain by construction.** A dWallet is identified by a public key on a given curve. The same machinery signs for any chain that uses that curve.

## The signing lifecycle

A dWallet goes through a few stages, each exposed as a REST call. See [The signing pipeline](/hub/andromeda/guides/signing-pipeline.md) for the full walkthrough.

* **DKG (Distributed Key Generation).** Run once to create the dWallet. Produces the dWallet's public key.
* **Presign.** Produces presignatures, the expensive precomputation that makes the actual signing fast.
* **Sign.** Consumes a presignature plus a message hash and returns a raw signature.
* **Future-Sign.** Pre-authorises a signature that fires later when a condition is met. See [Future-Sign triggers](/hub/andromeda/guides/future-sign.md).
* **Imported Key.** Bring an existing key under dWallet management.
* **Re-Encrypt Share / Make Share Public.** Manage who holds the user-side share.

## Curves and chains

| Curve     | Covers                                                     |
| --------- | ---------------------------------------------------------- |
| Ed25519   | Solana, NEAR, Aptos, Cosmos (ed25519), Substrate (ed25519) |
| SECP256K1 | EVM chains, Bitcoin, Cosmos (secp256k1), Substrate (ECDSA) |
| SECP256R1 | NIST P-256, WebAuthn / passkeys                            |
| Ristretto | Substrate / Polkadot (sr25519 family)                      |

See [Chains & curves](/hub/andromeda/reference/chains-curves.md) for the full matrix.

## The chain is the source of truth

A dWallet's authoritative state lives on Solana, in the Ika program. Andromeda keeps a cache for speed and UX, but the cache is never treated as canonical. If the cache is empty during a signing flow, Andromeda recovers the dWallet state from on-chain rather than regenerating anything.

## Authority and policies

By default a dWallet is controlled by its owner. You can hand its **signing authority** to one of the [on-chain policy programs](/hub/andromeda/on-chain-programs/overview.md) so that every signature must satisfy a rule (an allowlist, a rate limit, a quorum, a confidential check). Once a policy holds the authority, the Andromeda API cannot bypass it. See [On-chain policies](/hub/andromeda/concepts/policies.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://shinkalabs.gitbook.io/hub/andromeda/concepts/dwallets.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.
