Smart Wallet SDK
Create MPC wallets, sign and send transactions, and manage end-user clients with the Tatum Wallet SDK for TypeScript.
What is the Wallet SDK?
The SDK abstracts two things:
- Tatum REST API - client and wallet management, share-pair bookkeeping, transaction building, backup management, and key eject.
- Tatum MPC API - MPC operations including wallet generation, signing, backup creation, recovery, and key reconstruction workflows.
You never interact with the MPC services directly. The SDK handles authentication, RPC resolution, request routing, and MPC coordination for you.
How MPC Works
MPC (Multi-Party Computation) lets two parties jointly produce a signature without either party ever holding the complete private key. The Tatum SDK uses a 2-of-2 threshold signing model.
2-of-2 Signing Model
Every wallet has exactly two shares per curve:
| Share | Holder | Description |
|---|---|---|
| Client share | Your app / end user | Stored by you - the SDK returns it from generateWallet() |
| Tatum share | Tatum infrastructure | Managed by Tatum and never exposed through the SDK |
Both shares participate in the MPC signing protocol. Neither share can independently authorize a transaction.
Client Shares vs Tatum Shares
- Client shares are returned by generateWallet(). You own them and are responsible for storing them securely. Tatum cannot recover them.
- Tatum shares are managed by Tatum infrastructure and stored separately from client shares.
- During signing, your client share is provided to the MPC protocol for that operation. The private key is never reconstructed as part of the normal signing process.
- MPC signatures are produced collaboratively without combining shares into a complete private key.
Wallet Lifecycle
1
Create Client
clientId + API Key
→
2
Generate Wallet
MPC Shares
→
3
Store Shares
Encrypt & Persist
4
Confirm Storage
STORED_CLIENT
→
5
Sign & Send
sendAssets() / sign()
→
6
Backup Wallet
Recovery Shares
Supported Wallet Types
The SDK produces wallets for two cryptographic curves, covering all supported chains:
| Curve | Chains |
|---|---|
SECP256K1 | EVM chains (Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, Celo, Monad), Tron, Bitcoin |
ED25519 | Solana, Stellar |
When to Use the SDK
- You want non-custodial wallets where your users own their keys
- You need programmatic signing without a browser wallet (server-side flows)
- You want gas sponsorship without managing a relayer yourself
- You need key eject — the ability for users to exit and reconstruct their full private key
Security Model
- Your backend never handles a complete private key.
- Client shares should always be encrypted before storage.
- Portal shares are stored separately from client shares and encrypted at rest.
- Backup shares enable recovery if client signing shares are lost.
- Key eject is opt-in and time-bounded. enableEject() must be explicitly called before recovery shares can be retrieved for key reconstruction.