●今更ながらという感じだけど、ビットコイン(というより、ブロックチェーンという技術というべきだろう)が生まれた元となった、サトシ・ナカモトの論文(2009年)を読んだ。「日本語で読むビットコイン原論文」(Coincheck Blog)
https://coincheck.com/blog/292
今、まさに世界を変えつつある(それが、人類が今までみたことのない新しい何かを生みだすことに繋がるのか、それとも、既にある制度、既に権力を持った人たちがそれを強化するために使うだけのもので終わるのか、それはまだ何とも言えないとしても、少なくとも前者を生む可能性を充分に含んでいる)ブロックチェーンという技術が、こんなにもシンプルで分かりやすい図による、こんなにも短い論文から始まったということに感動する(最後に出てくる難しい数式---ブロックの連なりが長くなればなるほど、悪意ある者からの攻撃が指数関数的に難しくなることを示したもの---以外の部分は、ぼくが読んでもなんとか大筋は理解できるというくらいの感じのもの)。具体的に「こういうもの(アイデア)」によって世界は変わり得るという、ナマの実例。
《一つの電子コインは、連続するデジタル署名のチェーンと定義される。電子コインの各所有者は、直前の取引のハッシュと次の所有者のパブリック・キー(公開鍵)をデジタル署名でコインの最後に加えることにより、電子コインを次の所有者に転送する。受取人は一連の署名を検証することで、過去の所有権を検証できる。
無論、問題は受取人には過去の所有者がコインを二重使用していないことを検証できないことにある。一般的な解決法は信用のおける中央機関もしくは造幣局を間に入れ、全取引を監視させることである。取引の度にコインは造幣局に戻され、新しいコインが発行され、造幣局から新しく発行されたこのコインのみが二重使用されていないものとして信用される。この解決法の問題は、全取引が造幣局を通じて行われるため、銀行と同様に造幣局を運営している企業に、金融システム全ての運命が左右されることである。》
《これを第三者機関なしに行うには、取引が公開され、参加者たちが受け取った順番の唯一の取引履歴に合意することのできるシステムが必要となる。受取人は取引毎に、取引が行われた時点で大多数のノードがそのコインが初めて使用されたことに賛同したという証明を必要とする。》
具体的には…、
・新しい取引は全ノードに送信される。
・各ノードが新しい取引をブロックに取り入れる。
・各ノードがそのブロックへのプルーフ・オブ・ワークを算出する。
プルーフ・オブ・ワークを見つけ次第、各ノードはそれを全ノードに告知する。
・ノードは、ブロックに含まれる全ての取引が有効であり、以前に使われていない場合のみ、それを承認する。
・ノードは、承認されたブロックのハッシュを直前のハッシュとして用いて、チェーンの次のブロックの作成を開始することで、ブロック承認を表明する。
・ノードは常に最長のチェーンを正しいものと判断し、それをさらに延長しようとする。
(もし二つのノードが同時に異なる二パターンのブロックを次のブロックとして告知した場合、ノードによって受信の順番が入れ替わる可能性がある。その場合、ノードは最初に受信した方のブロックを処理するが、もう一つのブロックも保存しそちらのチェーンが長くなった場合に備えておく。次のプルーフ・オブ・ワークが発見され、どちらかのチェーンが伸びたとき、そちらが正しいチェーンと認識され、もう一つのチェーンに取り組んでいたノードはより長いチェーンに切り替える。)
・新しい取引の告知は必ずしも全ノードに届かなくともよい。告知が多数のノードに受信されている限り、やがてブロックに組み込まれる。
プルーフ・オブ・ワークには、例えばSHA-256のような、ハッシュ化された時に0ビットの番号で始まるハッシュ値のスキャンが含まれる。通常作業に要求されるのは、必要な0ビットの番号の指数関数であり、これはハッシュ一つを実行することで検証される。我々のタイムスタンプネットワークでは、ハッシュ化の際に要求される0ビットを与える値が見つかるまでの間、データブロックにワンタイムパスワードを足すことでプルーフ・オブ・ワークを実現している。一度プルーフ・オブ・ワークを満たすべくCPUパワーが費やされると、この作業をやり直さない限りそのデータブロックを変更することはできない。その後のデータブロックもチェーン化されて後に連なるため、該当ブロックを書き換えようとするならば、それ以降の全てのブロックを書き換えなくてはならない。》
《従来の銀行モデルは、情報へのアクセスを関連団体と信頼のおける第三者機関に限定することで一定レベルのプライバシーを実現している。全取引を公開する必要性はこの可能性を除外するが、情報のフローを他の箇所で分断することでプライバシーを保つことができる。パブリック・キーを匿名にするのである。誰かが他者にどれだけのコインを送っているかは公開されるが、その取引情報は誰にもリンクされていない。》