メインコンテンツへスキップ

BIP 44

決定性ウォレットのためのマルチアカウント階層

原題: Multi-Account Hierarchy for Deterministic Wallets

Status
Deployed
Type / Layer
Specification / Applications
Author
Marek Palatinus, Pavol Rusnak
割り当て日
Status 検証日
原文
github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

要約

BIP32 が定義した派生木に、用途ごとの意味づけを与えた提案です。パスを m / purpose' / coin_type' / account' / change / address_index の 5 階層に定め、それぞれの階層が何を表すかを固定しました。purpose には 44' を入れ、この仕様に従っていることを示します。coin_type は通貨ごとに割り当てられた定数(Bitcoin は 0'、Testnet は 1')で、同じ seed から作った鍵が通貨をまたいで混ざらないようにします。account' は利用者が資金を分けたい単位で、0 から順に使います。change は外部チェーン(相手に伝える受取用アドレス)が 0、内部チェーン(おつりの戻り先)が 1 です。最後の address_index は連番です。さらに、seed だけを持ち込んで復元する場合の手順として account discovery を定めています。外部チェーンのアドレスを順に導出して利用履歴を調べ、未使用のアドレスが 20 個続いたところで打ち切るというもので、この 20 という値が gap limit と呼ばれます。

技術的意義

ウォレットの内部構造を実装ごとの裁量から共通の規約へ引き上げ、seed を別のウォレットに持ち込んでも同じ資金が見つかる状態を作りました。purpose を切り替えて用途を分ける設計は BIP49 / 84 / 86 にそのまま受け継がれ、gap limit という概念も、アドレスを大きく飛ばして使うと残高が見えなくなる理由として今も実務に効いています。

関連する BIP

関連する解説記事

このページに掲載しているのは原文の翻訳ではなく日本語の要約です。BIP は原文が正であり、Status を含むメタデータは上記の検証日時点で bips リポジトリから転記した値です。実装・検証の際は必ず原文を参照してください。

bitcoin/bips で原文を読む