「ブロックチェーン」と「プルーフ・オブ・ワーク」
―― きわめて斬新なビットコインの中核技術


ビットコインの所有権は、電子署名によってつぎつぎに移転する。電子署名の技術はすでに確立されているものであり、目新しくはない。
問題は、「二重払い」をいかにして防止するかである。これに関して、ビットコインはきわめて斬新な方法を用いている。
それが、以下に説明する「ブロックチェーン」と「プルーフ・オブ・ワーク」だ。これらこそが、ビットコインの中核技術である。

どのようにして二重払いを排除するか

電子的な貨幣の問題は、「二重払い」が可能なことだ。 花子が太郎に「送金」しても、データは残っている。だから、さらに次郎に送金することができる。これをどのようにして排除すればよいか?
金貨や銀貨、あるいは銀行券といった「モノ」に化体した貨幣については、二重払いの問題は存在しない。これらを相手に渡してしまえば、手元には何も残らないからだ。
現在の社会で最も使われている貨幣は銀行預金である。これは「モノ」と言うより「情報」なので、原理的には二重払いがありうる。 しかし、預金残高を超える支払いはできないように、銀行が厳重にチェックしている。

電子的な貨幣の二重払い防止策として、中本論文は、まず「造幣局型」を説明する。
これは、使用された貨幣は発行主体に戻る方式だ。 したがって、使用できるのは、発行主体が新たに発行した貨幣だけである。本連載で説明したように、Suicaを始めとする多くの電子マネーがこの方式を採用している。

ビットコインが採用するのは、これとは別の仕組みだ。それは、正確な取引の記録を維持することによって二重払いを防止しようとする方法である。 この記録は、「ブロック」と呼ばれる。
その記録においては、二重払いは認められていない。その記録が誰にも見られる形で存在し、書き換えができないようになっていれば、二重払いは排除されることになる。

ブロックは、不動産の場合の登記簿のようなものだ。不動産においても二重譲渡の問題が存在するのだが、これに対処するために登記制度が採用されている。 登記所が保管する登記簿に記載されているのが、正当な保有者だ。
ビットコインの場合も、ブロックに記録されているのが正当な保有者である。 そこで認められている保有者だけが、自らの秘密鍵を用いて、自分が保有しているビットコインの額(の一部)を他の人に支払うことができる。
不動産登記との違いは、記録の管理主体である。

不動産登記を管理しているのは、国の機関だ。それに対してビットコインでは、記録の維持を、特定の管理主体が行なうのではなく、コンピュータの集まりが行なう。 このネットワークは、P2P(Peer-to-peer)と呼ばれる。

P2Pとは、サーバー(中央のコンピュータ)が存在せず、個々のコンピュータが対等の立場で直接に連絡しあうネットワークである。 共通のプログラムに基づいて、データの管理を行なっている。P2Pに参加するコンピュータは、「ノード」と呼ばれ、この技術はすでにインターネットで広く使われている。 例えば、マイクロソフト社が提供するSkypeは、P2P技術を利用したインターネット電話サービスである。

ブロックチェーン

各ブロックには、つぎの事項が記録されている。
(1)過去約10分間の全世界でのビットコイン取引、これはビットコインの送金者からネットワークに放送されたデータである
(2)前のブロックのハッシュ (前のブロックの取引情報を要約したもの)
(3)nonce、これは当該ブロックのハッシュの計算において見出すべきある数、 この計算作業は簡単には解けない「難しい問題」だ (これについては、後で説明する)

正しいnonceの値を最初に見出したコンピュータが、ブロックをネットワークに放送する。 各コンピュータは、ハッシュ計算が正しいことと、ブロック内の取引が正しいものであることを確認する。確認したらタイムスタンプを押して、直前のブロックのつぎに接続する。

約10分ごとに1つのブロックが作られるので、1年で5万2560個のブロックができる。現時点までに、約29万個のブロックが生成されている。

取引が確認されるまで10分間かかるので、即時支払いが必要な場合には、問題が生じる。
例えば、見知らぬ客がビットコインで支払うのを、スーパーマーケットで受け入れるかどうかだ。 本来は10分経って取引が確認するまで待っていてもらう必要があるが、それはとても現実的ではない。 同様の問題が、高速道路の料金支払いなどでも生じる。
この問題は、何らかの信用保証制度を導入することによって解決できるのではないかと考えられるが、少なくとも現時点での取引に一定の制約を課すことは間違いない。

ブロックが時系列的に繋がったものが「ブロックチェーン」である。

