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

Y2038準拠のBitcoinへの移行計画はどうなる? (すでに準拠済み)

throughput 2010年8月9日12:25 UTC

それともその時点で突然死ぬのか?

でたらめな混在状態のようだ…

CWalletKey(main.h): 64ビットRest of main.h(インメモリーのブロック/トランザクションオブジェクトを含む): 32ビットInternal main.cpp calculations: 64ビットNetwork(version): 64ビットNetwork(addr): 32ビットNetwork(getblock): 32ビットNetwork(submitorder): 32ビット

少なくとも、64ビットに変更する必要がある32ビットのtime変数が多数ある。

MoonShadow 2010年8月9日19:58 UTC

プログラマーではないが、これらの32ビット変数が2038年の近くでロールオーバーする可能性があることには疑問を持っている。私の限られた理解では、ブロックチェーンのタイムスタンプはチェーン内の位置にのみ関連しており、そのような制限の対象ではない。もちろん、2週間の難易度計算には正確な秒数が必要だが、最悪の場合でも2038年前後の2週間の計算がずれるだけだ。そして、2週間で難易度がどれだけ変化できるかには制限があるので、それさえ特に重要ではない。

MoonShadow 2010年8月9日20:12 UTC

[削除済み] Quote from: davidonpda on August 09, 2010, 08:07:26 PM

タイムスタンプの問題は、32ビット整数としてのunixタイムスタンプが2038年に必ずオーバーフローすることだ。プログラマーだが、「unix time problem」や「2038」でググればもっと情報が見つかる。

素人の観点からY2038問題は理解している。私が言いたかったのは、Bitcoinの構造内にはY2038問題は存在しないのではないかということだ。タイムスタンプはブロックチェーン内の特定の位置にのみ関連するので、クライアントがブロック内に正確なタイムスタンプを持つ必要はないはずだ。それに、それは何だろう? GMT? 自分のクライアントはローカル時間で問題なく動作していると思う。もしそれが生成したブロックの拒否につながるなら、教えてほしい。

unsigned intは2106年まで有効だ。それまでにネットワークは少なくとも一度は完全に刷新される必要があるだろう。

signed intはないはずだ。どこかでsigned intを見つけた場合は、教えてほしい(今後25年以内に頼む)。unsigned intに変更する。

サトシ・ナカモトの投稿(2010年8月9日20:13 UTC)

unsigned intは2106年まで有効だ。それまでにネットワークは少なくとも一度は完全に刷新される必要があるだろう。

signed intはないはずだ。どこかでsigned intを見つけた場合は、教えてほしい(今後25年以内に頼む)。unsigned intに変更する。

なぜVersionではuint64を使い、それ以外は32ビット整数を使っているのだろう?

throughput 2010年8月10日05:44 UTC
サトシ・ナカモトの投稿(2010年8月9日20:13 UTC)

unsigned intは2106年まで有効だ。それまでにネットワークは少なくとも一度は完全に刷新される必要があるだろう。

signed intはないはずだ。どこかでsigned intを見つけた場合は、教えてほしい(今後25年以内に頼む)。unsigned intに変更する。

タイムスタンプについてもっと良い案がある。基盤の型が何であれ、ハッシュ計算の用途のために、エポックからの秒数を文字列表現に変換するのだ(その瞬間が一世紀後に変わっていないことを願う)。

semyazza 2010年8月13日00:20 UTC
davidonpdaからの引用(2010年8月10日13:56 UTC)
サトシ・ナカモトの投稿(2010年8月9日20:13 UTC)

unsigned intは2106年まで持つ。それまでにネットワークが少なくとも一度は全面的に作り直される必要があるのは確実だ。

signed intはどこにもあってはならない。もしどこかでsigned intを見つけたら、(向こう25年以内に)教えてほしい。unsigned intに変更する。

笑った。そう、ぜひ向こう25年以内に指摘してくれ。気を利かせるなら24年にして、彼が修正する1年を残してあげてほしい

笑いに+1