Skip to content
 
 

Repository files navigation

VultisigSDK

A TypeScript SDK for multi-party computation (MPC) wallet operations, providing secure vault creation, address derivation, and transaction signing capabilities.

Overview

VultisigSDK enables developers to integrate MPC wallet functionality into their applications. The SDK supports two vault types:

  • Fast Vault: Server-assisted 2-of-2 MPC for quick setup and instant signing
  • Secure Vault: Multi-device N-of-M MPC for enhanced security with configurable thresholds

Both vault types provide comprehensive blockchain support including Bitcoin, Ethereum, Cosmos, Solana, and 40+ others.

Features

  • Fast Vault: Server-assisted 2-of-2 MPC with VultiServer for instant signing
  • Secure Vault: Multi-device N-of-M threshold signing with mobile device pairing
  • QR Code Pairing: Pair with Vultisig mobile apps for secure vault operations
  • Address Derivation: Generate blockchain addresses using WalletCore WASM
  • Vault Management: Create, import, export, and manage encrypted vaults
  • Cross-Chain Support: Bitcoin, Ethereum, Cosmos, Solana, and 40+ blockchains
  • TypeScript: Full type safety and IntelliSense support

Installation

npm install @vultisig/sdk
# or
yarn add @vultisig/sdk

Related packages

  • @vultisig/rujira — Rujira (FIN) swaps + secured asset deposit/withdraw helpers on THORChain

Quick Start

Fast Vault (Server-Assisted)

import { Vultisig, MemoryStorage } from '@vultisig/sdk'

// Initialize SDK
const sdk = new Vultisig({ storage: new MemoryStorage() })
await sdk.initialize()

// Create a fast vault (server-assisted 2-of-2)
const vaultId = await sdk.createFastVault({
  name: "My Wallet",
  email: "user@example.com",
  password: "secure-password",
});

// Verify with email code
const vault = await sdk.verifyVault(vaultId, "1234");

// Derive addresses
const btcAddress = await vault.address("Bitcoin");
const ethAddress = await vault.address("Ethereum");

Secure Vault (Multi-Device)

// Create a secure vault (2-of-3 threshold)
const { vault } = await sdk.createSecureVault({
  name: "Team Wallet",
  devices: 3,
  onQRCodeReady: (qrPayload) => {
    // Display QR code for other devices to scan
    displayQRCode(qrPayload);
  },
  onDeviceJoined: (deviceId, total, required) => {
    console.log(`Device joined: ${total}/${required}`);
  }
});

// Sign transactions (requires device coordination)
await vault.sign(payload, {
  onQRCodeReady: (qr) => displayQRCode(qr),
  onDeviceJoined: (id, total, required) => {
    console.log(`Signing: ${total}/${required} devices ready`);
  }
});

API Documentation

API documentation is auto-generated and available at:

For detailed usage, see the SDK Users Guide.

Security

  • No Private Keys: Private keys never exist in complete form
  • MPC Security: Keys are split across multiple parties using threshold signatures
  • Configurable Thresholds: Secure vaults support N-of-M signing (e.g., 2-of-3, 3-of-5)
  • Encryption: All vault data is encrypted with user passwords
  • WASM Isolation: Cryptographic operations run in WebAssembly sandbox

Contributing

See CONTRIBUTING.md for development setup, project structure, and contribution guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support


Built with ❤️ by the Vultisig Team

About

Vultisig Typescript SDK

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages