原始比特幣論文中“時間戳伺服器”部分的解釋
我試圖理解原始比特幣論文中的“時間戳伺服器”部分。對於不了解密碼學的人來說,感覺太短了。
是在說嗎?
一個塊包括:
塊本身
區塊創建時間
前一個區塊的雜湊
創建新塊時:
該塊包括目前時間和前一個塊的雜湊
這個新區塊的雜湊被廣播到所有節點
網上很少有資料試圖研究“時間戳伺服器”的概念。抱歉,如果這是一個愚蠢的問題。作為一名軟體開發人員,我試圖了解這是如何在粒度級別上工作的。
資源:
來自原始論文,比特幣:點對點電子現金系統。
3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.
是不是在說…
我認為你說得對,除了 2.2。整個新塊被廣播,而不僅僅是散列。
實際上,“廣播”並不是真正正確的術語。我相信節點會將新塊傳輸給少數對等節點(例如十個左右的其他節點)。如果這些其他節點看起來沒問題,那麼這些其他節點就會傳遞新塊。最終,新塊到達網路中的所有節點。
在下面的評論中,Pieter Wuille 澄清了一些細節,“塊被宣布給所有對等點。然後這些對等點從(通常)第一個從他們那裡宣布的對等點獲取實際塊。”
我還沒有找到關於網路操作的確切順序的明確詳細描述,但是如果你閱讀比特幣維基的協議文件,你會發現有很多消息類型,其中之一是
inv
(庫存)允許節點公佈其對一個或多個對象的知識。它可以不請自來地接收,也可以作為對 getblocks 的回复。
inv
有效載荷包括一個數組,該數組inv_vec[]
包含一種可用數據(例如塊)的程式碼和該數據的散列。因此,該消息的接收者可能會看到發送者有一個或多個接收者沒有的塊,然後可能會發出一條
getdata
消息以獲取該新數據。正如我所說,我還沒有找到關於操作的確切順序的詳細解釋,但我想現實是沿著這些路線的。所以我將其描述為廣播新塊是一種簡化。網上很少有資料試圖研究“時間戳伺服器”的概念
正如您顯然知道的,但其他人可能不知道,中本聰在第3 節中所描述的內容。時間戳伺服器,是一種我們現在稱為探勘的活動。