ビットコイン・インスティテュート

レイ・ディリンジャーの​インタビュー — ビットコインの​初期コードレビューを​語る

紺色の図解。虫眼鏡が台帳の文字の列を調べている。枠で囲んだ小数の値と整数の値が並び、ひびの入った壺から硬貨がこぼれ、その隣に硬貨の列がある。図案にした地図の上では、小さな機材のアイコンの集まりが一か所だけ明るく光っている。

ビットコインホワイトペーパー10周年企画として、Great Wall of Numbersのティム・スワンソンがレイ・ディリンジャーに2008年11月のコードレビューについて取材した。インタビュー全文はこちら。ディリンジャーによれば、サトシはブロックチェーンの部分のコードを、ディリンジャーに直接送ってきた。ディリンジャーの言葉では、そのコードは「堅牢」だった。信頼される役を誰も担わないシステムなど、「これまで誰一人考えついたことがなかった」と語るほど、興味を引かれたという。

ディリンジャーが見つけたと語る最も重大な点は、本来ならうまくいかないはずの設計判断だった。彼の話では、ビットコインの金額の計算には整数ではなく浮動小数点数が使われており、それは「昔から散々な問題を起こしてきた組み合わせ」で、最初に気づいた時は肝をつぶしたという。ディリンジャーの記憶では、サトシは理由を二つ挙げた。一つは、数値を浮動小数点でしか扱えないJavaScriptとの互換性である。もう一つは、クライアントごとに違う答えが出てチェーンがフォークすることのないよう、丸め誤差のバグを前もって潰しておきたい、ということだった。ディリンジャー自身の考えは逆で、「JavaScriptなんか知るか、丸め誤差は起こりえないようにしたい」というものだったが、その後、金額を計算するコードに丸め誤差がないか調べ尽くしても、一つも見つからなかった。

その理由をディリンジャーはこう説明する。satoshiという単位の大きさは、倍精度の浮動小数点数で丸めずに表せる最小の細かさより、わずかに大きくしてあった。そのため、2100万ビットコインを超える額を足したり引いたりしない限り、satoshi単位の計算で丸めが起きることはない。PGPの暗号処理で、浮動小数点を使った厳密な計算を手がけたことのあるハル・フィニーは、ディリンジャーほどこの設計を懸念していなかった。二人は、satoshiの大きさに丸め誤差への余裕をもっと持たせるか、それとも精度の限界の近くのままにして、誤差が出たらすぐ分かるように処理が止まる作りにするかを議論したという。2009年1月にサトシが公開したコードは、どの額もsatoshiの数を64ビットの整数で持っている。サトシがその整数で金額をどう数え、どう表示したかは、v0.1のソースに沿ってたどったページで扱っている。

レイ・ディリンジャー(Great Wall of Numbersのインタビュー、2018年10月1日)

供給が固定された経済では、コインを持っているだけで、市場の平均と同じだけ値上がりすることが保証される。リスクのない投資になるのだ。だから合理的な投資家は、生産的な事業に投資せず、ため込む。

ディリンジャーは古代ローマを引き合いに出す。金属で裏付けられた通貨を使っていたローマの経済は、人々の手元に通貨が十分あったのに崩れた。誰もが将来の値上がりを見込んでコインを貯め込み、本来その値上がりを生むはずの商売に資金が回らなかった、というのだ。「1500年たった今でも、私たちはまだローマのコインの隠し場所を見つけ続けている」。同じため込みの力学は、ビットコイン自身の歴史にも表れている。価値を生む希少性そのものが、現金としての利用を衰退させた。

マイニングについて、ディリンジャーは、電力に補助金が出て採掘が一番安くつく場所にASICが集まり、ハッシュパワーの大部分が、一つの政府の方針に左右されるようになることを、サトシは想定していなかったはずだと見ている。その懸念は、スワンソンの取材の1年前に、すでに現実になっていた。2017年の中国によるICO・取引所禁止で、当時ハッシュレートの大きな割合を占めていた中国のマイナーは、その政府の一存に左右される立場に置かれた。2021年、その政府はビットコインの新たなマイニングを禁じた。

このインタビューは、レイ・ディリンジャーの伝記が短くまとめている公開前のコードの点検について、技術の詳しいところを補っている。ディリンジャー自身が書いた回顧「自分たちが何を始めているのか分かっていたら」と合わせて読むとよい。同じ2008年11月の点検について、インタビューは技術の中身を、回顧は誰が、いつ、なぜ加わったのかを語っている。