> ## Documentation Index
> Fetch the complete documentation index at: https://docs.walletsuite.io/llms.txt
> Use this file to discover all available pages before exploring further.

# One Wallet, Every Chain

> One setup gives you a self-custodial wallet that works across 84 chains. No seed phrase, no juggling. One wallet, every chain.

One wallet works everywhere. You sign transactions across 84 chains including Ethereum, Base, Bitcoin, Solana, Tron, and more from a single wallet. See [Supported chains](/supported-chains).

The wallet is self-custodial and has no seed phrase. You hold the wallet, WalletSuite holds a co-signing share, and both are needed to sign. `createWallet` returns the wallet in one call under a single `keyId`.

<Note>
  By default a wallet covers every supported chain: the EVM family, Bitcoin, and Tron on one curve, and Solana on the other. The SDK maps each chain to the right curve for you, so there is nothing to index.
</Note>

## Create once, use everywhere

`createWallet` defaults to a wallet that works on every chain. Pass a curve subset only when you want to narrow coverage.

<CodeGroup>
  ```js create.js theme={null}
  // Default: every chain
  const wallet = await client.createWallet();

  // Or narrow the coverage
  const evmAndMore = await client.createWallet(["secp256k1"]); // EVM, Bitcoin, Tron
  const solanaOnly = await client.createWallet(["ed25519"]);   // Solana
  ```

  ```python create.py theme={null}
  # Default: every chain
  wallet = client.create_wallet()

  # Or narrow the coverage
  evm_and_more = client.create_wallet(["secp256k1"])  # EVM, Bitcoin, Tron
  solana_only = client.create_wallet(["ed25519"])     # Solana
  ```
</CodeGroup>

<Note>
  A wallet created without a given curve raises a clear error if you sign a chain that needs it. The default covers everything, so most integrations never pass a subset.
</Note>

## Deriving addresses

`deriveAddress` turns the wallet into an on-chain address for any supported chain. It is synchronous in every client and makes no network call.

<CodeGroup>
  ```js derive.js theme={null}
  const wallet = await client.createWallet();

  const eth = client.deriveAddress(wallet, "ethereum");
  const base = client.deriveAddress(wallet, "base");
  const btc = client.deriveAddress(wallet, "bitcoin");
  const sol = client.deriveAddress(wallet, "solana");
  ```

  ```python derive.py theme={null}
  wallet = client.create_wallet()

  eth = client.derive_address(wallet, "ethereum")
  base = client.derive_address(wallet, "base")
  btc = client.derive_address(wallet, "bitcoin")
  sol = client.derive_address(wallet, "solana")
  ```
</CodeGroup>

Pass the chain identifier as a lowercase string. Every EVM chain produces the same address as `ethereum`, so one derivation covers all EVM networks. Note: the chain identifiers for `deriveAddress` use underscores for multi-word names and differ from the API's `chain` parameter values. See [Supported chains](/supported-chains).

<Note>
  EVM, Bitcoin, and Tron support many addresses from one wallet through custom derivation paths. Solana derives directly, with no path.
</Note>

## Signing methods

Once you have a wallet, you sign transactions on any supported chain with a single set of methods. Pick the method that matches the chain family.

| Chain family | Method                       |
| ------------ | ---------------------------- |
| EVM chains   | `signEvm7702`, `signEvm1559` |
| Tron         | `signTron`                   |
| Bitcoin      | `signBitcoin`                |
| Solana       | `signSolana`                 |

Each method signs transactions for its chains. The EVM methods cover Ethereum and every EVM network in the supported set. See [Signing](/mpc/signing) for full examples.

## Next steps

<CardGroup cols={2}>
  <Card title="Signing" icon="signature" href="/mpc/signing">
    Sign transactions across every supported chain with the SDK.
  </Card>

  <Card title="Shares & thresholds" icon="key" href="/mpc/key-shares">
    Store the wallet, the 2-of-2 default, and what's on the roadmap.
  </Card>
</CardGroup>
