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

エリック・スワンソン

lachesis、サトシが礼を言ったマイニング計算機の作者

人物

濃紺を背景に、点線の矢印でつながる3枚のパネルを並べた図解。左はハッシュレートと難易度の欄に「Thanks for making that calculator.」の引用を添えたマイニング計算機、中央は64文字で改行されたbase64の出力と「SVN rev 110」の札を置いた認証ヘッダーの不具合、右は符号ビットを強調した64ビットのレジスターと92233720368.54277039 BTCという値。下部の年表には2010年6月から8月までの4つの日付が並ぶ。

2010年7月14日17時04分(UTC)、サトシ・ナカモトは、マイニングの成果が止まったと訴える利用者に返信した。その書き出しは、質問者ではない別の誰かへの礼だった。

サトシ・ナカモトの投稿(2010年7月14日17:04 UTC)

「計算機を作ってくれてありがとう。」

マイニングの計算機である。自分のハッシュレートと現在の難易度を入れると、ブロックを見つけるまでの平均時間が出る。3時間半後、フォーラムのユーザーlachesisが応じた。「問題ない、サトシ。Alloscomp.comは俺のドメインだ」。名乗ったのは人ではなく、ウェブサイトだった。その1週間後、同じ人物はフォーラムに載せた小さなPythonのライブラリーの説明文に、作者として「Eric Swanson」と署名している。GitHubにはいまも、この名前でlachesisというハンドルが残り、計算機もalloscomp.comで動いている。

2010lachesis としてBitcoinTalk に登録(6月3日)1ブロックの所要時間の 計算式を尋ねる(6月4日)サトシが 計算機に礼を言う(7月14日)base64 の修正が SVNrev 110 に入る(7月25日)ブロック74638 の値をINT64_MAX と読む(8月15日)listtransactions が0.3.18 に入る(12月8日)

尋ねた式から(2010年6月)

スワンソンがBitcoinTalkに登録したのは2010年6月3日である。数時間後の最初の投稿は、計算の仕方を尋ねるものだった。難易度と、自分の毎秒約100万回のハッシュから、ブロックを見つけるまでに平均でどれだけかかるのか。theymosが「目標確率」0.5を掛ける式で答え、数日後に別の利用者がそれを1に正した。スワンソンはこの計算を自分のウェブページに載せた。7月13日には、「なぜ何も生成されないのか」と尋ねる利用者に、ほかの利用者がalloscomp.com/bitcoin/calculator.phpのリンクで答えるようになっていた。

サトシもこれを使った。7月16日には難易度が45.38になったと告げる投稿に、計算機のアドレスを括弧書きで添えた。7月31日には、「あの便利な計算機のような」ページで次の難易度調整を予測してほしいとフォーラムに呼びかけている。

RPCの不具合(2010年7月)

スワンソンは自分を「Cのプログラマーではない」と言い、それでもクライアントに手を入れた。6月上旬には、GUIの取引一覧のコードをRPCへ写してlistgeneratedという命令を作った。自分のマシンがいつブロックを生成したかを見たかったからで、パッチを配るときには、きっと正しく動いていないと断っている。多数のアドレスへの入金を毎分2回bitcoindに問い合わせるサイトも運営していた。一度に複数の要求を送ったときのサーバーの応答がPythonのHTTPライブラリーを止めてしまうと、生のソケットで動く自前のクライアントを書き、1時間ほどで公開した。説明文に実名があるのは、このライブラリーである。

7月25日19時52分、スワンソンはbitcoindのbase64エンコーダーが64文字ごとに改行を入れるため、ユーザー名とパスワードが長いとクライアント自身の認証ヘッダーが壊れる、と報告した。修正も添えていた。21時34分、サトシはそれをSVNのrev 110に入れたと返信し、「このバグを見つけるほど長いパスワードを使っていたこと」を褒めた。4分後にはギャビン・アンドレセンが、フラグ1つで済むもっと簡単な直し方を示している。8月には、ビットコインがBerkeley DBのファイルを排他的に開いているかを尋ね、自分で試して、開いていないことを確かめた。サトシは9月にrev 153でDB_PRIVATEフラグを外した。

