區塊鏈中時間戳是個什麼意思?

買賣虛擬貨幣

傳統關係型資料庫在設計表時一般會有一個或多個時間戳(timestamp)欄位,用來標記一行記錄新增或修改時的時間。

基本上,這些時間戳是給應用內部使用的。當資料被共享給其他應用時,這些時間戳並沒有多大意義,因為時間戳可以偽造。

在資料黑市上,一個資料掮客可以將一份銀行VIP客戶資料進行注水,摻入一半的假資料。

一家保險公司為了攪亂市場上競爭對手的視線,故意汙染資料,將高淨值使用者放入騙保使用者黑名單,將騙保使用者放入高淨值使用者名稱單,然後讓汙染後的資料故意洩露出去。

如果每條資料都帶有一個真實可信的時間戳(這條資料產生的真實時間點),這樣的造假行為就比較難奏效,因為假資料的時間戳一般都是最近的。

以前我們很少關心資料的時間戳,很少去了解時間戳對資料的意義,一個原因也許是我們不知道如何用技術去實現這樣的時間戳。

如果技術實現完全可行,那麼這個時間戳對我們來說就有了全新的意義。

首先,我們有了真正可以信任的歷史資料。

第二,這些資料因為可信變得更有價值,可以在應用之外被其他應用或者分析工具使用。

第三,我們可以基於這些可信的歷史記錄生成信用。

最後,我們真正進入一個信用社會。

想象一下,如果我們想在未來某天證明自己的資料是在今天產生的,可以在今天對今天的所有資料進行某種形式的雜湊(比如默克爾樹),最終得到一個雜湊值,然後在第二天的《參考訊息》上登一個廣告,把雜湊值釋出出去。明天的《參考訊息》就成了我們的時間戳。

如果明天我們想做同樣的事,可以如法炮製,另外有一個關鍵點,那就是要記得把今天的雜湊值也給雜湊進去。這樣每天的雜湊值就包含了以前所有資料的雜湊資訊。

區塊鏈在P2P網路上透過節點間的共識演算法實現了一個分散式的時間戳服務。

區塊鏈是在時間上有序的、由記錄塊(區塊)組成的一根鏈條。一個區塊包含兩個部分:區塊頭(Block Header)和記錄部分。區塊中的所有記錄透過默克爾樹(Merkle Tree)組織起來,默克爾樹根(Root)的雜湊值做為本區塊裡所有記錄的數字指紋被放入區塊頭。

區塊頭還包含以下欄位:前一個區塊頭的雜湊值(這是前一個區塊的數字指紋,也可以看做是指向前一個區塊的雜湊指標),本區塊的時間戳、高度(Hight,即從第一個區塊開始數本區塊是第幾個塊),以及一些其他資訊。系統的共識演算法保證了每過固定的一段時間(Bitcoin是大約10分鐘),參與整個系統記賬的節點會達成共識在區塊鏈上新增下一個新的區塊。

時間戳的這種設計,使得更改一條記錄的困難程度按時間的指數倍增加,越老的記錄越難更改。這是因為,如果改動某個區塊裡的一條記錄,意味著該區塊原來的默克爾樹根失效了,需要改動區塊頭,該區塊的數字指紋隨之失效。又由於下一個區塊的區塊頭包含這個雜湊指標,這就意味著下一個區塊也需要改動。如此直到最新的那個區塊。

可見要想改動一個區塊,必須同時改動該區塊後面的所有區塊。因為將一個區塊放入區塊鏈中需要消耗非常多的資源(資源種類依共識演算法的不同而不同,可以是計算力,流逝的時間,擁有的權益等),隨著後面新增的區塊越來越多,要想改動某個區塊幾乎是不可能的。

對一個普通應用來說,如何實現這樣一個時間戳服務呢?我們需要自己建立一個區塊鏈嗎?其實沒必要,Bitcoin就是一個很好的時間戳服務,我們可以把雜湊值寫到Bitcoin的區塊鏈中。這是一種存在證明(Proof of Existence)。Factom也提供類似的服務,它收集所有的雜湊,每隔10分鐘生成一個雜湊值,寫到Bitcoin的區塊鏈中。

哪些資料需要有時間戳?必須是不能變更的資料,特別適合存檔檔案。需要現在就考慮實施時間戳嗎?這個跟你的資料戰略相關。在大資料時代,擁有高質量的資料就是擁有了價值。時間戳可以一定程度上保證資料的可信度,至少這些資料是經過“時間考驗”的。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;