用語集 / アドレスと鍵
BIP-44のpurposeレベル
- BIP-44のpurposeレベルとは?
- BIP-44のpurposeレベルとは、HD導出パスの最初の番号であり、ハードニングされ44'に固定された値で、その下にあるサブツリー全体を1つのウォレット規格のものと宣言します。
BIP-44で規定されています。
purposeレベルは、BIP-44がマスター鍵の下に定義する5つのレベルの最初のものであり、BIP-43は互換性のないウォレットのレイアウトが同じツリーを共有しないようにこのスロットを予約しています。BIP-44は値を44'(0x8000002Cと表記)に固定しており、仕様は2014年4月24日に割り当てられました。誤ったpurposeでウォレットを開くと、同じシードから異なるアドレスが再構築され、残高はゼロと表示され、コインはチェーン上に残ります。
仕組み
purposeレベルはマスター鍵の直下にあるhardenedインデックスであり、BIP-44はこれを定数44'に固定しています。その下のすべてはこの標準に属し、m / purpose' / coin_type' / account' / change / address_indexという固定の5レベル構造をとります。44はBIP自身の番号であり、BIP-43が推奨しているのはこの値です。
このレベルが宣言する内容は、多くの人が想定するよりも限定的です。BIP-44は、この定数が"indicates that the subtree of this node is used according to this specification"(このノードのサブツリーが本仕様に従って使用されることを示す)と述べているだけです。文書のどこにもアドレス形式は示されていません。
purposeの下では、ハードニングがさらに2レベル続き、そこで止まります。
| レベル | インデックス | Hardened | 選択するもの |
|---|---|---|---|
| purpose | 44' | はい | サブツリーを所有する標準 |
| coin type | 0' | はい | ビットコイン(1'はtestnetを意味します) |
| account | 0' | はい | 0から番号付けされる1つのアイデンティティ |
| change | 0 | いいえ | 外部チェーン0、内部チェーン1 |
| address index | 0 | いいえ | 上方向に数えるアドレス |
したがって、m / 44' / 0' / 0' / 0 / 0は最初のビットコインアカウントの最初の受取アドレスであり、3番目のレベルを1'に変えると、それと履歴を共有しない2番目のアカウントが開きます。BIP-44自体には2つのcoin type、0と1しか登場しません。残りはSLIP-0044にあり、これはSatoshiLabsが維持し、BIPが委ねているものです。
どこで目にするか
purposeレベルは、ウォレットが表示するあらゆる導出パスに現れ、44'はレガシーを意味する値です。44'で始まるパスは1で始まるアドレスを生成しますが、それはBIP-44がその形式を選んだからではありません。BIP-44はあらゆる代替案より前に存在しており、purposeがアドレスの種類を意味するという規則は後から加わりました。2016年のBIP-49、2017年のBIP-84、2021年のBIP-86がそれぞれ、異なるスクリプト種別を示すために独自のpurpose値を取っています。
これには復元時に直面するコストがあります。各標準が別々のブランチを所有しているため、BIP-44が説明するアカウント探索ルーチンは、ソフトウェアが対応するpurposeごとに1回実行され、各実行は外部チェーンをスキャンし、現在20個の未使用アドレスが連続する値に設定されているギャップリミットに達するまで続けてから諦めます。4つの形式に対応するウォレットは4回の走査を行います。1つの形式にしか対応しないウォレットは1回の走査を行い、自分のブランチに履歴を見つけられず、コインが別の最初の番号の下にある間に空のアカウントを表示します。
実際には、この値はウォレットのアカウント詳細で拡張公開鍵の隣に現れるか、高度な復元が提供する自由入力欄に現れます。当サイトのElectrumのレビューでは、インターフェースがおつり用アドレスや導出パスとは何かをすでに知っていることを前提としている点を欠点として挙げており、purposeはその欄で最初に正しく入力すべき部分です。簡単な確認方法が1つあります。2番目のレベルが0'ではなく1'と表示されている場合はtestnetのブランチであり、そこに実際の資金はありません。
BIP-44のpurposeレベルvs導出パス
purposeレベルはパスの中の1つの数値であり、パスそのものではありません。パスは5つのレベルを順に並べたもので、最初のレベルだけを44'から84'に変えると、同じシードが別の標準に渡され、下のレベルはBIP-44が与えた意味を保ちます。BIP-84はそれらを変更せずに再利用します。パスがBIP-44であるのは、その最初のレベルが44'と表示されている場合だけで、どの標準がアドレスを構築したかを示すのは、そばに印刷されたラベルではなく、この先頭の数値です。