Timestamp

比特幣如何判斷現在是幾點?

  • October 3, 2017

比特幣需要知道目前時間才能驗證區塊。它是如何決定的?

請注意,我專門討論的是 Satoshi 客戶端。

它需要連接的其他客戶端的中位時間,但

如果至少有 5 個,則只有 1.,

如果中位時間與系統時間相差不超過 70 分鐘,則為 2.。

具體而言,我們查看AddTimeData, in timedata.cpp

注意:我已將其編輯為長度

void AddTimeData(const CNetAddr& ip, int64 nTime)
{
   int64 nOffsetSample = nTime - GetTime();
   // Add data
   vTimeOffsets.input(nOffsetSample);
   if (vTimeOffsets.size() >= 5 && vTimeOffsets.size() % 2 == 1)
   {
       int64 nMedian = vTimeOffsets.median();
       // Only let other nodes change our time by so much
       if (abs64(nMedian) < 70 * 60)
       {
           nTimeOffset = nMedian;
       }
       else
       {
           nTimeOffset = 0;
       }
   }
}

引用自:https://bitcoin.stackexchange.com/questions/7404