The meaning of derivationPath

Hello, Support team

I am now using Developer sandbox.

After reading about “derivationPath” from https://support.fireblocks.io/hc/en-us/articles/360014330819-Fireblocks-Vault-HD-derivation-paths

The role assigned to me is “non-signing admin”.

I created a new vault named “alice-vault” whose id is “7”. Then I created for 3 wallets
For Sepolia : ETH_TEST5
For Solana: SOL_TEST
For Bitcoin: BTC_TEST

I can see the address of all these assets on Sandbox console.

Then, I exported addresses and balances of “alice-vault” account. I opened the exported file in MS Excel.

Question : why do all assets have the same “HD Path” (m / 44 / 1 / 7 / 0 / 0) ?

I expected, and thought that each wallet has its own unique derivationPath.

For ETH_TEST5: m / 44 / 1 / 7 / 0 / 0
For SOL_TEST: m / 44 / 1 / 7 / 0 / 1
For BTC_TEST: m / 44 / 1 / 7 / 0 / 2

I am confused with the last digit

  • address_index - is a sequential index starting from 0, where the permanent address of a wallet has index 0, and all other generated addresses (known in the UI as deposit addresses) start with index 1 and go up.

Thanks

Hey @drhanlondon

Re your questions about the derivation path of assets in vault with id=7:

According to BIP44 derivation:
m / purpose' / coin_type' / account' / change / address_index
The first value is constant m, the second is a constant 44 while the next one is coint_type:

In testnet networks, it is a common practice to set the coin_type of any test asset to 1.
Hence all test assets, regardless if these are in the same vault or not, will always have the same coin_type = 1 in Fireblocks.

The next value of the path is account which in your case is 7 because we use the vault account ID in the derivation path.

change is always 0 in Fireblocks for any asset.
address_index is always 0 for account based assets and incremental for UTXO based assets as we support multiple addresses for the same UTXO asset in the same vault. For instance, if you will go to the BTC_TEST wallet in vault id=7, create a new deposit address in the existing wallet, you’ll notice that the derivation path for this new address would be:
m / 44 / 1 / 7 / 0 / 1
And then if you’ll create an additional address:
m / 44 / 1 / 7 / 0 / 2

While working with mainnet assets, you will see a unique derivation path per each asset while the difference would be in the coin_type value. So in a case of production mainnet workspace and vault account id=7 you will see:
For Ethereum: m / 44 / 60 / 7 / 0 / 0
For Solana: m / 44 / 501 / 7 / 0 / 0
For Bitcoin: m / 44 / 0 / 7 / 0 / 0 for the first address
m / 44 / 0 / 7 / 0 / 1 for the second and so on…

The value is changed according to slips/slip-0044.md at master · satoshilabs/slips · GitHub