0.4.2 • Published 9 years ago

bip32-path v0.4.2

Weekly downloads
6,251
License
MIT
Repository
github
Last release
9 years ago

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 key
  • m/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 array
  • new 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 array
  • BIPPath.validateString(path, reqRoot) - returns true if the input is a valid path string
  • BIPPath.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() // m/44'/1/1/0

bippath.fromString("m/44'/0'/0'").toString(false, true) // m/44h/0h/0h

bippath.fromString("m/44h/0h/0'").toString(true) // 44'/0'/0'

bippath.fromString("m/44'/0'/0'").toPathArray() // [ 0x8000002c, 0x80000000, 0x80000000 ]
kapilteztest2ledgerjs-hw-app-ergo@everything-registry/sub-chunk-1237hw-app-bananosymbol-ledger-typescriptweb-hd-sdk@colony/purser-trezor@coti-io/ledger-sdk@deltalabs/eosjs-ledger-signature-provider@camino/avalanche-wallet-sdksolutavitae@area/purser-trezor@avalabs/core-wallets-sdk@avalabs/avalanche-wallet-sdk@backpacker69/hw-app-btc@aeternity/hd-wallet@blooo/hw-app-acre@blooo/hw-app-klaytn@blooo/hw-app-velas@blooo/hw-app-vtb@bloks/ledger@bhagyaraj_1208117/hw-app@casinocoin/ledger@c4tplatform/avalanche-wallet-sdk@c4tplatform/camino-wallet-sdk@codewarriorr/hw-app-btcv@codewarriorr/live-common@coinflect/hw-app-coinflect@axiaglobal/hd-wallet@axiaglobal/wallet-sdk@axia-systems/hd-wallet@axia-systems/wallet-sdk@dcomm-tech/wallet-sdk@daonomic/trezor-wallet-providerzabo-connect-utilszswjs-ledger-signature-provider@hardfork/trezor-wallet-provider@hirishh/lisk-ledger.js@fluent-wallet/hw-app-conflux@elmutt/hdwallet-ledger@infinitebrahmanuniverse/nolb-bip@ledgerhq/hw-app-btc@ledgerhq/hw-app-cosmos@ledgerhq/hw-app-elrond@ledgerhq/hw-app-algorand@ledgerhq/hw-app-xrp@ledgerhq/hw-app-solana@ledgerhq/hw-app-str@ledgerhq/hw-app-helium@ledgerhq/hw-app-icon@ledgerhq/hw-app-polkadot@ledgerhq/live-common@loon3/hw-app-btc@levino/trezor-wallet-provider@linkdesu/hw-app-ckb@luxfi/wallet-sdk@luxfi/hw-app-lux@engrave/hw-app-koinos@engrave/ledger-app-hive@exodus/hd-key-slip-10@exodus/key-utils@exodus/slip10@ezclabs/ezchain-wallet-sdk@factoid.org/hw-app-fct@ecanna/ecanna-wallet-sdk@metalblockchain/metal-wallet-sdk@metanames/sdk@jafri/ledger-bitcoin@moonstake/conseiljs@qiushaoxi/hw-app-eosio@savannah-labs/savannah-wallet-sdk@pontem/hw-app-aptos@pocketbitcoin/hw-app-btc@pollum-io/sysweb3-keyring@obsidiansystems/hw-app-avalanche@owdin/live-commonnumbatxperferendisquibusdamrerumcupiditateillumrecusandaeimaginea-aepp-sdkhw-app-ckbhw-app-ckb-testhw-app-cschw-app-dfihw-app-iotahw-app-nanhw-app-nanohw-app-nano-xrohw-app-unohw-app-xtzledger-ergo-jsledger-bitcoinledger-bitcoin-babylonledger-xtzledgerhw-app-bitcoin-new-js@vite/ledgerjs-hw-app-vite@vutr/purser-trezor@zalastax/nolb-bip@zee-ava/axia-wallet-sdk
0.4.2

9 years ago