用語集 / プロトコルとアップグレード
Bitcoin Improvement Proposal
別名はBIPです。
- Bitcoin Improvement Proposalとは?
- Bitcoin Improvement Proposalは、ビットコインへの変更やウォレットが従うべき標準を記述した番号付きの設計文書であり、それを強制する権限はありません。
BIP-2で規定されています。
BIPは、ビットコインが物事を書き留めるための仕組みです。誰でも提出でき、編集者が番号を割り当て、リポジトリには現在、DraftからFinal、Withdrawnまでの状態にある数百件のBIPが収められています。その番号は、読者が使う製品にも漏れ出しています。ウォレットが生成した12個の単語はBIP39であり、そこから導出されたアドレスはBIP84またはBIP86に由来します。
仕組み
BIPのプロセスは、統治機関ではなく書類整理の仕組みです。
これはPythonから借用されました。Amir Taakiが2011年に、同プロジェクトの改善提案を手本としてBIP-1を書き、Luke Dashjrが2016年にBIP-2でこれを置き換え、各ステータスの意味と、先へ進むために必要な証拠の定義を厳密にしました。その工程は地味です。アイデアを公開の場に示し、批判を受け止め、bitcoin/bipsリポジトリに対してプルリクエストを開き、編集者が書式を確認して番号を割り当てるのを待ちます。
提案には3つの種類があります。Standards Track文書は、コンセンサスルールからアドレス形式まで、ソフトウェアの相互運用に影響するあらゆる事項を扱います。Informational文書は、誰かに何かを求めることなく、設計や慣習を記録します。Process文書はプロセス自体を記述します。それぞれがステータスを持ち、DraftとProposedを経てFinalまたはActiveへ進み、その多くは代わりにWithdrawn、Rejected、Replacedで終わります。
番号が与えないものは権威です。割り当てられたBIPは索引の項目であって承認ではなく、そもそも承認できる機関は存在しません。採用は別個に、任意で行われます。誰かがコードを書き、レビュアーが細かく検討し、実装がそれを出荷し、ユーザーがそのバージョンを実行することを選びます。Bitcoin Coreへの非常に多くの変更にはBIPがまったくなく、非常に多くのBIPは誰にも実装されたことがありません。
ビットコインを購入するときにこれが重要な理由
BIPの番号はウォレットのメニューに現れ、間違ったものを選ぶことは、保有コインが消えたと結論づけるよくある原因です。
人々がつまずく例は、シードフレーズの復元です。BIP39は、2048項目の単語リストと、そのうち12個または24個をマスター鍵に変換する規則を標準化しました。そのため、あるブランドで書き留めたフレーズを別のブランドに入力できます。BIP39が標準化していないのは、ウォレットがコインをどこで探すかです。BIP44は1で始まるレガシーアドレスを導出し、BIP49は3で始まるネストされたSegWitアドレスを導出し、BIP84はbc1qで始まるネイティブSegWitアドレスを導出し、BIP86はbc1pで始まるTaprootアドレスを導出します。別のパスを既定とするソフトウェアにフレーズを復元すると、残高はゼロと表示されますが、コインは実際に使ったパスの下に手つかずで残っています。導出パスをバックアップと同じカードに書いておけば、その問題は決して起きません。
アドレス形式にも同じ実務上の注意点があります。bech32はBIP173から、bech32mはBIP350から生まれ、業界全体で対応の時期が異なりました。そのため、Taprootの有効化後かなりの期間、一部のプラットフォームはbc1pアドレスへ送金できませんでした。大きな出金の前に、まず少額を送り、送金先の形式が受け入れられることを確認してください。停滞したトランザクションにも番号があります。replace-by-feeによる手数料の引き上げはBIP125で規定され、それを実装したウォレットは、タイミングの悪い手数料見積もりを待たずに済みます。
番号は保証ではなくラベルとして扱ってください。決済プロトコルであるBIP70はBitPayとCoinbaseが実装し、加盟店決済の未来のように見えましたが、Bitcoin Coreはバージョン0.19で非推奨とし、0.20で削除し、今日では誰も使っていません。BIPは、誰かが注意深く考えたことを記録します。今も誰かがそれを実行しているかは、問う価値のある別の問いです。
BIP340からブロック709,632まで:提案がルールになるまで
Taprootはプロセス全体を最も明確に示す例です。そのすべての段階に日付があるからです。
設計は3つの関連する文書として公開されました。Schnorr署名についてのBIP340、Taproot出力タイプについてのBIP341、新しいスクリプトルールについてのBIP342で、Pieter WuilleがJonas Nick、Tim Ruffing、Anthony Townsとともに執筆しました。約2年間の公開議論を経て、2020年1月にリポジトリへマージされました。マージはビットコインに何も変えませんでした。文書に番号が付いたという意味でした。
その後、実装とレビューに1年の大半がかかり、ルールをどのように有効化するかの議論にさらに数か月かかり、2つの競合する仕組みが検討されました。Speedy Trialとして知られる妥協案が、2021年5月にBitcoin Core 0.21.1で出荷されました。マイナーは定められた期間に準備完了をシグナルし、2021年6月12日にロックインに達し、ルールは2021年11月14日にブロック709,632で強制可能になりました。番号付きの文書から強制されるルールまで、およそ22か月であり、その作業を文書が担ったのではありません。コードを実行するノード運営者が担いました。
Bitcoin Improvement Proposal vsコンセンサスルール
Bitcoin Improvement Proposalは書類であり、コンセンサスルールはノードが実際に強制するものです。両者が重なるのは、提案が実装され採用されたときだけであり、どちらの方向の隔たりも示唆に富みます。BIP70は番号を持ち、どこでも何も強制していません。2,100万BTCの供給上限にはBIPがまったくありません。プロセスより前から存在し、純粋にコードの中に生きているからです。ビットコインが何をするのかを知りたいときは、ソフトウェアか、それが強制するルールを読んでください。誰かが何を提案したのかを知りたいときは、BIPを読んでください。
Bitcoin Improvement Proposal vsソフトフォーク
Bitcoin Improvement Proposalは文書であり、ソフトフォークは全員が従うルールを厳しくするデプロイの出来事です。ほとんどのBIPはいかなる種類のフォークでもありません。BIP39はプロトコルに触れておらず、支払いリンクでウォレットを開けるようにするBIP21のURIスキームも同様です。ソフトフォークが実際に起きるときは、通常それを記述するために複数のBIPを要し、さらに有効化の仕組み自体のために別の1つを要します。BIP9とBIP8はシグナリングの仕組みを定義するためだけに存在するからです。両者を混同すると、提案が公開されたときにビットコインが変わったと言うことにつながりますが、それは通常数年早すぎ、ときに永遠に誤りです。