A TypeScript SDK for multi-party computation (MPC) wallet operations, providing secure vault creation, address derivation, and transaction signing capabilities.
VultisigSDK enables developers to integrate MPC wallet functionality into their applications. The SDK supports both "Fast Vault" (server-assisted) and "Secure Vault" (fully decentralized) creation modes, with comprehensive blockchain support including Bitcoin, Ethereum, Cosmos, and many others.
- Multi-Party Computation: Secure key generation and signing using DKLS and Schnorr protocols
- Address Derivation: Generate blockchain addresses using WalletCore WASM
- Vault Management: Create, import, export, and manage encrypted vaults
- Fast Vault Creation: Server-assisted vault creation with email verification
- Cross-Chain Support: Bitcoin, Ethereum, Cosmos, Solana, and 40+ blockchains
- TypeScript: Full type safety and IntelliSense support
npm install vultisig-sdk
# or
yarn add vultisig-sdkimport { VultisigSDK } from 'vultisig-sdk'
// Initialize SDK
const sdk = new VultisigSDK()
await sdk.initialize()
// Create a Fast Vault (server-assisted)
const result = await sdk.createFastVault({
name: 'My Wallet',
email: 'user@example.com',
password: 'secure-password'
})
// Derive addresses for different chains
const btcAddress = await sdk.deriveAddress(result.vault, 'Bitcoin')
const ethAddress = await sdk.deriveAddress(result.vault, 'Ethereum')
console.log('Bitcoin Address:', btcAddress)
console.log('Ethereum Address:', ethAddress)- Node.js 18+
- Yarn 4.x
# Clone the repository
git clone https://github.com/vultisig/vultisig-sdk.git
cd vultisig-sdk
# Install dependencies
yarn install
# Build the SDK
cd src && npm run build
# Build and run the React example
yarn build:prod├── src/ # SDK source code
│ ├── chains/ # Address derivation and chain management
│ ├── mpc/ # Multi-party computation logic
│ ├── vault/ # Vault creation and management
│ ├── server/ # Fast vault server integration
│ └── wasm/ # WASM module management
├── examples/
│ └── react/ # React example application
├── core/ # Core blockchain functionality
├── lib/ # Shared libraries and utilities
└── clients/ # Client applications
cd src
npm run buildThis creates the distributable SDK package in src/dist/.
yarn build:prodThis command:
- Builds the React example app in production mode
- Starts a preview server at http://localhost:5175/
- Includes the full SDK with all dependencies (~4.4MB bundle)
# Start React example in development mode
cd examples/react
yarn devyarn build:prod- Build and serve the React example appyarn lint- Run ESLint across all packagesyarn typecheck- Run TypeScript type checkingyarn test- Run tests with Vitest
const sdk = new VultisigSDK(options?: {
serverUrl?: string
mpcServerUrl?: string
})Initialize the SDK and WASM modules.
Create a server-assisted vault with email verification.
const result = await sdk.createFastVault({
name: 'My Wallet',
email: 'user@example.com',
password: 'secure-password'
})Derive blockchain address for a specific chain.
const address = await sdk.deriveAddress(vault, 'Bitcoin')Import vault from encrypted backup file.
Export vault to encrypted JSON string.
- Bitcoin: BTC, BCH, LTC, DOGE, DASH
- Ethereum: ETH, BSC, Polygon, Arbitrum, Optimism, Base
- Cosmos: ATOM, OSMO, KUJI, THOR, MAYA
- Others: Solana, Polkadot, Ripple, TON, TRON
- 40+ chains total
// Secure vaults require multiple devices for MPC
const vault = await sdk.createSecureVault({
name: 'Hardware Vault',
threshold: 2, // 2-of-3 multisig
participants: 3
})// Derive addresses for multiple chains
const addresses = await Promise.all([
sdk.deriveAddress(vault, 'Bitcoin'),
sdk.deriveAddress(vault, 'Ethereum'),
sdk.deriveAddress(vault, 'Cosmos')
])// Export vault with encryption
const backupData = await sdk.exportVault(vault, 'backup-password')
// Import from backup
const importedVault = await sdk.importVaultFromFile(backupFile, 'backup-password')- No Private Keys: Private keys never exist in complete form
- MPC Security: Keys are split across multiple parties using threshold signatures
- Encryption: All vault data is encrypted with user passwords
- WASM Isolation: Cryptographic operations run in WebAssembly sandbox
- Fork the repository
- Create a feature branch (
git checkout -b feat/new-feature) - Make your changes
- Add tests if applicable
- Run
yarn lint && yarn typecheck && yarn test - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feat/new-feature) - Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: docs.vultisig.com
- Issues: GitHub Issues
- Community: Discord
Built with ❤️ by the Vultisig Team