今回はブロックチェーン技術を誕生させた仮想通貨「ビットコイン」の「BIP」という用語について見ていきたいと思います。ビットコインについて調べていると、「BIP100 , BIP101 …」などという言葉を見かける事があると思います。それではBIPとは何なのでしょうか。
BIPの概要
BIPとは?
BIPとは、「Bitcoin Improvement Proposals」の略であり、直訳すると「ビットコインの改善提案」です。ビットコインシステムを改善するために提出される草案を総称してBIPと言います。ビットコインにおける事実上の標準として機能する仕様も含まれており、インターネットにおけるRFC(Request For Comments)と同様の位置付けと考えられます。
BIPを作成しているのはビットコインコア開発者などのビットコインコミュニティーメンバーです。現在、ビットコインのコア開発においては、まずシステム変更などに関する提案はすべてメーリングリストを通じて行われます。提案が良いと判断された場合、BIP形式のドキュメントが作成され、Github上で議論が行われます。このプロセスでは、提案されたコードが実際に問題なく動くかを確かめ、大まかなコンセンサスを得るために参照実装が行われます。
実際にBIPが承認・利用されるにはビットコインコア開発者によってコンセンサスが得られ、さらに高い割合での多数決による賛成票が求められます。このように、ビットコインはシステムそのものだけでなく、「システムの設計」に関しても分散型な作りになっており、攻撃者やシステム障害に対して柔軟に対応できるというメリットが存在します。しかしビットコインは中央集権的なシステムではないことから、自由度の高さのトレードオフとして、ビットコインシステムの改善に時間がかかってしまい、その意思決定の困難さは問題の一つとして挙げられています。
BIPの種類
BIP〇〇〇というのはビットコインシステム改善提案の番号を表しており、その番号がどのような提案を指しているものなのかが一目で分かるようになっています。中には提案だけでなく、システムの決まり事を表しているものもあります。現在までに100個以上のBIPが提案されています。
現時点でBIPのタイプは「Standards(標準)」「Informational(情報)」「Process(プロセス)」の3種類に分かれています。Standardsはネットワーク・プロトコルやブロックサイズ、トランザクション承認方法といったデータのやり取りの変更に関するBIPです。Informationalはシステムのデザイン設計やガイドラインに関してであり、新たな変更を提案しているものではなく、コミュニティによるコンセンサスは必要ありません。ProcessはBIPに関するプロセスの変更を説明・提案するものであり、ビットコインプロトコルの外側に関するものです。Standardsが6~7割・Informatinalが3~4割・Processが少数といった割合で存在しています。
画像:Bitcoin Improvement Proposals|Github
しかしビットコインコアはこの3種類を再構築し細分化するという計画も持っています。プロトコルやアプリケーションなど、複数レベルの提案を効率的にレビューできる環境を作ることで、多くの開発者が参加している開発プロセスを改善することを目的にしています。
BIPのワークフロー
実際のBIPに関するワークフローは以下のようになっています。この図自体は、BIP001において記述されており、Github上にアップされています。
画像:Bitcoin Improvement Proposals / bip-0001|Github
現時点で半分程度がDraft状態であり、コア開発者がGithub上で議論している状態であると言えます。Draft状態から議論され、破棄されるものはRejectやWithdrawn状態に、良いとされたものはAcceptedされます。AcceptedされたBIPはやがてFinal,Replacedされ、実際にActiveとなることでそのBIPが採用され、変更されます。
主なBIP
BIP101
BIPの数字は提案内容ごとにまとめられており、現時点でBIP100~110はハードフォークに関する提案となっています。従ってソフトフォークに比べて、開発者によって厳しいレビューを受けています。
BIP101では、ビットコインのブロックサイズの上限を緩和する提案がされています。ブロックサイズに関する提案は、ビットコインシステムにおいて非常に重要な変更なので、ハードフォークによって対応がなされます。ブロックサイズは現在1MBまでが最大容量ですが、2016年1月11日にブロックサイズ上限を8MBにし、その後約2年毎に倍増させ、2022年に64MB、2036年までブロックサイズ上限を8GBまで引き上げる提案です。しかし、現状でもブロックサイズは変更されておらず、本BIPはWithdrawn状態となっています。
BIP102
ビットコインコア開発者のJeff Garzik氏によって提案されたBIP102では同様にブロックサイズに関する提案であり、ブロックサイズの2MBまでの増加を提案しています。Bitcoinライブラリのbitcoinjを保守しているシャイルドバック氏によれば、Segwitと組み合わせることにより、この案では最大4~8MB相当のブロックを効率的に提供することができると述べています。Segwitはブロックに入れるデータを効率化する仕組みで、1つのブロックに従来より多くのデータを入れられるため、1つのブロックに実質的に4~8M相当のデータが入ると言った仕組みになっています。本提案は現在Draft状態となっていて様々な議論がなされています。
その他にもBIP103~BIP109などはブロックサイズに関する提案となっており多くがDraft状態で、様々な提案・議論がされています。
BIP34
BIP34は「Block v2, Height in Coinbase」とタイトル付けられており、ビットコインをバージョン1からバージョン2へバージョンアップする際の手順を示したBIPです。BIP34ではバージョン管理されたブロックやトランザクションのアップグレード方法を提案しています。新たに生成されたコインベーストランザクションやブロックにユニークな値が追加されると、バージョン2に更新しようというものです。本提案はFianl状態で、コア開発者たちは本BIPを承認する可能性は高いかもしれません。
ビットコインのシステムや仕組みについても知識量を豊富にすることは正しい仮想通貨の理解に繋がります。本記事で紹介しきれなかった、まだまだ多くのBIPがあります。興味がある人は是非調べてみましょう。