サトシへの反論

スワンソンは遠慮しなかった。Linuxのトレイの不具合を、サトシがトレイへの最小化の機能ごと取り除いて片づけたときには、「サトシ、バグを修正したんじゃなくて、トレイ最小化コードを丸ごと削除しただけだ」と書いた。巨大なライブラリーは穴がないと言い切れないからプロトコルバッファを避けた、とサトシが説明したときには、あらゆるトランザクションに入っているスクリプト言語を持ち出した。「ブロックがクライアントに操作を示すような評価言語まるごとを書くことには抵抗がないのに、protocol buffersのようなライブラリを使うことには抵抗がある、というのは?」

いちばん長く続いたのはlisttransactionsをめぐる押し問答である。スワンソンは6月22日にこの命令を求めた。サトシはその日のうちに、多くのプログラマーが入金の確認にそれを使ってしまうが、そのやり方では決して確実にならない、と断った。7月末にサトシが同じ理由で断り直すと、スワンソンは7月31日に食い下がった。「ユーザーを自分自身から守るという方針を採用すべきではない」。この命令は2010年12月8日のBitcoin 0.3.18で、ギャビン・アンドレセンが書き進めていたアカウント系の命令の一つとして入った。

7月29日、サトシがいなくなったらどうするのかという質問に、ジェフ・ガージックは「それはオープンソースと呼ばれているものだ」と答えた。その2時間後、日付の変わった30日1時01分(UTC)に、スワンソンはもっと具体的なものを求めた。「サトシ以外の誰かがSVNへのコミット権限を持ち、サトシ不在時に継続するための明示的な計画」である。ギャビン・アンドレセンの最初のSVNコミットは10月で、引き継ぎそのものは12月だった。

ブロック74638(2010年8月15日)

18時08分(UTC)、ジェフ・ガージックが「Strange block 74638」というスレッドを立て、92,233,720,368.54277039 BTCという出力に当て推量を添えた。「これはUINT64_MAXか?」。9分後、最初の返信をスワンソンが書いた。

エリック・スワンソンの投稿(2010年8月15日18:17 UTC)

「これは2^63/10^8だ。だからUINT64_MAXではなくINT64_MAXのようだ。」

訂正の幅は1ビットで、しかもそれが肝心の1ビットだった。この数字は、符号付き64ビット整数が持てる最大の値をビットコインの単位に直した値の、すぐ下にあった。バリュー・オーバーフロー事件を可能にしたのも、この符号だった。この大きさの出力を2つ足すと範囲の上端を越えて負の合計に折り返し、検証のコードはそれを通してしまった。バグそのものを論じるスレッドが立ったのは19時04分で、サトシの修正は、ガージックの最初の投稿から6時間足らずで出た。

同じころ、スワンソンはフォーラムのために手を動かした人へ、自分のコインを少しずつ送っている。8月9日には、64ビット版0.3.8でSHA-256の処理が壊れていたのを突き止めたArtForzに5.01 BTC。8月15日には、プロジェクトがまだ出していなかった変更履歴をまとめたTilkaに2 BTC。

その後

このアーカイブには、2010年6月4日から8月20日までの彼の投稿68件が収録されている。BitcoinTalkのプロフィールによれば投稿は全部で259件、最後の訪問は2020年10月である。同じハンドルのGitHubでは、のちにScallionを公開した。Torの.onionアドレスを好みの文字列で始まるようにGPUで探す道具で、README(説明書き)はビットコインのバニティアドレス生成ツールvanitygenに着想を得たと記している。

2010年にスワンソンが書いたことのほとんどは、ソフトウェアに自分自身のことを報告させようとするものだった。ブロックにどれだけかかるはずか。自分のマシンは見つけたのか。ハッシュレートはいくつか。つながっている相手はどの版を動かしているのか。トランザクションはどこへ行ったのか。8月15日、ネットワークは誰も求めていなかった数字を出し、彼はそれを9分で正しく読んだ。私はそれを幸運な一瞬ではなく、同じ癖の続きとして数える。10週間、数字を見えるようにしろと言い続けた人は、その数字が本当に意味を持った日に、もうそれを見ていた。

関連エントリー

46件