BIP32 Path
Bitcoin BIP32 ("HD Wallet") path helpers.
There are multiple path representations being used by different implementations. These includes:
m/44'/0'/0'/0/0
where the apostrophe means hardened keym/44h/0h/0h/0/0
where the letter h
means hardened key- and a binary representation predominantly used by Trezor & compatible wallets and some software tools, such as bitcoinjs-lib
Some useful links:
API
BIPPath.fromString(path, reqRoot)
- creates an instance from a path written as text. Set reqRoot
to true if the m/
prefix is mandatory.BIPPath.fromPathArray(path)
- creates an instance from a binary path arraynew BIPPath(path)
- alias for BIPPath.fromPathArray(path)
<bippath>.toString(noRoot, oldStyle)
- returns a text encoded path. Set to noRoot
to true to omit the m/
prefix. Set oldStyle
true to use h
instead of '
for marking hardened nodes.<bippath>.toPathArray()
- returns a binary path arrayBIPPath.validateString(path, reqRoot)
- returns true if the input is a valid path stringBIPPath.validatePathArray(path)
- returns true if the input is a valid binary path array
Binary path arrays contain each node as a separate number, where hardened nodes are marked by setting the 32th bit: m/44'/1/1/0
corresponds to [ 0x8000002c, 1, 1, 0 ]
Examples
var bippath = require('bip32-path')
bippath.fromPathArray([0x8000002c, 1, 1, 0]).toString()
bippath.fromString("m/44'/0'/0'").toString(false, true)
bippath.fromString("m/44h/0h/0'").toString(true)
bippath.fromString("m/44'/0'/0'").toPathArray()