ビットコインにおけるブロックチェーンは、暗号技術を駆使することで、類い希な耐改ざん性を実現した。

 しかし、暗号通貨としてのビットコインの安全性を論じるには、耐改ざん性の観点のみでは不十分だ。同じコインが二重に使用されることがない、取引記録に矛盾を生じさせたりサービス不能に陥らせたりする攻撃が成立しないといった、様々な観点の安全性について検証する必要がある。

 ビットコインは、ブロックチェーン技術を用いたサービスとして最も歴史が長い。運用の開始から7年間、プログラムのバグ以外でシステムの停止やデータのロールバックなどを起こしたことはない。

 だが最近の研究では、ビットコインのプロトコル設計や実装上の問題により、不正な支払い、データの改ざん、システムの停止などを引き起こしやすい状況を作り出せることが報告されている。

 ビットコインにはどのような脆弱性が発見され、脆弱性を解決する修正案が提案されてきたのか。様々なブロックチェーンについて安全性を定量的に評価する手段はあるのか。ブロックチェーンの安全性に関わる最近の理論的な研究について、その一端を紹介しよう。

1. 少ない計算パワーでブロックチェーンを乗っ取る「Selfish mining」

 ビットコインが採用する合意アルゴリズム「Proof of Work(PoW)」では、悪意あるノードの計算パワーが全体の50%未満であれば、ブロックチェーンを支配されることはない、と言われている。

 だが、計算パワーが50%より少なくても、一部のノードがブロックチェーンの生成をコントロールできる手段があることがわかってきた。その一つが「Selfish mining」と呼ばれるものだ。

 これまで、ビットコインのマイニングノードがブロックを生成する確率は、そのノードが持つ計算パワーに比例すると想定されていた。しかし、そのノードがSelfish miningと呼ばれる戦略を取ることで、自身が持つ計算パワーより大きな確率で、ブロック生成に成功することが分かってきた。具体的には、全体の41%しか計算パワーを持っていなくても、1/2以上の確率でブロックを生成できることが理論的に示されたのだ(参照論文:Eyal他“Majority is not enough: Bitcoin mining is vulnerable”2013)。

 Selfish miningを行うノードは、ブロックのマイニングに成功した後、すぐにネットワークへブロードキャストせず隠し持って置く。これによって、他のマイニングノードが古いブロックをマイニングする間に、自分は次のブロックをマイニングできる。運よく連続してブロックをマイニングできれば、隠し持っていた古い方のブロックをブロードキャストする。

 他の人がこのブロックの次のマイニングに労力を割いている間に、自分は次の次のマイニングにいそしむのである。このようにして、自分が持つチェーンを自分で長くし続ける(Selfish miningをする)ことが可能となる(図1)。

図1●Selfish mining
図1●Selfish mining
[画像のクリックで拡大表示]

 この戦略をとると、マイニングノードが全体の約33%以上の計算パワーを持っていた場合に、実質的にはそれ以上の確率でブロックを生成でき、41%を保有するノードは50%以上の確率でブロックを生成できる。

 Selfish miningには、現時点で有効な対策が提案されていない。ブロックチェーンを支配するのに必要な計算パワーの割合は過半数ではなく、もっと低い値であることは認識しておく必要があるだろう。