図表1は、中本論文にあるブロックチェーンの図解である
(この図ではハッシュがブロックの外に描かれているが、上述のように前のブロックのハッシュはブロックの中に含まれているので、図表2のように描くのが適切と思う)。

先に述べたブロックのハッシュ計算の解を最初に見出したコンピュータは、ビットコインの形態での報酬を得る。この行為を金の採掘に見立てて、「マイニング」と言う。

このようにしてビットコインの供給総量が徐々に増えていく。
2017年までは、1ブロックを生成したときの報酬は25Bitcoinだ(Bitcoinはビットコインの単位)。その後4年ごとに報酬は半減する。 そして、2141年までに合計2100万 Bitcoinが生成され、その後は新しいBitcoinは供給されない。

マイニングが終わっても、ブロックはいつまでも作り続けられる。 すべてのマイニングがなされたあとも、手数料収入はマイナーの収入になるので、ブロック維持作業は続けられる。
ただし、超長期的に見て、ブロック維持作業が継続するかどうか、疑問なしとしない。

上述のように、マイニングの報酬が次第に減少するわけだが、それがマイニングに影響を与えることはないだろうか? ビットコインではないコインのほうが報酬がよくなり、コンピュータパワーがそちらに移動してしまうというようなことはないだろうか?
それとも、仮にそうしたことになれば、ビットコインでの競争者は少なくなるから、計算の難易度が引き下げられ、アマチュアのマイナー(マイニングの参加者)でも利益が得られるようになるのかもしれない。

なお、ブロックチェーンは分岐してしまうことがありうる。
例えば、花子が太郎に送金した数秒後に、花子は次郎にも送金したとしよう。 P2Pでは、完全なシンクロナイゼーションは実現できないので、あるノードは太郎に送金されたバージョンを受け取り、別のノードは次郎に送金されたバージョンを受け取るということがありうる。 そして、数秒の差で複数のマイナーがプルーフオブワークの問題を解いてしまうことがありうる。 そうすると、2つの異なるチェーンができてしまうことになる。
そうしたことが起きた場合には、長いチェーンにスイッチする。 短いチェーンにおいて与えられていた報酬はないものとされる。なお、「長い」とは、作業量の多さで判断される。
捨てられたブロックは、「みなしごチェーン」(Ophan Block)と呼ばれる。ただし、Number Of Orphaned Blocks によると、捨てられたブロックは、多くても1日当たり3~4個程度でしかない。

プルーフ・オブ・ワークとマイニング

上で述べた「難しい問題」とはつぎのようなものである。

すでに述べたように、ブロックのハッシュは、(1)約10分間の取引、(2)前のブロックのハッシュ、そして、(3)nonceから計算される。
nonce(ナンス)というのは、数字の列である。これを変えればブロックのハッシュ値は異なる値になる。

そこで、計算されたハッシュの最初にゼロが13個並ぶような制約が付けられる。
ハッシュは一方向性関数であり、この値を見出すための効率的なアルゴリズムは見出されていない。 したがって、nonceの値をつぎつぎに変えて総当たり式で試行錯誤計算するしかない。
数学的に難しいのでなく、大変な計算量が必要なのである。

現在では、平均して10分程度かかるように目的の値がセットされている。これは平均である。 正しいnonceが求まるかどうかは確率的だから、10分より短い時間で見つかることもあるし、それ以上かかることもある。
目的の値は、2週間おきに調整されている。コンピュータの能力の向上に伴って計算難度を上げていくのだ。
計算速度が早いコンピュータほど早く目的値を見出せる可能性が高いが、計算には確率的要素があるので、計算速度が速いコンピュータが必ず勝つわけではない。

nonceの正しい値が見出されれば、それを用いて計算したブロックのハッシュが目的の値になることは、簡単に確かめることができる。

最初のブロックは、2009年1月3日にスタートした。これは、「創世記ブロック」(genesis block)と呼ばれる。そのブロックでは、創立者に50 Bitconisの報酬が与えられている。
この手法は、ハッシュキャッシュ(hashcash)と呼ばれる。もともとは、スパムメール対策として、1997年にアダム・バックによって考案されたものだ。

上の計算作業は、すでに述べたように、金の採掘になぞらえて「マイニング」と呼ばれている。それに参加するコンピュータを「マイナー」と言っている。
なお、発足当時のマイニングは、普通のPCでもできる程度のものだった。 しかし、その後計算の困難度が上がってきたため、現在では専用のコンピュータを用いないと計算競争には勝てなくなっている。 このあたりのことは、新聞などでしばしば報道されている。

