今週のレポートは、UASFの最前線と行く末についてレポートします。
最近は、英語圏のツイッターで名前のところにUASFと書いているひとが多くみられます。これは、8月1日に予定されているBIP-148に基づいたUASFを支持するという表明です。
最近はSegwit2Mなどの提案もあり、ビットコイン界隈は落ち着いたように見えますが、内部の分裂はまったく収まりそうになく、次の節目として、このUASFがどうなるかに注目が集まりつつあります。
結果によっては、ビットコインがフォークする(2つのコインに別れる)ことも予想されており、ユーザーにとっても大きな影響のあるイベントです。
しかしながら、日本語での情報が皆無なため、状況を把握している人は少ないと思います。本レポートでは、UASF-BIP-148とは何か?ということから、その予想される結果や、それを取り巻く状況についてレポートします。
- UASF、BIP-148とは何か?
- UASFでブロックチェーンはどのようになるのか?
- 8月1日に予想される事態のシナリオ
- 支持状況について
- ゲーム理論からのUASFへの示唆
- BIP-91という新オプション
といったところを取り上げます。
(※なお、予め断っておきますが筆者は個人的にはUASFに賛成です。ただしレポートはなるべく客観的に状況を書くように努めています)
UASFとはなにか?
まずは、UASFとBIP-148についてのおさらいです。(理解しているひとは飛ばしてください)。
UASFとは、ユーザー・アクティベイテッド・ソフトフォークの略です。ご存知の通り、Segwitは、マイナーの95%のサポートがあってアクティベートされます。しかしながら、現状では、これが達成される見込みはほとんどありません。
そこで、マイナーがこれを後押ししないのであれば、ユーザーが主導でSegwitのアクティベートができないかというのがUASFの試みです。
具体的には、ウォレットや取引所など、エコノミーノード(経済的な主体が走らせるノード)が、UASFをサポートすることで、マイナーにたいして、プレッシャーをかけようという試みになります。
最終的にはマイナーの95%の賛成が必要な状況は変わらないのですが、ユーザーがSegwitを選択する様子を示すことにより、マイナーがSegwitに賛成したほうが「得」だと思わせることで、マイナーの意思決定を変えようという意図があります。
UASFを提案した、匿名人物の少林氏は、
「マイナーが投票権を持っていて、プロトコル変更への可否を決めるといった形にとらえられていること」が問題だとして、マイナーは意思決定機関ではなく、ユーザーやエコノミーの意向にしたがって、検証サービスを提供する存在に過ぎない、としています。
この考えに基づいて、ユーザー主導で行われるソフトフォークが、UASFということになります。
BIP-148「Segwitのアクティベーションの義務付け」とは?
UASFについては、2つの提案がなされています。BIP-148とBIP-149です。いずれも少林氏の提案です。2つの提案はまったく違うものなのですが、BIP-149のほうは、11月15日のSegwitアクティベート期限以降の再デプロイ提案なので、まだ先の話です。今回は、直近議論されている、BIP-148について、解説します。
BIP-148は、Mandatory activation of segwit deploymentという名前になっており、日本語に直すと、「Segwitのアクティベーションの義務付け」といわれるようなものです。
BIP: 148 Title: Mandatory activation of segwit deployment
具体的には、ある特定の日を決めて(8月1日)、その日を境にBIP148を採用しているノードやウォレットや取引所は、Segwitシグナル付き以外のブロックの受取を拒否します。
つまり、Segwitのシグナリングを立ててないブロックが採掘されても、ネットワークやウォレットや取引所からみて「不正ブロック」とみして、捨てられてしまうのです。
となれば、マイナーとしては、不正ブロックとして捨てられてしまうと、せっかく掘ったコインが無価値になってしまいますから、困ったことになります。しかたないので、マイナーはSegwitシグナリングをし始めるだろう、というのが簡単な道筋です。
現在は、支持表明をめぐって、いろいろな政治的な動きが始まっている段階で、今後の2ヶ月で、さらにいろいろと動くでしょう。
以下、本レポートでは、UASFとは、”BIP-148の仕様にもとづいた8月1日のUASF”のこととして解説します。
Segwit-2Mとの違いは?
さて、先日は、デジタルカレンシーグループによる、Segwit-2M提案がなされて、マイナーの80%が賛成したというニュースがありました。
同じくSegwitがアクティベートされるように見えますが、この提案と、UASFは何がちがうのでしょうか?
Segwit-2Mは、
- 現行とは違う方法(バージョンビッツ4)によりSegwitをアクティベートする
- Segwitがアクティベートされると6ヶ月後の2Mハードフォークもアクティベートされる(同時にアクティベート)
- 基準はマイナーの80%
- コードは、現在のコアクライアントをフォークしたものが第三者により提供される
- 現開発体制は引き継がない予定
UASFは、
- 現行の95%アクティベートの方法による
- コードは、現在のコアクライアントに、ユーザーが改変(パッチ)を当てる
- 2Mハードフォークは論点として含まない
- 現開発体制を引き継ぐ
というものです。
UASFは現在の路線(まずSegwitのアクティベートを行い、2Mハードフォークはなし)というものを、推し進めるための方策ということがいえます。
端的にいうと、2Mハードフォークを含まないものがUASF、含むものがSegwit2Mで、また、現状の開発体制(コア開発者によるもの)を引き継ぐのがUASF、別のチームによる開発にスイッチするのが2MSegwitだと言えます。