はじめに

暗号通貨業界の牽引役であるビットコインですが、どんな仕組みで動いているかについて、よく知らない方も多いのではないでしょうか。

ネット検索をかければ、Proof of Work(以下PoW)を始めとしたアルゴリズムの解説は多くあります。しかし、ビットコインを送金ネットワークとしてとらえた際、どのように不正を防止しているかという観点で解説している記事はあまり無いように感じたので、私なりに解説したいと思います。

「そもそもProof of Workって何だ?」という方は、事前にこちらとかを読むと良いと思います!

▼目次

何故不正や情報の改ざんを防ぐ必要があるのか?

ビットコインのような「誰でも参加可能な」送金ネットワークは、銀行のような送金ネットワーク以上に第三者の攻撃を受けやすいため、不正を起こさない仕組みを盛り込む必要があります。

誰でも参加可能なのに不正が出来ない(出来にくい)という所が、ビットコインの画期的な所で、この着想を使って送金以外の分野でも既存のあり方とは違ったイノベーションの動きが起きつつあります。

では、どのような方法で防いでいるか、少し具体的に説明していきます。

なりすましを防ぐブロックチェーン

例えば、攻撃者Xが、ユーザーAさんになりすまして、自分のビットコインアドレスに送金しようとしたとします。ですが、このトランザクションでは正常なマイナーでは受け付けてくれません。

何故なら、ビットコインの送金には電子署名の仕組みが備わっているからです。これは、ビットコインの画期的な仕組みではなく、1970年代くらい使われている結構古典的な手法です。より詳細には、こちらなどを参考にして下さい。

古くから使われ続けているという事は、それだけ確実な手法ということです。

しかし、1つ落とし穴があります。

それは、単純に自分の秘密鍵を第三者に知られる事です。

ビットコインをウォレットで管理する際、秘密鍵が必要になります(パスフレーズも同じようなもの)。第三者に知られると根こそぎ奪われるので管理はきっちりしましょう。

改ざんを防ぐブロックチェーン

次の不正のケースとして、第三者による改ざん攻撃があります。例えば、AさんがBさんに1BTCを送金した内容を、攻撃者X自身がマイナーとなり、宛先を自分のアドレスにしたり、送金額を変更したりして、送金ネットワークに登録しようとします。

ですが、この攻撃はたいていの場合は失敗します。

何故ならPoWが行われているからです。

ビットコインのPoWは、約10分間隔で、全世界の最速処理マシン同士がくじ引きのようなゲームを行います。つまりは、早いマシンが最も勝率が高く、安定的に勝つためには、全世界の処理速度に対抗する必要があります。

ちなみに2017年7月時点で全世界の処理速度の合計は約700京回/秒です。。。

高い金払って、世界に対抗出来るマシンを調達して、さらに電気代をかなりかけないと成功しない次元です。その上、もし実現したらビットコインの信用が下がってビットコインの価値がほぼ無くなります。ビットコインによほど恨みを持つ金持ちの破滅主義者しか出来ない芸当なのです。

二重支払いを防ぐブロックチェーン

この箇所が、今回最も言いたかったところです。

前置きが長すぎました。。

Satoshi Nakamotoのビットコイン論文を読むと、二重使用問題を解決する手段として、ビットコインが紹介されています。(まだ読んでない方は、日本語訳もあるのでぜひ読んでみて下さい)

電子上で通貨をやり取りする際、データは容易にコピー出来るので、Bさんに1BTC支払うと同時に同じ1BTCをCさんにも支払う事が出来てしまいます。

銀行のようなシステムは、第三者が中央集権型で管理する事でこれを防いでいます。

一方、ビットコインはどのように二重支払いを防いでいるかと言うと、AさんからBさんに1BTCといった送金履歴をデータ構造として管理して、さらに全世界から誰でも見えるように公開・監視しています。

より具体的に言えば、AさんがBさんに1BTCを送金した後、同じ1BTCでAさんがCさんに送金しようとするとマイナーは受け付けてくれません。

そういった事で、二重支払いの抑止は、「送金履歴の全公開」という仕組みで実現したのであって、PoWは関係ない。

・・・そういう風に考えていた時代が僕にもありました。

例えば、「AさんからBさんに1BTC」「AさんからCさんに1BTC(同じもの)」を同時にマイナーにブロードキャストした場合を考えます。そうすると、前者を信用したマイナー群と後者を信用したマイナー群にチェーンが分かれます。

どちらが勝つかについては、PoWの世界です。たまたま後者のマイナー群のいずれかが答えを先に見つけたら、「AさんからCさんに1BTC」が正となり、Bさんへの送金は無かった事にされます。

つまりは、二重支払いについてもPoWの考え方が重要となっており、まさに「頑張って先に解かれたデータが絶対的に正」というのがビットコインの根本的な考え方となっているのです。

まとめ

ビットコインは、下記の仕組みによって不正を防いでいる。

  • 【なりすまし】電子署名
  • 【改ざん】PoW
  • 【二重支払い】送金履歴を全公開、そしてPoW
この記事を書いた人
藤本健太 / 富士通株式会社
おすすめの記事