「マイナーによる投票によって決定」という表現の誤解について

レポート「アルトコイン図鑑」では30種類以上のコインを解説ビットコイン研究所

レポート「ビットコインの情報源決定版(26ページ)」を配信しました。レポート内容へ

シグナリングは、マイナーの投票であるとの誤解があります。シグナリングはそのような意図の機能ではなく、過去にも今にもそのような機能ではありません。

シグナリングが導入された経緯を順を追って説明することで、理解を図りたいと思います。

ソフトフォークとは?

ビットコインでは過去の機能追加はすべてソフトフォークでなされました。

ソフトフォークで一番有名なのはマルチシグ機能でしょう。これは当初からあった機能ではなく、あとからソフトフォークで追加されました。

また、あまり知られていませんが、CHECK LOCKTIME VERIFYとCSVと呼ばれる機能。これは有る特定の日やブロックが訪れると有効になるといった時限トランザクションを作ることができる機能です。

これらの機能はソフトフォークにより追加されました。

アクティベート方法

初期のソフトフォークは、フラッグデイト方式でアクティベートされました。たとえばマルチシグの機能(P2SH)などです。

これは、期日を決めて、その日から新ルールを適用しますから、その日までに皆さん準備してくださいというものです。法律の施行に似ています。

いままでは、ずっとフラッグデイによる方式が取られており問題もなかったのですが、フラッグデイの場合アップグレードを忘れたマイナーやユーザーが居るとネットワークが分裂する可能性があるので、特定の日ではなく準備が確認できてから適用するという方法に徐々に変わっていきました。

過去のソフトフォークの事故では、BIP66「署名の厳格化」という適用で事件がおきました。これは、ビットコインでつかっているECDSAという電子署名の安全性を強化するために、署名の条件をより厳格化するという改修でした。

このアップデートを知らなかったのか、するのを忘れていたマイナーが居て、旧ルールのブロックを掘り続けました。その結果、6ブロックにわたりチェーンの分岐が発生してしまったのです。

指摘されて気づいたマイナーは、慌ててソフトをアップデートしたので分岐は解消されました。しかし、旧チェーンの6ブロックは消えてなくなり(再編成)、そこで処理された取引と生成された新規コインは文字通り消えてなくなりました。マイナーは6ブロック分の新規コインと手数料を失うという損害を出しました。

もともとはマイナーの便宜のために存在

ソフトフォークでのチェーンの分岐を防ぎ、安全に行う策がシグナリングです。

マイナーは、新バージョンのソフトに変更が完了すると、アップグレードしたというシグナルを発するようになります。

ネットワークはシグナルをカウントし、全体のXX%がアップデートを済ませたら、十分安全だろうと判断し、ロックインおこなって、その2週間後に実際にルールが使えるようになる(アクティベート)というようにします。

要するに、アップデートの準備を先にしておいて、それをモニターする機能を通して準備OKが確認できた時点で、実際に使えるようにするというもの。これなら、マイナーのアップデートし忘れは起こりえません。

非常に安全なやり方です。これがBIP9と言われるソフトフォークの実施の仕様です。

そして、しきい値の数字としては、もっとも保守的に安全側に振った数字として95%が使われました。

過去には、この方式(BIP9)により、OP_CSVのソフトフォークが実施されて成功しています。Segwitはこれに続く2つめのものです。

シグナリングの政治利用

つまり、シグナリングという仕組みは、もともとはマイナーのミスを防ぐために、マイナーの便宜のために安全策として提案されたものだったのです。

しかしながら、Segwitに快くおもっていないマイナーは、本来ネットワークの準備状況をモニターするための仕組みであるシグナリングを、自分たちの意思を表明する政治手段として利用し始めました。

つまり、バージョンビッツのシグナルを、マイナーによる投票だという説明をしたのです。

開発者としては、そういう使われ方は想定しておらず、単に、準備状況のモニターのためにもうけた仕組みですから、困惑しました。

ご存知のとおりSegwitにおいては、シグナルが20−30%にしか達せず、マイナーの政治的意図が達成されました。

これにより、プロトコルの仕様をきめるのは、開発者なのかマイナーなのかといった議論も起こるようになってしまいました。

もともとマイナーにはプロトコルの仕様にかんする決定権はなく、あるのは、そのコインを掘るか、別のコインを掘るか、というものです。

つまり、ソフトフォーク後のコインを掘るか、ビットコイン以外の別のコインを掘るかの2択であって、ソフトフォークを阻止するという話は存在しなかったのです。

シグナリングは投票ではない

しかし、シグナリングをマイナー投票であるというように宣伝した結果、プロトコルへの拒否権をもつのはマイナーであるというような形にコミュニティにアピールすることができてしまいました。

コア開発者はいまでも、シグナリングは投票ではないとはっきりいっています。

シグナリングが政治手段として使われる限り、次のソフトフォークからはシグナリング形式でのアクティベートは利用されないと考えられています。従来のフラッグデイ方式が再び採用されるでしょう(BIP8)

BIP8は、フラッグデイ方式を改良したもので。基本は期日を決めてソフトフォークを適用しますが、いちおうシグナリングも残していて、万が一期日前にシグナルにより準備完了が確認できたら、期日より前にアクティベートできる、というものです。「も」できるです。も、です。

次回からはBIP8が採用される見込みです。

(追記)技術情報

フラッグデイト方式で最後にデプロイされたソフトフォークはP2SH。BIP66とOP_CLTVは、BIP9同様のブロックバージョンを用いたデプロイ方式でしきい値は95%でした。なお、BIP9以前はあるソフトフォークが適用がおわらないと次のソフトフォークが出来なかったのに対して、BIP9は最大29個のソフトフォークを並行してデプロイ可能です。(安土さんご指摘ありがとうございました)

詳細日本語マニュアル付きTrezorの購入はコインギフトから

初心者向け「使って勉強!ビットコイン」DMMオンラインサロン