不正なブロック74638
lachesisが異常な出力値をUINT64_MAXではなくINT64_MAX (2^63/10^8) と特定。バリュー・オーバーフロー事件への最初の技術的診断。
lachesis、サトシが礼を言ったマイニング計算機の作者

2010年7月14日17時04分(UTC)、サトシ・ナカモトは、マイニングの成果が止まったと訴える利用者に返信した。その書き出しは、質問者ではない別の誰かへの礼だった。
SNサトシ・ナカモトの投稿(2010年7月14日17:04 UTC)「計算機を作ってくれてありがとう。」
マイニングの計算機である。自分のハッシュレートと現在の難易度を入れると、ブロックを見つけるまでの平均時間が出る。3時間半後、フォーラムのユーザーlachesisが応じた。「問題ない、サトシ。Alloscomp.comは俺のドメインだ」。名乗ったのは人ではなく、ウェブサイトだった。その1週間後、同じ人物はフォーラムに載せた小さなPythonのライブラリーの説明文に、作者として「Eric Swanson」と署名している。GitHubにはいまも、この名前でlachesisというハンドルが残り、計算機もalloscomp.comで動いている。
スワンソンがBitcoinTalkに登録したのは2010年6月3日である。数時間後の最初の投稿は、計算の仕方を尋ねるものだった。難易度と、自分の毎秒約100万回のハッシュから、ブロックを見つけるまでに平均でどれだけかかるのか。theymosが「目標確率」0.5を掛ける式で答え、数日後に別の利用者がそれを1に正した。スワンソンはこの計算を自分のウェブページに載せた。7月13日には、「なぜ何も生成されないのか」と尋ねる利用者に、ほかの利用者がalloscomp.com/bitcoin/calculator.phpのリンクで答えるようになっていた。
サトシもこれを使った。7月16日には難易度が45.38になったと告げる投稿に、計算機のアドレスを括弧書きで添えた。7月31日には、「あの便利な計算機のような」ページで次の難易度調整を予測してほしいとフォーラムに呼びかけている。
スワンソンは自分を「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月だった。
18時08分(UTC)、ジェフ・ガージックが「Strange block 74638」というスレッドを立て、92,233,720,368.54277039 BTCという出力に当て推量を添えた。「これはUINT64_MAXか?」。9分後、最初の返信をスワンソンが書いた。
Lエリック・スワンソンの投稿(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件
lachesisが異常な出力値をUINT64_MAXではなくINT64_MAX (2^63/10^8) と特定。バリュー・オーバーフロー事件への最初の技術的診断。
BitcoinTalkトピック43におけるlachesisの文脈投稿。msg1323の後。
BitcoinTalkトピック145におけるlachesisの文脈投稿。msg1256の後。
BitcoinTalkトピック218におけるlachesisの文脈投稿。msg1828の後。
BitcoinTalkトピック240におけるlachesisの文脈投稿。msg2132の後。
BitcoinTalkトピック343におけるlachesisの文脈投稿。msg2880の後。
BitcoinTalkトピック286におけるlachesisの文脈投稿。msg2947の後。
BitcoinTalkトピック441におけるlachesisの文脈投稿。msg4095の後。
BitcoinTalkトピック550におけるlachesisの文脈投稿。msg5378の後。
BitcoinTalkトピック576におけるlachesisの文脈投稿。サトシを引用。
BitcoinTalkトピック628におけるlachesisの文脈投稿。msg6508の後。
BitcoinTalkトピック611におけるlachesisの文脈投稿。サトシを引用。
BitcoinTalkトピック696におけるlachesisの文脈投稿。msg7364の後、サトシを引用。
BitcoinTalkトピック760におけるlachesisの文脈投稿。msg8413の後、サトシを引用。
BitcoinTalkトピック434におけるlachesisの文脈投稿。サトシを引用。
BitcoinTalkトピック813におけるlachesisの文脈投稿。msg9454の後。
BitcoinTalkトピック589におけるlachesisの文脈投稿。
BitcoinTalkトピック806におけるlachesisの文脈投稿。
BitcoinTalkトピック782におけるlachesisの文脈投稿。
BitcoinTalkトピック158におけるlachesisの文脈投稿。msg1582の前。
BitcoinTalkトピック183におけるlachesisの文脈投稿。msg1620の前。
BitcoinTalkトピック199におけるlachesisの文脈投稿。msg1670で引用。
BitcoinTalkトピック171におけるlachesisの文脈投稿。msg1815の前。
BitcoinTalkトピック242におけるlachesisの文脈投稿。msg2078の前。
BitcoinTalkトピック305におけるlachesisの文脈投稿。msg2895の前。
BitcoinTalkトピック383におけるlachesisの文脈投稿。msg3339の前。
BitcoinTalkトピック461におけるlachesisの文脈投稿。msg4775の前。
BitcoinTalkトピック528におけるlachesisの文脈投稿。msg5416の前。
BitcoinTalkトピック632におけるlachesisの文脈投稿。msg7090の前。
BitcoinTalkトピック287におけるlachesisの文脈投稿。msg7694の前。
BitcoinTalkトピック788におけるlachesisの文脈投稿。msg8804の前。
BitcoinTalkトピック823におけるlachesisの文脈投稿。msg9648の前。
BitcoinTalkトピック84におけるlachesisの文脈投稿。msg1579の前。
BitcoinTalkトピック55におけるlachesisの文脈投稿。msg1596の前。
BitcoinTalkトピック149におけるlachesisの文脈投稿。msg1653の前。
BitcoinTalkトピック217におけるlachesisの文脈投稿。msg1827の前。
BitcoinTalkトピック72におけるlachesisの文脈投稿。msg2886の前。
BitcoinTalkトピック299におけるlachesisの文脈投稿。msg3008の前。
BitcoinTalkトピック393におけるlachesisの文脈投稿。msg3510の前。
BitcoinTalkトピック437におけるlachesisの文脈投稿。msg4037の前。
BitcoinTalkトピック626におけるlachesisの文脈投稿。msg6542に引用。
BitcoinTalkトピック753におけるlachesisの文脈投稿。msg8388の前。
BitcoinTalkトピック601におけるlachesisの文脈投稿。msg8924の前。
BitcoinTalkトピック862におけるlachesisの文脈投稿。msg10290の前。
lachesisがスレッドを開始: SHA-256衝突への対処
lachesisがスレッドを開始: 機能リクエスト: 接続数の制限