なぜプルーフ・オブ・ワークを課しているか?

上述のnonceを求める作業は、「プルーフ・オブ・ワーク」と呼ばれる。これはビットコイン技術の中心である。 それは、きわめて巧みな方法だが、同時にきわめて理解しにくいものだ。

まず最初に、上の計算作業は、一見すると無駄な作業のように思われる。
これを課している理由は、2つある。一つは、ブロックチェーンの改ざん防止である。
いま、悪意を持った改ざん者がブロックチェーンの記録を改ざんしようとしたとしよう。
取引記録が変わればブロックのハッシュ値は異なるものとなるから、改ざんしたブロックを正しいものと見せかけるには、上のマイニング作業をもう一度行なって、正しいハッシュ値を見出さなければならない。
それだけではない。あるブロックのハッシュ値が変わってしまうと、それに続くブロックのハッシュ値も再計算しなければならなくなる(なぜなら、ブロックのハッシュ値計算には、前のブロックのハッシュ値も入っているからである)。
以下同様にして、現在のブロックに追いつき、それを追い越さなければならなくなる。 しかし、それには大変な計算作業が必要だ。 このため、改ざんは事実上不可能になる。
それだけのコンピュータパワーを持っているなら、改ざんなどせずにマイニング作業をして、ビットコインをもらうほうが合理的だ。
プルーフ・オブ・ワークというのは、一見すると奇妙な作業に思われるのだが、実はそうでもない。

プルーフ・オブ・ワークは、サービスに対するアクセスをしにくくするために、これまでもさまざまな場合に使われてきた手法だ。 日本人であれば、『竹取物語』が思い浮かぶ。
かぐや姫が5人の公達に、仏の御石の鉢など、手に入れるのが非常に困難なものを持ってくるようにと求めたが、これはプルーフ・オブ・ワークである。 アメリカ大統領選挙でのプライマリーも、プルーフ・オブ・ワークの一種と考えることができよう。 スパムメール対策も同様の目的での利用だ。
ビットコインでの改ざん防止は、これと似たような用途だ。
しかし、ビットコインでは、それだけでなく、分散システムにおいて合意を形成する手段としても使われている。これは「ビザンチン将軍問題」と呼ばれるものである。

喩で言えば、つぎのようなことだ。
いま、大きな部屋に大勢の人がいるとし、次回会う日程を決めようとする。
一つの方法は、「各自に勝手に叫ばせ、最初に叫んだ者の日に決定する」という方法だ。 しかし、この方式はうまくいかない。なぜなら、各人の位置関係によって、「最初に叫んだ人」の判定は違うものになりうるからだ。 したがって、全体としての合意を形成することができない。

この問題に対処するもう一つの方法は、「各自が乱数発生器を持ち、その結果に相当する時間だけ発言を待つ」というものだ。 例えば、乱数発生器が2という結果を出したら、その人は発言まで2分間待たなければならない。 メンバー全員が正直者であれば、このようにして、取りまとめ者がいなくとも、全員は正しい合意に到達することができる。
しかし、メンバーの中に悪者がいると、この方法は機能しない。例えば、悪者の乱数発生器が5という結果を出しているにもかかわらず、1分後に叫んでしまうと、全体の意思決定を操作することができてしまう。

こうしたことを防ぐ手立てとして考えられたのが、難しい計算問題を課すことだ。例えば、つぎのようにする。
ある人が提案する日程がHだったとすると、「あるメッセージのハッシュがHになるようなメッセージを見出せ」という作業を課すのである。
この計算は簡単にはできないが、結果が正しいことは簡単に確認できるから、ウソはつけない。この問題を最初に解いた人が叫べば、グループは全体として合意に到達できる。

以上の仕組みで興味深いのは、「合理的な経済計算の結果、人々が全体システムの維持に協力する」ということである。
つまり、性悪説を許容してもなお成立する社会構造を作っている。 ユートピア的社会主義のように、性善説を前提にした社会ではない。
アダム・スミスが考えた経済像も、これに似たものであった。
人々の行動を政府が規定するのではなく、個々の経済主体は「利益最大化」という利己的な動機にしたがって行動する。 それが結果的に望ましい資源配分を実現するのである。
現実の世界では、さまざまな制約があるので、アダム・スミス的なものとはならない。 ビットコインは、コンピュータとインターネットという情報技術に加え、「プルーフ・オブ・ワーク」技術を応用することにより、アダム・スミス的経済を実現する手段だと捉えることができる。



野口悠紀雄  [早稲田大学ファイナンス総合研究所顧問]