すべてのビットコイン ユーザーが 「SPV セキュリティ」について知っておくべき理由とは
(Click here for the English version of “Why Every Bitcoin User Should Understand SPV Security”)
車を運転するためにエンジンの働きについて詳しく知っている必要はありません。同様に、ビットコインを使用するのに、その内部の仕組みを理解する必要はありません。
それでも、公共の場で発言したり、ビットコインの将来についての意見を述べたりするのであれば、知っておいていただきたいことがあります。
スケーリングに関する大論争
おそらくすでにご存知のとおり、ビットコインの開発者、企業、採掘者(マイナー)、投資家の間では、まるで内戦のような状態が繰り広げられています。争点となっているのは、ネットワークの「スケーリング」をどうするか、ということです。
ごく簡単に言うと、一方の側は、ビットコインの元の考えであるP2P(ピアツーピア)のキャッシュ、およびブロックサイズをより大きくする計画を支持しています。もう一方の側は、ブロックサイズは小さいままにしておき、ビットコインを決済ネットワークに成長させるという考えを持っています。
本人が思っている以上に意味深い言葉
ビットコインは数十億ドル規模のエコシステムです。大企業の利害関係により、思いのままに操られてしまわないとも限りません。
このことが、皆さんとどのように関わってくるのでしょうか?
コメディアンのジョージ・カーリン氏の言葉をまじめに引用したいと思います。巨大な利害関係のはざまでどのようなことが生じうるのでしょうか?
「大企業は自分たちの利益をさらに追及していき、社会への貢献をますます度外視するようになる。大企業が嫌うのは何か。批判的思考ができる市民の集団だ。情報に通じ、十分な教育を受けた人々を嫌う。…そのような人々には関心を示さない。自分たちを資することはなく、自分たちの利害に反するからだ。」 — ジョージ・カーリン
ブロックサイズを抑えることを主張する人たちの「トランプタワー」論理
ウィキペディア(英語版) より: 「“トランプタワー(House of Cards)”は、1645年にまでさかのぼる表現で、土台の貧弱な議論、または建造物、もしくは、必要な要素が取り除かれたら崩壊してしまうもの、を意味します。」
「決済ネットワークとしてのビットコイン」に関する主張は、以下のような一連の論理に基づいています。
「ネットワーク上のユーザーのほとんどはフルノードであるべきだ。それで、フルノードは手ごろな価格で利用できるべきだ。そのためには、帯域とストレージのコストを制限する必要がある。したがって、ブロックサイズを小さいままで維持するしか選択肢はない。」
ほとんどのユーザーはフルノードである必要がない
この土台となる前提を覆せば、「トランプタワー」は崩壊します。
「ほとんどのユーザーはフルノードであるべきだ」との主張は、大きく以下の2つのグループに分類されます。つまり、a) ネットワークにとってよいから、そして b) ユーザーのセキュリティに必要だから、という理由です。
前者の主張については、別の記事で取り上げます。今回は、ユーザーの観点からこの前提に反論していきましょう。
SPV(Simplified Payment Verification) は最初から存在した
まず、SVPは何も目新しいものではありません。サトシ・ナカモトによる元のホワイトペーパーのセクション8 ビットコイン: P2P 電子マネーシステム にて説明されています。Electrum のようなビットコインウォレットは何年もの間SPVを何の問題もなく使用しており、ユーザーをネットワークのフルノードを維持する煩わしさから解放しています。
SPVの仕組み
簡単に言うと、SPVでは、他の人の取引について考えることなく、自分の取引だけを確認できます。
SPVには2つの大きな柱があります。それは、a) ブロックで取引を確実に行うこと、そして、b) ブロックがブロックチェーンに追加されるという確認(仕事の証明)を提供すること、です。
取引が有効かどうかを確認するのに知っておくべきことは実際のところこれだけです。¹
SPVのセキュリティの制限は? フルノードのユーザーにとっての利点は?
SPVウォレットはブロック内の他の取引をチェックしないので、理論上は、ブロックが無効である可能性もあります。このことは、99.99%のケースで問題とはなりません。なぜなら、多くの異なるノードに接続して同じブロックチェーンの人すべてが認めていることを確認できるからです。
時には、通常とは異なる状況が発生します。新たなコンセンサスルールが適用されたのに、かなりのグループのノードが更新をし忘れて新しいルールを使用していない場合などです。
そのようなノードがネットワークから締め出されるまでにそれほど長い時間はかかりませんが、その間に、SPVクライアントが、更新していないノードが正しい最長のチェーンを保持していると考えてしまう可能性があります (数ブロック後には、有効な最長のチェーンが再び明らかになります)。
フルノードならば、「よりすばやく」セキュリティが得られると言われる理由はここにあります。つまり、すべての取引を自分で確認できるなら、このような特殊な状況を解決するために、余分の確認作業をする必要がありません。
また、SPVクライアントはフルノードと話して特定のアドレスと取引についての情報をリクエストする必要があるので、理論上、フルノードではよりプライバシーがあります。
SPVウォレットのユーザーは意図的な攻撃を受けることがあるか?
これは事実上不可能です (正式に報告されたケースはありません)。
理論上、攻撃者は多数の不正ノードをセットアップする必要があり、ユーザーが実際のビットコインネットワークから正常なノードを見つけるのを妨げなければなりません。
SPVウォレットが正常なノードを1つでも見つけると、正常なノードが最長のワークチェーンの証拠を保持していることを確認できるため、攻撃は失敗に終わります。
さらに、攻撃を維持するには、攻撃者はチェーンを長くし続けるために、現在の困難なレベルでブロックの採掘(マイニング)を続けなければなりません。これにはハッシュ化のための膨大なパワーを要し、非常に費用がかさむため、経済的に実行不可能です。
さらに2つのグッドニュース
- SPVウォレットは、最長のブロックチェーンを確定するために他のネットワークノードに頼りきりだというわけではありません。ベストヘッダーチェーンを確認します。これは、仕事の証明を最も累積している有効なブロックヘッダーのチェーンです。また、SPVにより、この仕事の証明のハッシュ化の困難さは適切なレベルに保たれます。興味のある方は、Electrum コードでの実用例をご覧ください。
- そしてもちろん、使用するウォレットの種類は、プライベートキーのセキュリティに何ら影響を及ぼしません。
よく耳にする「SPV Fraud Proofs」とは?
Fraud Proof の提言 では、上述のとおり、「ルール未適用」のチェーンがルールを適用したチェーンより多くの仕事の証明を保持している場合のセキュリティを向上することを目指しています。
しかし、このようなケースはごく稀なため、セキュリティの向上も限られたものとなります。
SPV Fraud Proofs がないとユーザーは保護されないという主張は完全に間違っています。
最近のspend trees を使用したFraud Proofの提言 の著者であるTomas van der Wansem氏もこのように述べています。
「一般的に考えられていることとは逆に、 Fraud Proof SPV とフルノードは、SPVノードと比べてセキュリティが飛躍的に向上したとは言えません。…残念なことに、ビットコインの当初のスケーリングモデルが停滞し見捨てられつつある最近の流れは、Fraud Proofsがないことが原因ではなく、ビットコインのセキュリティとスケーリングモデルに対する誤解が招いたものです。」
結論
SPVウォレットは高度なセキュリティを備えており、たいていのユーザーはフルノードである必要はなありません。この情報を知っていれば、ビットコインウォレットを安心して使用でき、誤った前提に基づく不毛な主張を論破するのに役立ちます。
脚注:
¹ SPVウォレットは、アドレスに入ってくる取引を「聞く」必要があります。これは、ブルームフィルター、またはUTXOセットを保持するサーバーの助けにより行われます。