Liminal Wallets: Derivation Path Strategy

Liminal wallets are BIP32-compatible Hierarchical Deterministic (HD) Wallets. If you want to learn more about HD wallets and BIP32, you can start here.

Changes related to Derivation Path for deposit wallets

Liminal Deposit wallets have undergone changes in path derivation strategies. Depending on when the deposit wallet was created, it may follow either Legacy derivation path strategy or New derivation path strategy.

Initially, Liminal limited the number of deposit wallets that could be created per protocol to one. However, this restriction has recently been lifted, with some protocols already supporting multiple deposit wallets and others in the process of adding support.

The legacy derivation path strategy did not accommodate more than one deposit wallet per protocol. To enable support for multiple deposit wallets, the derivation path strategy was updated to the current method as detailed below.

By adopting this new strategy, organisations can manage multiple deposit wallets per protocol, improving flexibility and scalability for diverse blockchain ecosystems.

Both strategies utilise non-hardened BIP-44 derivation methods.

Fetching the Derivation Path

You can fetch the derivation path of any wallet using the "Retrieve a Wallet" API.

Deposit Wallets: Legacy Derivation Path Strategy

  • BCH, DOGE, and other Non-UTXO chains: m/44/{coin_type}/0/0/{address_index}
  • BTC & LTC: m/49/{coin_type}/0/0/{address_index}

Deposit Wallets: New Derivation Path Strategy

  • BCH, DOGE, and other Non-UTXO chains: m/44/{coin_type}/0/{org_id}/{deposit_wallet_index}/0/{address_index}
  • BTC & LTC: m/49/{coin_type}/0/{org_id}/{deposit_wallet_index}/0/{address_index}

Warm Wallets (Mobile MPC): Derivation Path Strategy

  • BCH, DOGE, and other Non-UTXO chains: m/44/{coin_type}/2/{wallet_id}
  • BTC & LTC: m/49/{coin_type}/2/{wallet_id}

Explanation of Parameters

  • coin_type: The value based on the SLIP-44 standard. For EVM chains, the ETH standard (60) is used. For Bitcoin, 1 is used instead of 0.
  • org_id: A unique ID representing your organisation.
  • deposit_wallet_index: The sequential index of the wallet per protocol, starting from 0. For example:
    • The first wallet for a given protocol will have an index of 0.
    • The second wallet will have an index of 1, and so on.
  • address_index: The sequential index of an address, starting from 0. The index 0 is reserved for the primary address of the deposit wallet, which is displayed in the user interface.
  • wallet_id: A unique ID representing the wallet.

Recovering Private Keys Using Root Private Key and Derivation Path

Liminal’s key recovery tool can be used to recover root private keys of the organisation. Using this root private key and the information about the derivation paths, private keys of respective wallets and deposit addresses can be derived. A complete guide to recovering the keys can be requested by raising a support ticket.

These private keys can then be loaded into other wallets, such as Metamask or Phantom, to recover funds.

Important Note

⚠ Warning: This process should strictly be performed on an offline machine to ensure security.

Steps for Recovering Private Keys

  1. Download the BIP32 Tool
    • Download the BIP32 tool and move it to your offline machine.
    • Open the tool in any browser on the offline machine.
  2. Load the Root Key
  • Select the desired coin.
  • Load the extracted root private key into the tool.
  1. Retrieve the Derivation Path
    • Use the Wallets API to retrieve the derivation path.
    • Select BIP32/custom path/{derivation address}.
    • Eg: {derivation address} for ETH = m/44/{coin_type}/0/{org_id}/{deposit_wallet_index}/0
  1. Verify Address Derivations

    • View all derivations in sequence by address_index.
    • Verify that the derived addresses match the expected addresses.
  2. Load the Private Key into a Wallet

    • Load the private key associated with the address you want to recover into your wallet of choice (e.g. Metamask).
  3. Recover Your Funds

    • Once the private key is loaded, you should be able to access and recover your funds using the wallet.