Hierarchical Deterministic (HD) Account
A function to create a Hierarchical Deterministic (HD) Account.
A Hierarchical Deterministic (HD) Account is derived from a HD Key and an optional HD path.
It has the ability to sign transactions and messages with the private key derived from the HD Node.
Import
import { HDKey, hdKeyToAccount } from 'viem/accounts'Note: viem re-exports
HDKeyfrom@scure/bip32.
Usage
To initialize a HD Account, you will need to pass a HDKey instance to hdKeyToAccount.
The HDKey instance comes with a few static methods to derive a HD Key:
- fromMasterSeed
- fromExtendedKey
- fromJSON
import { createWalletClient, http } from 'viem'
import { HDKey, hdKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'
 
const hdKey = HDKey.fromMasterSeed(...) 
const hdKey = HDKey.fromExtendedKey(...)
const hdKey = HDKey.fromJSON({ xpriv: ... })
 
const account = hdKeyToAccount(hdKey) 
 
const client = createWalletClient({
  account,
  chain: mainnet,
  transport: http(),
})Parameters
hdKey
- Type: string
The BIP-39 mnemonic phrase.
const hdKey = HDKey.fromMasterSeed(...)
 
const account = hdKeyToAccount(
  hdKey, 
)options.accountIndex
- Type: number
- Default: 0
The account index to use in the path ("m/44'/60'/${accountIndex}'/0/0") to derive a private key.
const hdKey = HDKey.fromMasterSeed(...)
 
const account = hdKeyToAccount(
  hdKey,
  {
    accountIndex: 1
  }
)options.addressIndex
- Type: number
- Default: 0
The address index to use in the path ("m/44'/60'/0'/0/${addressIndex}") to derive a private key.
const hdKey = HDKey.fromMasterSeed(...)
 
const account = hdKeyToAccount(
  hdKey,
  {
    accountIndex: 1,
    addressIndex: 6
  }
)options.changeIndex
- Type: number
- Default: 0
The change index to use in the path ("m/44'/60'/0'/${changeIndex}/0") to derive a private key.
const hdKey = HDKey.fromMasterSeed(...)
 
const account = hdKeyToAccount(
  hdKey,
  {
    accountIndex: 1,
    addressIndex: 6,
    changeIndex: 2
  }
)options.path
- Type: "m/44'/60'/${string}"
The HD path to use to derive a private key.
const hdKey = HDKey.fromMasterSeed(...)
 
const account = hdKeyToAccount(
  hdKey,
  {
    path: "m/44'/60'/5'/0/2"
  }
)
