Vultisig Extension Integration Guide

Table of Contents


Introduction

Vultisig Extension is a Chrome extension that enhances the experience of interacting with decentralized finance (DeFi) applications. It offers a secure way for users to connect with decentralized applications without storing private keys in their browsers. Vultisig Extension introduces:

  • window.vultisig.ethereum for Ethereum integrations (previously window.vultisig).

  • window.vultisig.thorchain and window.thorchain for THORChain support.

  • A MetaMask-compatible interface (window.ethereum) to ensure seamless integration with existing DeFi applications.

  • Support for multiple other chains including MayaChain, GaiaChain, Osmosis, Kujira, DyDx, BitcoinCash, Dash, DogeCoin, LiteCoin, and Bitcoin.

Supported Chains

Vultisig Extension currently supports the following chains:

Chain
Identifier

Bitcoin

0x1f96

BitcoinCash

0x2710

Dash

Dash_dash

DogeCoin

0x7d0

DyDx

dydx-1

Ethereum

0x1

GaiaChain

cosmoshub-4

Kujira

kaiyo-1

LiteCoin

Litecoin_litecoin

MayaChain

MayaChain-1

Osmosis

osmosis-1

Polkadot

Polkadot_polkadot

Ripple

Ripple_ripple

Solana

Solana_mainnet-beta

THORChain

Thorchain_thorchain

Zcash

Zcash_zcash

How Vultisig Extension Works

  • Private Key Security: Vultisig Extension does not store private keys. Instead, transactions are converted to QR codes that users can scan and sign using VultiSig peer devices.

  • Compatibility: The extension provides:

    • window.ethereum for MetaMask-compatible Ethereum integration.

    • window.vultisig.ethereum for Vultisig-Extension-enhanced Ethereum features.

    • window.vultisig.thorchain and window.thorchain for THORChain functionality.

    • Additional chain support for other chains using window.vultisig.chain and window.chain.

Supported Methods

Ethereum (window.vultisig.ethereum)

  • Account Management:

    • eth_accounts

    • eth_requestAccounts

  • Chain Management:

    • eth_chainId

    • wallet_addEthereumChain

    • wallet_switchEthereumChain

  • Transaction Management:

    • eth_sendTransaction

    • eth_getTransactionByHash

    • eth_estimateGas

  • Other Methods:

    • eth_blockNumber

    • eth_call

    • eth_gasPrice

    • eth_getBalance

    • eth_getBlockByNumber

    • eth_getCode

    • eth_getTransactionCount

    • eth_getTransactionReceipt

    • eth_maxPriorityFeePerGas

    • personal_sign

THORChain (window.vultisig.thorchain and window.thorchain)

  • Account Management:

    • request_accounts

    • get_accounts

  • Transaction Management:

    • send_transaction

    • deposit_transaction

    • get_transaction_by_hash

Solana (window.vultisig.solana and window.solana)

  • Account Management:

    • request_accounts

    • get_accounts

  • Transaction Management:

    • send_transaction

    • get_transaction_by_hash

Cosmos-Based Chains (DyDx, GaiaChain, Kujira, Osmosis)

  • Account Management:

    • request_accounts

    • get_accounts

    • chain_id

  • Chain Management:

    • wallet_add_chain

    • wallet_switch_chain

  • Transaction Management:

    • send_transaction

    • get_transaction_by_hash

  • Notes: Accessing a specific Cosmos-based chain (such as Kujira or Osmosis) requires calling chain_id to retrieve the active chain's ID or using wallet_add_chain and wallet_switch_chain to add or switch to the desired chain.

Other Chains (window.vultisig[chain] )

  • Account Management:

    • request_accounts

    • get_accounts

  • Transaction Management:

    • send_transaction

    • get_transaction_by_hash

Supported Chains

The following chains are fully supported through their respective interfaces:

  • Bitcoin

  • BitcoinCash

  • Dash

  • DogeCoin

  • LiteCoin

  • MayaChain

Steps to Integrate with Vultisig Extension

1. Detect Vultisig Extension Support

2. Connecting to Vultisig Extension

Ethereum

Other Supported Chains

Replace chain with the desired chain identifier such as bitcoin, bitcoincash, cosmos, dash, dogecoin, litecoin, maya, solana, thorchain, etc.

Each chain uses a unified interface accessible via window.vultisig?.[chain] and window[chain] for seamless interaction across different blockchain networks.

3. Connected Accounts

To get connected accounts to the current dapp, use eth_accounts for EVM chains and get_accounts for other Vultisig Extension supported chains.

Ethereum

Other Supported Chains

4. Managing Active Chain

Ethereum

To get the current active chain ID of Vultisig Extension:

To switch to a desired Ethereum chain:

Cosmos-Based Chains

To get the current chain ID:

To switch to a desired Cosmos chain:

Note

Since other providers do not have different active chains, there is no need to switch chains for them. Therefore, the methods wallet_switch_chain and wallet_switchEthereumChain are not supported for chains other than Cosmos-based and Ethereum.

5. Handling Transactions

Transaction Details Structure

The txDetails object used in the transaction methods has the following structure:

  • from: The sender's Ethereum or chain-specific wallet address,

  • to: The receiver's wallet address.

  • data: Arbitrary data that can be included with the transaction (e.g., for contract interactions).

  • value: The amount to transfer, represented in hexadecimal format (e.g., "0x1" for 1 wei).

Example:

Ethereum

Other Supported Chains

THORChain

In addition to send transactions, THORChain supports deposit transactions for operations such as bond, unbond, etc.

Example of non-native tokens of THORChain and other Cosmos chains :

6. Custom Message Signing

Ethereum

Vultisig Extension currently supports the personal_sign method.

7. Querying Transactions

Ethereum

Retrieve Ethereum transaction details with eth_getTransactionByHash.

Other Supported Chains

Retrieve transaction details of other Vultisig Extension supported chains using get_transaction_by_hash.

8. Event Handling

Vultisig Extension supports the CONNECT and DISCONNECT events for all supported chains.

9. Get Vault

Vultisig Extension provides a function to get vault properties.

10. Detailed Implementation Examples

Transaction Object Structure

Ethereum Account Management Examples

Ethereum Gas Management Examples

Block Information Examples

Contract Interaction Examples

Error Handling

All methods can throw errors with the following structure:

Common error codes include:

  • 4001: User rejected the request

  • 4100: Unauthorized

  • 4200: Unsupported method

  • 4900: Disconnected

  • 4901: Chain disconnected

Summary

Vultisig Extension ensures secure and multi-chain integration with DeFi applications, providing seamless support across popular chains. Its adherence to EIP-1193 guarantees compatibility with existing applications while delivering a secure and user-friendly experience.

Last updated

Was this helpful?