Documentation Index
Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
WalletMetadata describes a wallet’s non-sensitive identity and backup-pointer state. It is returned alongside externalServerKeyShares from wallet-creation methods and must be passed as an explicit argument to every subsequent sign, export, backup, refresh, reshare, and password operation.
The Node SDK is stateless — it does not hold wallet state between calls. Persist walletMetadata in a cache (Redis, Postgres, etc.) and externalServerKeyShares in a secrets vault (HSM, KMS-wrapped DB column, Secret Manager). See Storage Best Practices for the recommended split.
Interface Definition
Properties
Required Properties
walletId(string) — Unique identifier for the walletaccountAddress(string) — The wallet’s account addresschainName(string) — SDK-internal chain name (EVM,SVM,BTC,TON)thresholdSignatureScheme(ThresholdSignatureScheme) — The threshold signature scheme used for this wallet
Optional Properties
derivationPath(string) — Derivation path for the wallet (e.g. EVM uses a BIP-44 path; encoded as a JSON object)addressType(string) — Bitcoin address type (taprootornative_segwit). Required for BTC operations; absent for other chains.externalServerKeySharesBackupInfo(KeyShareBackupInfo) — Per-share pointer metadata describing where each share is backed up. Required forsignMessage,signTransaction,signTypedData,exportKey,exportPrivateKey, password verification, share recovery,refreshWalletAccountShares,reshare, andupdatePasswordwhenever you pass caller-heldexternalServerKeyShares. Operations that need it throw a descriptive error when it’s missing. Caching the fullwalletMetadatareturned fromcreateWalletAccount()/importPrivateKey()ensures you have it.
How to obtain WalletMetadata
There are two paths to obtain a walletMetadata value, with different completeness guarantees:
| Source | Includes backupInfo? | Includes addressType? | Use when |
|---|---|---|---|
createWalletAccount() / importPrivateKey() return value | ✅ Yes | ✅ Yes | Wallet creation. Persist the full object in your cache. |
client.fetchWalletMetadata(accountAddress) | ❌ No | ❌ No | Recovery path: you have the address but lost the cached metadata. Returns identity only. |
walletMetadata from creation. The backup-pointer metadata (externalServerKeySharesBackupInfo) is not recoverable via SDK-scoped endpoints — there is no server-side fallback if you lose it.
Example
Updating cached walletMetadata after mutating operations
updatePassword, refreshWalletAccountShares, and reshare all return a new backupInfo reflecting the new backup state. You must merge it into your cached walletMetadata — otherwise the next operation reads stale metadata and either silently misbehaves or surfaces a “stale walletMetadata” error.
Related
ServerKeyShare— The sensitive key-share type stored in your vaultKeyShareBackupInfo— The shape ofexternalServerKeySharesBackupInfoThresholdSignatureScheme— Threshold signature scheme enum- Storage Best Practices — Where to cache metadata vs. where to vault shares