Skip to content
On this page

Mnemonic Account โ€‹

A Mnemonic Account is a Hierarchical Deterministic (HD) Account that is derived from a BIP-39 mnemonic phrase and an optional HD path.

It has the ability to sign transactions and messages with the private key derived from the HD Node.

INFO

viem internally uses @scure/bip32, an audited implementation of BIP-32 HD wallets, for hierarchical deterministic (HD) wallet derivation.

Import โ€‹

ts
import { mnemonicToAccount } from 'viem/accounts'

Usage โ€‹

To initialize a Mnemonic Account, you will need to pass a mnemonic phrase to mnemonicToAccount:

ts
import { createWalletClient, http } from 'viem'
import { mnemonicToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'

const account = mnemonicToAccount('legal winner thank year wave sausage worth useful legal winner thank yellow') 

const client = createWalletClient({
  account,
  chain: mainnet,
  transport: http()
})

Note: the above is a valid mnemonic, but it is not a "real" mnemonic. Please do not use it for anything other than testing.

Generating Mnemonics โ€‹

You can generate a random BIP-39 mnemonic using the generateMnemonic function with a wordlist:

ts
import { english, generateMnemonic } from 'viem/accounts'

const mnemonic = generateMnemonic(english)

Available wordlists:

  • czech
  • english
  • french
  • italian
  • japanese
  • korean
  • simplifiedChinese
  • spanish
  • traditionalChinese

Parameters โ€‹

mnemonic โ€‹

  • Type: string

The BIP-39 mnemonic phrase.

ts
const account = mnemonicToAccount(
  'legal winner thank year wave sausage worth useful legal winner thank yellow' 
)

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.

ts
const account = mnemonicToAccount(
  'legal winner thank year wave sausage worth useful legal winner thank yellow',
  {
    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.

ts
const account = mnemonicToAccount(
  'legal winner thank year wave sausage worth useful legal winner thank yellow',
  {
    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.

ts
const account = mnemonicToAccount(
  'legal winner thank year wave sausage worth useful legal winner thank yellow',
  {
    accountIndex: 1,
    addressIndex: 6,
    changeIndex: 2 
  }
)

options.path โ€‹

  • Type: "m/44'/60'/${string}"

The HD path to use to derive a private key.

ts
const account = mnemonicToAccount(
  'legal winner thank year wave sausage worth useful legal winner thank yellow',
  {
    path: "m/44'/60'/5'/0/2" 
  }
)

Released under the MIT License.