Skip to main content
This is the per-method guide to the wallet SDK. For a guided first run, start with the Quickstart. For the conceptual model, see MPC Wallets Overview.

Type conventions

The parameter tables below use two shorthand types:

Clients

You construct a client with the signing service URL and your WalletSuite API key. Use https://cosigner.walletsuite.io in production. The API key is sent on every request. See Credentials & Authentication. Python exposes the same constructor on both MpcClient and AsyncMpcClient, with snake_case keyword arguments.

Sync vs async behavior

The signing methods are async in Node and in the Python AsyncMpcClient. The Python MpcClient is fully synchronous. Address derivation is synchronous in every client because it runs locally with no network call.
The signing methods are createWallet, signEvm1559, signEvm7702, signTron, signBitcoin, and signSolana. They reach the WalletSuite signing service over the network, so it must be reachable. deriveAddress runs locally and never hits the network.

createWallet

Runs the 2-of-2 DKG and returns the wallet you keep. Pass an empty list or omit the argument to cover every chain. You hold the wallet and WalletSuite holds a co-signing share. Neither side ever sees the full key. Returns the wallet: one opaque string you store and pass back on every call. It is exactly what deriveAddress and the sign* methods take. Recover its key id any time with walletKeyId(wallet) (Node) or wallet_key_id(wallet) (Python), a local call with no network.
Wallets are 2-of-2 by default, so keep the wallet you hold in durable storage before you continue. See Shares & thresholds.

deriveAddress

Derives the on-chain address from the wallet. This is local and synchronous in every client. Returns the address string for the chain. One wallet works everywhere. The same wallet derives addresses across 84 chains including Ethereum, Base, Bitcoin, Solana, Tron, and more. Pass the chain identifier as a lowercase string. Every EVM chain (ethereum, base, polygon, binance_smart_chain, and the rest) produces the same EIP-55 address, so you can pass whichever chain you are actually deriving for. The deriveAddress identifiers are not always the same as the API’s chain parameter. The table below lists the ones that differ: See Supported chains.

signEvm1559

Signs a plain EVM transaction and returns a raw signed transaction string, ready to broadcast. Use signEvm7702 for EIP-7702 batched transactions. Returns the raw signed transaction string, ready to broadcast.

signEvm7702

The EVM signing method for EIP-7702 batched transactions. It signs the EIP-7702 (type-4) smart-account transaction format. Each signature is authorized automatically: the SDK mints a single-use, payload-bound signing intent for you, so you pass only the transfer. See Signing intents. Returns the signed transaction. The raw field is broadcast-ready.
Amounts are exact integers, so keep them as integers. Node returns each amount as a decimal string (wei, or token base units when token is set). Python returns native int.

signTron

Signs a Tron transaction. The reference block fields and timestamps come from a recent Tron block, which you read from a Tron RPC or TronGrid getNowBlock call. Returns an object with the signed transaction parts and the assembled transaction.

signBitcoin

Signs a Bitcoin transaction. You get one signature per input, in input order, plus the payload hash, and assemble the final witness transaction from them. Returns an object with one signature per input.
You get one signature per input back. Reassemble them into the final witness transaction (for example with bitcoinjs-lib) before broadcasting.

signSolana

Signs a Solana transaction. Returns an object with the signature and the signed transaction.

Next steps

Signing

The signing methods and the async surface in depth.

Broadcasting

Send the signed transaction through your own RPC or the WalletSuite send endpoint, then check status.

Error handling

The Node and Python error model, with a category, cause, and fix table.

Shares & thresholds

Store the wallet, run the 2-of-2 default, and see what’s on the roadmap.