第五話 創造主サトシ・ナカモト
リーマン・ショックという名の嵐が世界を蹂躙した後、僕の時間は静かにではあるが、確実に進み始めていた。
二十三億円。
実際の札束に替えるわけでもない、無機質なデジタルデータ。それは、僕が二年半という歳月と、人間としての感情のほとんど全てを犠牲にして手に入れた、勝利の証だった。しかし、その黄金の輝きは、僕の心に空いた巨大な虚無の穴を照らし出すだけで、少しも埋めてはくれなかった。
僕は、都心のタワーマンションの一室で、次の「救世主」の到来を待ち詫びている。
その名は、サトシ・ナカモト。
僕の記憶が正しければ、二〇〇八年の終わり頃、この謎の人物が、インターネットの片隅に一つの論文を投下するはずだった。
『Bitcoin: A Peer-to-Peer Electronic Cash System』
僕をこの虚無から救い出し、本当の意味で神の領域へと引き上げてくれる最後の切り札。
その到来を、僕はまるで新たな恋人を待つように、あるいは終末を待つ信者のように、ただひたすらに待ち続けた。
毎朝目を覚ますと、まずパソコンの電源を入れる。そして、検索エンジンのウィンドウに、祈るようにキーワードを打ち込むのだ。
『Satoshi Nakamoto』
『Bitcoin』
最初は、楽観的だった。「もうすぐだ」「今日こそは」と、自分に言い聞かせる毎日。高級なスコッチウイスキーを片手に、モニターの光だけを友として過ごす夜。その孤独さえも、来るべき瞬間のための神聖な儀式のように感じられた。
しかし、現実は非情だった。
検索結果の画面には、いつも同じ言葉が並ぶだけ。
「お探しのキーワードに一致する情報は見つかりませんでした」
その無慈悲な文字列が、僕の心を少しずつ確実に蝕んでいった。
二〇〇八年のカレンダーの、最後の一枚がめくられる。大晦日の夜に街中を歩けば、新しい年を祝う人びとの喧騒が、風に乗って聞こえてくる。
それなのに、僕の世界では何も変わらない。サトシが現れない。
そして何も起こらないまま、二〇〇九年がやってきた。
僕の焦りは、頂点に達していた。タイムリープ前の記憶が確かならば、ジェネシスブロック、つまりビットコインの最初のブロックが生成されるのは、一月三日のはず。その日こそが、新しい世界の創世記となるはずだった。
僕はその日、一睡もせずにモニターに張り付いた。しかし時は無情に過ぎていく。一月三日が終わり、四日になっても、インターネットは沈黙を続けた。僕が知っているはずのビットコインの歴史は、ついに始まらなかった。
その瞬間、僕の中で、何かがガラガラと崩れ落ちる音がした。
楽観は、焦りへ。焦りは、深刻な疑念へと変わっていく。
「なぜだ? なぜ現れない?」
美咲を失い、友人を捨て、人間らしい生活の全てを投げ打って、僕はこの「未来」という一点に、人生の全てを賭けたのだ。その前提が、根底から覆されようとしている。僕が信じてきた唯一の羅針盤が、ただのガラクタだったとしたら? 僕のこの二年半は一体、何だったというのだ。
たとえようもない不安が、僕の足元から底なし沼のように広がっていく。じっとりとひんやりした空気が、僕を包み込んでいく。
僕は、ただ待つことをやめた。待っていても、何も始まらない。ならば、理解するしかない。僕が唯一持つ不確かな羅針盤、つまり「ビットコインとは何か」という未来の断片的な知識を自力で体系化し、理解し直すのだ。それは、この世界でビットコインが生まれない理由を探るための、絶望的な「探求」だった。
僕の本当の地獄は、そこから始まった。
僕はまず、コンピュータサイエンスの入門書を買い漁った。ネットワークの仕組み、データベースの基礎。四十二歳まで、興味のある仮想通貨を調べる以外、まともに学問などしてこなかった僕の脳は、そのあまりに初歩的な概念すらスポンジのように弾き返した。TCP/IP、SQL。呪文のような単語の羅列に、数日で吐き気を催した。
「無理だ……」
僕は、本を床に叩きつけた。こんなことのために、僕は美咲を失い、友人を捨てたのか。こんな、ちんぷんかんぷんな記号と格闘するために。
数週間、僕は全てを投げ出した。酒に溺れ、一日中映画を観て、デリバリーで最高級の料理を頼んだ。二十三億円の資産は、僕を無限に甘やかす。だが、その贅沢の果てに待っていたのは、さらに巨大な底なしの虚無だった。心が少しも満たされない。笑えない。感動しない。
このまま感情のない肉塊として、金を使い潰して朽ち果てるのか。
その恐怖が、僕を再び机へと向かわせた。
この虚無から逃れるには、ビットコインの「真実」に辿り着くしかないのだ。
次に取り組んだのは、「公開鍵暗号」というキーワードだった。未来で聞きかじった、ビットコインの根幹技術。その世界の入り口に立つため、僕はまず「暗号」そのものの歴史を学ぶことから始めた。
図書館で借りてきた暗号史に関する本を、貪るように読んだ。古代ローマのジュリアス・シーザーが用いたという、単純に文字をずらすだけのシーザー暗号。その脆弱性を克服するため、複数のアルファベットを切り替えながら換字を行う、ヴィジュネル暗号。僕は、情報を「隠す」という行為が、如何にして人類の歴史と共に進化してきたか、その知恵比べの物語に、久しぶりに知的な興奮を覚えた。暗号とは、突き詰めれば「換字(置き換え)」と「転置(並べ替え)」、その二つの組み合わせに過ぎない。その単純な原理を果てしなくかけ合わせたものが、第二次世界大戦では国家の命運を左右する、ナチスのエニグマのような複雑怪奇な暗号機を生み出した。
しかし読み進めるうちに、僕はある巨大な壁の存在に気付いた。
それは何千年もの間、人類を悩ませ続けてきた根本的な問題だった。
「鍵を、どうやって安全に相手に渡すんだ?」
暗号文を解読するための「鍵」。それを、敵に知られずに、味方にだけ渡す方法。もし鍵の配送途中で、暗号を読み解かんとする悪意を持つ誰かに鍵が盗まれれば、どんなに複雑な暗号も意味をなさない。これが「鍵配送問題」。そのあまりにシンプルで、あまりに解決困難な問題の前に、僕は一度目の絶句をした。人類の知性は、こんな巨大な壁の前で立ち往生していたのか。
僕の探求は、いったんそこで行き詰まった。しかしその疑問は、図書館で借りたより新しい現代暗号史の本によって、すぐに解決した。
一九七六年に発表された、『New Directions in Cryptography(暗号理論の新たな方向性)』というタイトルの論文。著者は、ウィットフィールド・ディフィーと、マーティン・ヘルマン。
そこに書かれていたのは僕の常識を、いや全人類の常識を根底から覆す、魔法のようなアイデアだった。
「鍵配送問題」を解決するのではない。「鍵を配送する」という前提そのものを、なくしてしまうのだ。
彼らが提唱したのは、一対の鍵、つまり「秘密の鍵」と「公開してもよい鍵」を使うという革命的な方式だった。「公開鍵」で暗号化したメッセージは、それと対になる「秘密鍵」を持つ者しか、元に戻すことができない。
つまり僕は、自分の「公開鍵」を全世界に、誰に見られてもいい形でばらまけばいい。僕にメッセージを送りたい人は、その公開鍵を使ってメッセージを暗号化する。そしてその暗号文を解読できるのは、この世でただ一人、対になる「秘密鍵」を持つ僕だけなのだ。
鍵を送る必要がない。
その美しさと、常識を転換させる独創性に、僕は感動で打ち震えていた。
「なんだ、これは……天才だ……」
それは、僕がこの孤独な探求の中で初めて出会った、純粋な「知性の輝き」だった。
僕は、さらにその先へと進んだ。この「公開鍵暗号」という魔法を、現実に実装したRSA暗号。その仕組みを学ぶうちに、僕は再び畏敬の念に打たれることになった。
RSA暗号の安全性は、驚くほど単純ではあるが、宇宙の真理とも言える、ある数学的な事実に根差していた。
「二つの巨大な素数を掛け合わせるのは、単なる掛け算なので、コンピュータにとっては非常に簡単だ。しかしその掛け合わされたさらに巨大な数から、元の二つの素数を導き出す素因数分解という操作は、現実的な時間の中では事実上不可能である。もとい、それを簡単に算出することを禁じた何らかの原理があるのかさえ、人類には分かっていない」
僕はその非対称性の神秘に、言葉を失った。
簡単な計算と、絶望的に困難な計算。そのギャップが、僕たちの通信の秘密を守っている。まるで宇宙の法則そのものが、この暗号の安全性を保証しているかのようだった。僕がサトシ・ナカモトのシステムに感じていた「美しさ」の根源の一端が、ここにあったのだ。
だが、RSA暗号の美しさに感動したものの、僕の未来の記憶が微かに囁いていた。ビットコインが使っているのは、「もっと新しい効率的な暗号」だったはずだ、と。
僕はそのキーワード「楕円曲線暗号(Elliptic Curve Cryptography, ECC)」に、ついにたどり着いた。その数式 「y^2 = x^3 + ax + b」と、それが描き出す左右対称の奇妙な曲線グラフに初めて出会った時、僕はこれがなぜ暗号になるのか、全く理解できなかった。
しかし探求を進めるうち、僕はこの曲線上の点と点の間に、「足し算」という特殊で厳密な演算ルールが存在することを知った。点Pと点Qを足すと、全く別の点Rが現れる。その幾何学的で代数的なルールに、僕は数学という世界の底知れない深淵を、間違いなく垣間見た。
そして僕は、楕円曲線暗号の核心にある、もう一つのよりエレガントな「非対称性」に到達し、戦慄することになる。
それは「楕円曲線上の離散対数問題」と呼ばれるものだった。
まず、簡単な計算を上げてみよう。楕円曲線上のある基準点Gを、K回「足し算」して(スカラー倍算)、新しい点Pを求めること 「P = K * G」。このKが、ビットコインでいうところの「秘密鍵」にあたる。たとえKが巨大な数であっても、この計算はコンピュータにとって比較的簡単だ。
しかしその逆の計算は、事実上不可能。つまり基準点Gと、計算結果の点P(これが「公開鍵」となる)が分かっていても、「一体、基準点を何回足し算したのか(=秘密の数Kはいくつか)」を逆算することは、全世界のどんな高性能のコンピュータ全てを使っても、数千億年という、宇宙の寿命の何十倍もの天文学的な時間がかかり、現実的には誰にも解けない。
「これだ……!」
僕は確信した。RSA暗号よりも遥かに短い鍵の長さで、同等の安全性を実現できる、この驚異的な技術。ビットコインの、あの無数のアドレス(公開鍵)と、その所有権を証明する秘密鍵のペアは、間違いなく、この美しい数学的真理の上に成り立っているのだ。秘密鍵から公開鍵を作るのは簡単。だが公開鍵から秘密鍵を盗むことは、誰にもできない。この数学的な一方向性こそが、国家も銀行も介さない、巨大な信頼のネットワークを支えるただ一つの礎なのだ。
その美しさに感動するのと同時に、僕はその実装の複雑さに再び絶望した。有限体上の演算、点の圧縮、安全な曲線の選択……。RSA暗号とは比較にならないほど深く、暗い数学の森が、僕の目の前に広がっていた。
「……こんなもの、人間に理解できるのか?」
僕が知っている数学は、高校で投げ出した三角関数で止まっている。あまりに遠い。あまりに高い壁。
だが、僕の心はもう壊れていた。正常な精神状態なら、ここで諦めていただろう。しかし、狂気は時に人間を前進させる。
「やってやる……」
僕は、決意した。高校数学の参考書から全てをやり直すことを。
そこからの日々は、もはや「勉強」などという生易しいものではなかった。それは、僕という人間の限界を超えようとする、狂気の「修行」だった。
一日十八時間以上。僕は机にかじりつき、数式と睨み合った。食事は、カロリーメイトのような栄養補助食品だけ。睡眠は、意識を失うように数時間、床に倒れ込むだけ。タワーマンションの豪華なリビングは、参考書と、計算で埋め尽くされたノートの山に埋もれた。
「Let p be a large prime number...」
その一行の意味を理解するために、何日もかかった。素数とは何か、という定義から始まり、フェルマーの小定理、オイラーの定理へと、一歩一歩、血反吐を吐くように進んでいく。脳が焼き切れそうなほどの熱を持ち、頭痛が一日中やまない。それでも、僕はやめなかった。やめれば、またあの虚無が僕を飲み込みに来ることが分かっていたからだ。
数ヶ月が過ぎ、僕がようやく楕円曲線暗号の入り口に立った時、次なる壁が嘲笑うかのように、僕の前に立ちはだかった。
プログラミング。
数学が、神の言語を解読する作業だったとすれば、プログラミングは、その神の言語をコンピュータという、あまりに厳格で融通の利かない機械に、一語一句、正確に翻訳する作業だった。それは僕にとって、新たな地獄の始まりを意味していた。
僕は、C++というプログラミング言語を選んだ。タイムリープ前の記憶の中で、サトシ・ナカモトが使っていたと、そう覚えていたからだ。
しかし入門書を開いて、僕はすぐに絶望することとなった。
#include <iostream>
int main() { ... }
そこに並んでいるのは、僕が数ヶ月格闘してきた普遍的な数式ではない。無機質で意味の分からない、ただの記号の羅列だった。
僕は最初の課題、「画面に『Hello, World!』と表示させる」という、プログラマなら誰もが最初に通る儀式に、丸一日を要した。コンパイルエラーの真っ赤な文字列がモニターに表示されるたび、僕の心は容赦なく打ち砕かれていった。
数学の抽象的な世界から、コンピュータという、0と1しか理解しない機械との具象的な対話へ。そのギャップに、僕の脳は悲鳴を上げていた。
しばらくすると、C++の最難関の一つである「ポインタ」という悪魔に、僕は完全に行く手を阻まれていた。
メモリのアドレスを直接操作し、データの場所そのものを指し示すというその概念。それがどうしても、直感的に理解できない。「なぜ、こんな面倒なことを? なぜ、もっと簡単にならないんだ?」。
僕は、何度も入門書を床に投げつけた。それは数学の壁とはまた質の違った、泥臭く出口の見えない迷路だった。
さらに、クラス、継承、ポリモーフィズムといった「オブジェクト指向」の概念が、僕に追い打ちをかけた。それは単なる技術ではなかった。世界をどう捉え、どう部品に分け、どう設計するかという、壮大な「哲学」だった。僕は、自分がただの「記述者」ではなく、このビットコインという世界の「設計者」にならなければならないという事実を、痛感させられた。
そこからの日々は、孤独なデバッグ作業に塗り潰された。
書いたコードは、ほとんど動かない。僕は何百、何千行ものコードの中から、たった一つのセミコロンの欠落や、変数名のタイプミスを血眼になって探し続ける。深夜たった一人で、モニターの中のバグと格闘する僕の姿は、解けるはずのない呪いを解こうと無駄な努力を続ける、哀れな魔法使いのようだった。
その精神的な消耗は、数式と向き合っていた時と比較しても勝るとも劣らなかった。
だが、それでも、僕は続けた。
なぜならその苦しみの果てに、神様が時折、ほんの僅かなご褒美をくれることがあったからだ。
ある夜、僕は、自らが実装した楕円曲線暗号のライブラリを使って、秘密鍵と公開鍵のペアを生成し、あるデータにデジタル署名を施し、さらにはそれを公開鍵で検証するという、一連のプログラムを書いていた。もちろん最初は全く動かなかった。
しかし、三日三晩、不眠不休でコードを修正し続けたある明け方。
コンソールに、ついにその文字が表示された。
「Verification: Success」
(検証:成功)
その瞬間、僕は椅子から転げ落ちそうになるほどの、強烈な衝撃に襲われた。
本やノートの上にしか存在しなかった、あの美しい数学の理論が、今このコンピュータの中で、確かに生命を宿したのだ。秘密鍵を持つ者だけが作り出せる署名を、公開鍵が確かに「本物だ」と認めた。
「……動いた……」
声にならない声を上げ、僕はモニターの前で子供のように打ち震えていた。この小さくはあっても、あまりに偉大な成功が、次の一歩を踏み出すための巨大な推進力を僕に与えてくれた。
僕は、次にP2Pネットワークの構築に着手した。
自分のPCの中に複数の仮想的なノードを立ち上げ、それらが中央のサーバーを介さず互いに直接接続し、データを同期する。初めて僕のPC上で、この分散化されたネットワークの雛形が、か細くも確かに動き出した時、自分が創造しようとしているものの、巨大さの一端を理解した。これは単なるプログラムではない。新しい世界の形なのだ、と。
そして僕は、最後のステップに挑んだ。
僕が命懸けで学んだ「暗号理論」と、僕が地獄の苦しみの中で構築した「P2Pネットワーク」。その二つを、固く結び付けるのだ。
ブロックを生成し、その中に取引記録を詰め込み、さらには、前のブロックのハッシュ値を次のブロックに含める。そして決して切れることのない暗号学的な鎖で、それらを繋いでいく。
「ブロックチェーン」
二十年後には誰もが知るその単語を、僕は世界でただ一人、この孤独な部屋でコードとして具現化していった。
そして、二〇〇九年の冬。
一年というあまりに濃密で、狂気的な時間の果てに。
僕の部屋に散らかったノートに描かれていたあの「理論上の神殿」は、ついにデジタルの世界にその姿を現した。
僕は自らの手で、ジェネシスブロックを生成した。
さらには、複数のノードでマイニングを行い、プルーフ・オブ・ワークの計算競争によって、ブロックチェーンが正しく一方向に伸びていくのを確認した。二重支払いをしようとする不正なトランザクションは、ネットワークの多数決によって、正しく拒絶された。
完璧だった。
僕がこの部屋で孤独に描いた理論は、寸分違わず、このデジタルの宇宙で生命活動を開始したのだ。
僕は、その完璧に動作するシステムのログが流れていくのを、ただ呆然と見つめていた。
そして、改めて戦慄する。
「……これを、本当に、人間が、ゼロから考え出せるのか……?」
以前と同じ、しかし今度は全く違う重みを持った問いが、僕の心を支配した。
これだけの数学、暗号理論、ネットワーク、経済学、そして哲学。その全てを内包したシステムを、たった一人で構想できる人間など、この世に存在できるのか。
なぜ、そんな天才が、この世界には現れないのだ?
その問いが、僕の頭の中で反響した瞬間。
天啓が、訪れた。
雷に打たれたような衝撃ではなく、長い、長い旅路の果てに、ようやく辿り着いた一つの静かな真実として。
いや、違う。
考え方が、逆だ。
これをゼロから考え出した、僕以外の天才がいるのではない。
未来の知識という「完成された設計図」を持ち、それを「再発見」するために必要な無限の時間と金と、虚無感を埋めたいという狂気的な動機を与えられた、この僕が。
この時代で、ビットコインというこの知識を、この手でもう一度世界に生み出すこと自体が、歴史の必然だったのだ。
サトシ・ナカモトは、どこからか現れる救世主じゃない。
その役を担うべく、タイムリープして、巨万の富と巨大な虚無を与えられ、孤独な部屋に導かれた僕自身が、その運命の体現者なのだ。
「……そうか」
「そういうことか」
声が、震えた。
「僕か…」
「僕が……僕が、やるしかないのか」
「僕がサトシ・ナカモト……」
それは、傲慢な決意ではなかった。
血の滲むような苦しみの果てに、ようやく辿り着いた唯一の答え。
逃れることのできない、宿命の受容だった。
僕は、これまで書き殴ってきた設計図を元に、新しいテキストファイルを開いた。
それは、世界を変える論文の、最初の一行となるはずだった。
そして僕は、あるペンネームを静かに心に刻んだ。
「Satoshi Nakamoto」
それは、僕が何者になるかを世界に示すための名前ではなかった。
僕が、僕自身の、あまりに巨大で、あまりに孤独な運命を受け入れた、静かで厳粛な宣誓だった。