ビットコインのハードフォーク論争が決着。SegWit導入と2MB拡張の合意内容と今後見通し、超初心者向けのFAQ
1年に渡り議論されてきて、一時はビットコイン存続の危機とまでいわれたハードフォーク問題が決着しました。香港で、マイナーとコア開発者が議論した会議で、将来のハードフォークを盛り込むことで決着をみました。ビットコインの将来に対しては大変すばらいニュースで、最大の懸念材料がクリアになったといえましょう。
今回は、この合意内容を詳細に解説するとともに、今後どういったスケジュールで物事が進むのかといったことについも解説したいと思います。また、いずれにせよハードフォークが行われるということで、この影響についても解説します。
また、最期に、用語も含んだ超初心者向けの解説も加えます。コアって何?ブロックサイズって何?レベルの質問に答えて、この話題が分かるようにしますので、ぜひお読みください。
非常にまずかいつまんで合意内容を要約すると、
- Segwitを4月にデプロイ。
- 7月に、将来のハードフォークを含んだコードをコア開発者が提案
- 来年の7月にハードフォーク実行
という感じです。ビットコインクラシックや、ビットコイン・アンリミテッドなどは、採用されないということになります。
さて、この会議ですが、サトシラウンドテーブルというもので、毎年、ビットコイン界のステークホルダーがあつまって、意見を交換する会です。開発者を始め、ビットコインビジネスに関わる取引所や、ウォレットや、加えてマイニングプールや、マイナーそのものも加わります。今回は、ハードフォークの鍵をにぎるハッシュパワーを持つ巨大マイニングプールの管理者と、主要なマイナーと、コア開発者の間で話された模様です。
<合意表明のメンバー>
合意声明のメンバーを主要なところだけ抜粋します。中国を中心に、マイニング系の主要メンバーが集ったと言えましょう。
- マイニングプール、
- ANTPOOL
- F2Pool
- マイニング機材、マイナー
- Genesis Mining
- Bitfury
- Bitmain
- 取引所
- Bitfinex
- Bit-X
- BTCC
- Huobi
- OK Coin
- その他
- Ledger Wallet
- Hao BTC
- コア開発者
<合意内容を項目別にレビュー>
さて、では、実際にこの声明の内容をより詳しく読んでいきましょう。声明文自体はそれほど長くないので、全文引用しつつ、解説を加えます
- We understand that SegWit continues to be developed actively as a soft-fork and is likely to proceed towards release over the next two months, as originally scheduled.
まず、Segwitを予定どおり開発をすすめます。もともと4月にデプロイ予定でしたので、そのタイムラインは変わらず。規定路線です。また、Segwitは、ソフトフォーク(ソフトウェアのアップデート)ですむので、まず、それを行うという内容です。Segwitファーストが合意されました。
- We will continue to work with the entire Bitcoin protocol development community to develop, in public, a safe hard-fork based on the improvements in SegWit. The Bitcoin Core contributors present at the Bitcoin Roundtable will have an implementation of such a hard-fork available as a recommendation to Bitcoin Core within three months after the release of SegWit.
ここが新しい部分です。コア開発者は、Segwitを試すも、将来のハードフォークには否定的なスタンスを貫いて来ました。Segwitで十分にスケーラビリティ問題は解決すると考えていたようです。しかし、コア開発者が譲歩し、Segwitのあと、2Mへの拡張を行うというハードフォーク案を約束しました。コア開発者によるハードフォークのコードをSegwitのリリース後3ヶ月以内(つまり7月)に、提案するとあります。
Bitcoin Classisの採択ではなく、コア開発者のほうでハードフォークのコードを書き、それをが提案されるということになります。
- This hard-fork is expected to include features which are currently being discussed within technical communities, including an increase in the non-witness data to be around 2 MB, with the total size no more than 4 MB, and will only be adopted with broad support across the entire Bitcoin community.
ハードフォークの内容についてです。ブロックサイズを2Mにする内容を含むとあります。Segwitの効果で、ブロックの情報が半分に圧縮されますから、2Mのハードフォークをもって、従来の4M分のブロック容量を確保する、と書かれています。またこのハードフォークは、ビットコインコミュニティの幅広い指示があっって採択されるという内容です。
一つポイントが有るとすると、ハードフォークには、単純なブロックサイズ2M以外にも、幾つかの技術的な改良が含まれる見込みです。ハードフォークでないと解決しない幾つかの懸案事項がリストアップされており、今回のフォークを機にそれらの改善点も取り込もうという見通しです。
そのリストは、こちらにあります。高度にテクニカルなので、ご興味のある方のみ。
ハードフォーク・ウィッシュリスト
https://en.bitcoin.it/wiki/Hardfork_Wishlist
- We will run a SegWit release in production by the time such a hard-fork is released in a version of Bitcoin Core.
- We will only run Bitcoin Core-compatible consensus systems, eventually containing both SegWit and the hard-fork, in production, for the foreseeable future.
平たくいうと、ビットコインコアの開発するソフトウェアのみを走らせるという合意です。つまり、ビットコインクラシックや、ビットコインアンリミテッドは走らせないという合意です。コアのソフトウェアにSegwitもハードフォークも取り込まれるので、それのみを採択するということですね。
ほぼ80%以上のハッシュパワーをもつプールがこれで合意したと言われていますので、この一文をもって、ビットコインクラシックや、アンリミテッドの線は完全に消えました。
- We are committed to scaling technologies which use block space more efficiently, such as Schnorr multisig.
ブロックの容量を効率的に使うことのできる技術の向上にコミットするということです。たとえば、Schnorr multisigが上げられています。Schnorr multisigがどういう技術か私もわからないのですが、これを取り入れることで、データ量が減るのでしょう。
以上が声明の内容です。とてもシンプルですが、とにかくポイントは、
- コア開発者のバージョンのみを走らせる
- コア開発者主導で、ハードフォークを行う
というところがポイントということになります。つまり、今後もコア開発者がリードする開発体制が引き継がれるということになりますね。
Based on the above points, the timeline will likely follow the below dates.
- SegWit is expected to be released in April 2016.
- The code for the hard-fork will therefore be available by July 2016.
- If there is strong community support, the hard-fork activation will likely happen around July 2017.
最期はタイムラインのまとめです。
- Segwitが実装された Bitcoin coreが、4月にリリース。なお、Segwitもすぐに発動はされないので、1,2ヶ月移行期間があります。
- 7月に、2Mへの拡張と、その他の改良を施した、ハードフォークをともなうBitcoin Core が提案される。
- このCoreを、みんなが走らせる。幾つかの発動条件がコードに含まれると思うのですが、例えば、ハッシュパワーの99%がこのバージョンを採用したら切り替わるみたいなコードを含めておくという感じになります。
- ですので、7月にこのハードフォーク版がリリースされてもすぐに切り替わるわけではなく、徐々にマイナーや他のノードがこれを使い、ほぼ全員がこれを使うようになった時点で切り替えの合意が発動します。
- 合意が発動した場合、来年の7月をもって2Mのブロックが有効になる、といった感じです。
上記が、全体スケジュールになります。
<今後の見通し、スムーズに進むか?>
次に見通しです。まず、ビットコインクラシックは負けです。マイナーの80%以上が今回の合意に参加したといわれているので、クラシックが採択される線はなくなりました。
Segwitですが、開発は順調に進み、すでにテストネットでテストされています。深刻なバグなどがなければ、予定通りに4月にSegwitが組み込まれたBitcoin Core 0.12xがリリースされると思います。
なお、Segwitはウォレット側の対応が必要です。ただしユーザーは今までの方法でも送金は可能ですので、なにか変化があるわけではないです。ウォレットは順次アップデートされると思います。Segwit対応のウォレットだとデータ量が少なくなるので、手数料が安くなるメリットがあると思われます。
ハードフォークですが、2Mへの拡張の他にも、幾つかの改良がこの時点で取り込まれる模様です。それらのコードが7月までにコア開発者より発表されます。この内容で揉めることは無いと思いますが、慎重にも慎重を期さないといけないので、スケジュールが遅れる可能性はあるかもしれません。
7月以降、このコアをマイナーが採用していくことで、徐々に新しいバージョンでのブロックが生成され始めます。これが一定の比率(99%とか)になるとスイッチが発動し、来年7月に切り替わるという感じになるはず。十分な移行期間、つまり1年を取っているので、その間に、ほぼすべてのマイナーやノードが切り替えるということが想定されているとおもいます。つまり、99%とか、そういう高いハードルになるはず。
さて、ハードフォーク時点でのコインですが、今回のように全会一致で、99%のひとが切り替えるということであれば、なんら問題は起こりません。コインの価値は保たれ、コインが分岐したりするリスクも無いでしょう。
<今回の合意に対する反論と懸念点>
さて、今回の合意に対しては、すでに反論が出ているようです。コインベースのCEOのブライアンアームストロング氏は、Too Little, Too Lateという表現で、あまりに前進が少なく、小さいと批判しています。
批判のポイントは、
- Segwitで拡張できる容量は少ない。まず先に2Mのフォークをすべきだ
- 2017年では遅すぎる。ビットコインのトランザクションは一年で倍になっており、このペースでは、来年初頭にまた容量がまた一杯になってしまう。(なのでまず2Mにすべき)
- 既に、ビットコインクラシックはコードができており、準備が整っているではないか
- プロトコルの開発を、一つのグループ(コア開発者)に委ねるのは、中央集権化ではないか。ビットコインのプロトコルは誰でも開発を勧めることができ、その是非は、ビットコインコミュニティのオープンな投票によって決するべきだ(たとえば、ブロックチェーン上に記録する形で投票を行うなど)
- 結論として、いますぐ2Mのフォークを行うべき
- その後、開発も競争の時代に入るべきだ。コア開発者、クラシック開発者、その他によって、競争的な提案がなさるべき。会議や合意の表明ではなく、、投票(つまり最も長いブロック生成)によって決着がなされるべきである。
というのが要約です。
以下個人的な意見を書きます。
確かに、来年7月にブロックサイズ引き上げというのは、想定していた時期よりかなり遅い印象があります。せいぜい秋ごろではと思っていたのですが、来年の7月というのはすごく保守的なスケジュールという印象です。ですので、遅いというのは同意。また、2Mへのハードフォーク自体はもちろん私も同意します。
しかし、ながら、最期の方に書かれている、今後の競争的な開発体制については、私は反対意見です。このような方針のもとでは、今後も、様々なハードフォーク提案が無限に提起されることになり、極端なもの(コイン供給量を調整できるアルゴリズムを加えるとか、もっといえば21百万枚の上限を取っ払うとか、ブロックタイムを1分にするとか)そういうのも含めて、いろいろな物がだされて、混乱を招くだけと思います。
それに対して、今回同様の政治が行われ、マイナーの合意獲得合戦が行われ、それを平定するために毎回いろんなスッタモンダを経ないといけないでしょう。そうした提案は、ビットコインのハードフォークではなく、アルトコインでやればいいのではないでしょうかとおもいます。
プロトコルの開発や合意に関しては投票による民主主義は馴染みません。全会一致であるべきとおもいます。その上で、ネットワーク維持は競争的であればいいわけで。
プロトコル開発のガバナンスについては、インターネットの先例に学ぶべきでしょう。1992年に、MITのデビット・クラークが、インターネットの標準化のスタンスを表した伝説的な言葉があります。ご存知のかたも多いと思いますが、引用します。
"We reject kings, presidents and voting; we believe in rough consensus and running code"
「私たちは、支配者(王様)も、管理者(社長)も、投票(民主主義)も否定する。私たちは、大枠の合意と、機能するコードを信頼する」
私は、今回のラウンドテーブルのようなステークホルダーの集まりを介して、全会一致が望ましいと考えます。もちろんラウンドテーブルもアドホックな集まりかつ非公開なので、密室だという批判は免れないと思いますし、現在のコア開発者の姿勢にも問題があると思ってます。まさに、コア開発者が、キングみたいになってしまって牛耳っているという批判はあるので、このあたりの風通しを良くして、もっとステークホルダー同士の意見交換の場を活性化しオープンにしていくべきと思います。今回の騒動は、そうした素地をつくったという意味でも、雨降って地かたまるということになればいいと思うのですが・・
意見交換を重視せず、ハッシュパワーフォークで決着を見ていたら、意見の軋轢はすぐ再燃して、ハードフォーク論争が定期的に持ち上がることになっていたでしょう。次は4M、8M。きりがないと思います。
以上は私の個人的な意見なので、鵜呑みにしないでください。批判的な態度を保ち続けてくださいませ。コミュニティの発展にもそうした議論が大事です。
ということで別の意見の動きも紹介します。さて、ここまで書いてきましたが、私のような考えが主流であるとも限りません。ビットコイナーかなりの割合のひとが、合意がとれたことは歓迎しつつも、非常に批判的な意見を持っています。それの視点も紹介しましょう。
<予断を許さない自体が続くシナリオ>
今回の意思決定方法を、コア開発者がすべての権限を握ったというように捉える向きもあり、ビットコインの開発が独裁体制になったと考える意見。コア開発者には反対できないとう実例をつくったことで、ビットコインのガバナンスは崩壊したとする意見。今後はビットコインは、コア開発者と、Blockstream社の支配下に置かれてしまうだろうという意見。コア開発者以外の意見が封じられると考える意見。ビットコインの分散型の特徴が失われ、中央集権になったとする意見。などなど。基本的にコア開発者に権限が集中していることへの批判となっています。
ハードフォークのタイムラインをめぐっても、実はまだ予断を許さない状況が続く可能性もあると思います。つまり、引き続き、早期の2Mへの引き上げを主張する人は主張をつづけるでしょう。つまりClassicの今すぐの採用を主張したロビー活動が続けられ、今回の合意をひっくり返そうという運動が起こるかもしれません(その目はうっすらと感じています)。
もしくは、Segwitのあとで、すぐに2Mに引きあげを狙う、クラシック2みたいなのが出てくると予想されます。つまり、Segwitのコードを取り込んだ次のバージョンをベースに、来年7月ではなく、今すぐ2Mへハードフォークするという案が出されるという予想です。これはかなりありえるんじゃないかと思っていまして、そうなると、もう一度、時期をめぐってのハードフォーク論戦が繰り返されることになります。
中国のマイナーはコアのロードマップに今回は合意しましたが、このような案が再提出されたら、そちらに賛成するひとも出てきてもおかしくはないでしょうし。
私はこうした動きは、Segwitのデプロイでブロックサイズに余裕がうまれると、実証的にしばらく大丈夫だということになり、徐々に収まるのではと楽観していますが、温度感はまだもうすこし時間がたってみないと判断できかねるところがあります。
どちらにしても、ビットコインのガバナンスについては、これからも多大な努力が必要でしょう。コア独裁という体制は私も良くないと思っているのですが、投票主義はもっとまずいと思っていて、コアを中心にしつつも独裁と言われれないようなオープンな議論のテーブルに発展していくことが解だと個人的には思います。
kojiさんも、ブログでこれらのガバナンスについて書くとのことですので、それも合わせてお読みください。多様な意見を戦わせることが、ガバナンスの向上につながります。
<超初心者向けのQ&A>
さて、この一連の議論、ビットコイン初心者にはさっぱりわからない面もあるとおもいます。そこで、超初心者向けのQAを書いておくことにします。
コアって何のこと?
コアというのは、Bitcoin Coreというソフトウェアの名前です。コア開発者というので、「中心的な開発者」のことだと思う人もいるとおもうのですが、そうではなく、ビットコインコアというソフトを開発している開発者チームのことです。
Bitcoin Coreというのは、要するに、なんでしょう、標準的なソフトということで、ビットコインはこのソフトを走らせるのが正式版ですよ、といったやつです。
ナカモトサトシが最初のバージョンをつくって、それから、現在まで、いろいろな開発者に引き継がれて現在までメンテされています。
現在、ほとんどのマイナー、マイニングプール、フルノードといわるところが、このコアを走らせています。新しい機能や、バグフィックスなどはまずはコアのソフトウェアに実装されて発表されますから、これを使うのが何しろ便利です。セキュリティも最も強固と言われています。
なお、ウォレットの事業者なんかは、コアをつかわず独自のソフトをつくっているケースもあります。コアは、いわゆるフルノードというやつで、全部のブロックチェーンをダウンロードするタイプです。スピードが遅いので、ウォレットだと辛いのです。ですから、軽量クライアントと呼ばれるものは、独自のものをつかっていることがほとんどです。
こうした軽量クライアントは、マイニングもしませんし、ブロックチェーンも維持しませんので、今回の議論からは蚊帳の外、という感じでしょうか。
ブロックサイズって何
ご存知、10分に一回のブロックに含めることのできるデータ量の上限です。これが、現在1メガバイトと決まっています。これ以上のデータを含めたブロックは無効になってしまうので、せっかくマイングしても無駄になってしまいます。
1Mバイトは、回線の遅いところでも、すみやかに同期ができるようにと、考えられたリミットだといわれています。
ブロックサイズの現状は?
Blockchain.infoを見ると、その状況がわかります。一番右のものが、ブロックに含まれるデータ量です。912KBとか、966KBとか、ほとんど1M上限までデータが含まれていることがわかりますね。
Transactionのところを合わせてみると、たとえば、3301トランザクションで、966.15KBといった感じです。大体、1MBに含ませられるトランザクションの数は、1500-3000位でしょうか。
これが、ビットコインの処理限界です。10分に3000トランザクションというのは、1秒あたりに直すと、5トランザクションです。5トランザクション/秒は、やっぱり遅いですよね。
なお、ここがややこしいのですが、ビットコインのトランザクションというのは、金額でなくてデータ量なんですね。
↑こういう取引は、123BTC送ってますが、2行ですよね。これはデータ量が少ない。スリムです。ビットコインの送金手数料は、このデータ量に比例するので、このくらいのデータだと、安い手数料ですみます。実際このFeeも、0.0001btcですね。
次のトランザクションはこれですが、データ量が多いですね。なので、Feeも0.00123711btcと、増えてます。
こういうデータ量が多いトランザクションが、大量にやってくると、すぐブロック容量がパンクしてしまうわけです。なので、こういう奴は、マイニングするさいに後回しになります。なかなかマイニングされにくい。ですので、その分、手数料を弾んでよということになります。
このトランザクションは、0.00123711と、かなり多くの手数料をつけてますね。そうするとマイニングされやすくなる。といった感じになってます。
ブロックサイズを上げるとなぜ問題なの?
だったら、さっさとブロックサイズを上げればいいのでは?と思うのですが、ブロックサイズを挙げるには2つの問題があります。
一つは、これがハードフォークになるということ。ブロックサイズは、ソフトウェアにハードコードされているために、動的にかえることはできません。またブロックサイズの変更は、ネットワークの互換性を伴わない変更です。
つまり、これを2Mにすると、いままでのネットワークと互換性がなくなってしまうのです。ビットコインとライトコインが互換性が無いのはお分かりのように、ビットコイン1M版と、2M版ですと、ビットコインとライトコインのレベルで互換性がなくなります。まったく別のコインになります。ですから、すべてのマイナーや、ノード、ウォレットなどが一斉に対応する必要があるわけです。全員賛成なら、移行期間を設けて、全員が切り替えるようにすれば移行は可能なわけですが、今回の論争のように意見が割れている場合、全員切り替えるということにはなりません。すると、ビットコインのネットワークが2つに分断されてしまうということになるわけです。
ふたつ目は、伝搬の時間の問題です。ブロックは、マイナーが発見するとそれをネットワーク全体に伝えますが、瞬時にすべてのコンピュータに届くわけではなく、バケツリレー式に徐々に伝わっていきます。この時、1Mバイトの容量があると、それなりに届くのに時間がかかります。
1Mをダウンロードするのに、高速ネットワークでしたらものの1秒とかですが、ビットコインのネットワークはまだ細いところもあります。私がすむベトナムでは、やっぱり3-5秒かかってしまいますね。となると、ベトナムのビットコインユーザーだけ、3-5秒くらい遅い世界をみている(残高が合わない)ということになります。
これが、10Mのブロックとなったら、遅延が30秒とか1分に。日本では確認取れてるのに、ベトナムでは確認取れてないみたいな。これは、実務上も問題ありますし、これをつかったアタックなどを、セキュリティ上のリスクにもなりえるんですね。
また、マイナーたちにも不利益があります。中国のマイナーたちは、決して超高速回線を使っているわけではないのです。もちろん遅延に10秒とかかかりませんが、仮に1秒遅延したらどうなるでしょうか。マイニングは、新しいブロックを受け取り、それを検証してから、次のブロックをマイニングし始めます。ブロックが届くのが遅れるということは、それだけ次のマイニングにとりかかり始める時間が遅くなります。となると、ほんの数秒でも確率的には、問題なわけです。かりに2秒おくれたら、10分(600秒)のうちの2秒ですから、1/300だけ他のマイナーより確率的に不利になるわけですね。これは見逃せないわけです。
そして、この時間差をつかって、セルフィッシュマイニングといわれるマイニングの不正とまでも言わないのですが、ズルのような行為ができてしまいます。
これが積み重なると、マイニングという仕組みに問題が生じてきてしまうのですね。というわけで、単純にブロックサイズを10倍、100倍にすれば解決するというわけではないのが、分散ネットワークで動いているビットコインの難しいところです。
Segwitって何?
Segwitというのは、難しい技術解説はナシにして、意義だけをいいます。ブロックサイズを増やすのは難しいなら、じゃあデータを圧縮できないかということです。
1Mの容量しかなくても、データを圧縮できれば、いままでの2M分のデータが入るようんなるんじゃないか、という考えです。
実際にはデータ圧縮ではなく、いらないデータを剪定して、別管理に追いやることで、ブロックに入れるデータを少なくしています。
どのくらい少なくなるかというと、だいたい半分くらいになるとのこと。これで、つまり2Mに容量をふやしたのと同じ効果があるということであるわけです。
以上解説でした。
この話は難しいこともあり、疑問点もあるとおもいますので、なんでも質問フォームで質問していただけばフォローいたします。
よろしくお願いします。
【お願い】ソーシャルメディア、ツイッター、ブログを通した、本レポートや、研究所の紹介を歓迎しております。参加してみての感想や、レポートの役立ち度など、ソーシャルメディアやブログを通して紹介いただけますと助かります。レポートの目次などは転載いただいてもかまいません。
<著作権表示>2016(c)大石哲之
本レポートの著作権はすべて大石哲之(tyk@tetsuyuki.com)に帰属します。本レポートはビットコイン&ブロックチェーン研究所の会員のみが閲覧できます。本レポートの研究所外への転載および無断引用は固くお断り致します。また、本レポートは、会員個人のみが閲覧いただけます。会員以外へのシェアや法人内での回覧・シェアは固くお断りしております。(後日、回覧人数分の料金を申し受けます)。無断の転載などを見つけた場合、著作権者までご連絡ください。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション