(Instiの文脈投稿)
難易度が244.213223092375323881335701184896212407930361873708113773326734402748260502489 1554339282075169582811726687822061777635447902413461818393548574922122914786456 6654051064077556842993973623686279076537890477160907158869253835628402573582928 17840402922938076799907じゃなくて本当に良かった
その場合、ブロックを獲得するのがどれだけ大変か想像してみてくれ!!!!!
実際、もう1桁追加して計算すると244.213223092375323881335701184896212407930361873708113773326734402748260502489 1554339282075169582811726687822061777635447902413461818393548574922122914786456 6654051064077556842993973623686279076537890477160907158869253835628402573582928 178404029229380767999068となり、Instiが示した値に切り上げられる。
見ていたコードが間違っている。適用されるコードはこちらだ:
bool CBlock::CheckBlock() const
{
...
// タイムスタンプをチェック
if (nTime > GetAdjustedTime() + 2 * 60 * 60)
return error("CheckBlock() : block timestamp too far in the future");
...
bool CBlock::AcceptBlock()
{
...
// 前のブロックに対してタイムスタンプをチェック
if (nTime <= pindexPrev->GetMedianTimePast())
return error("AcceptBlock() : block's timestamp is too early");
タイムスタンプは未来方向には最大2時間に制限されている。前のブロックより早い時刻にすることはできるが、直近11ブロックの中央値より大きくなければならない。このようにしている理由は、前のブロックのタイムスタンプが未来すぎた場合(今回起きたように)、次のブロックで時刻を修正できるようにするためだ。