剖析區塊鏈(七):核心技術之時間戳

看到時間戳這個詞,大家應該會覺得是一個非常簡單的東西,無非就是將現實時間標記上去,用時間來標記表明先後,再或是表明一個數據生成的時間。然而時間戳在區塊鏈中所做的事情,卻並不止我們想的那樣簡單,對於區塊鏈的意義可謂是非同小可。

首先介紹一下時間戳:時間戳是指1970年01月01日格林尼治時間00:00:00(北京時間1970年01月01日08:00:00)到現在的總秒數。至於為什麼是1970年1月1日0:0:0,是因為很多編程語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以為我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。

剖析區塊鏈(七):核心技術之時間戳

一般來說,時間戳是一段完整的、可驗證的數據,它表示在某個特定時間點存在數據。通常是一個字符序列,唯一地標識某一刻的時間。通俗的講, 時間戳是一份完整的可驗證的時間數據證明,它能夠證明一份數據存在或發生於哪個時間點。

在區塊鏈系統中,每一個新區快生成時,都會被打上時間戳,最終依照區塊生成時間的先後順序相連成區塊鏈,每個獨立節點又通過P2P網絡建立聯繫,這樣就為信息數據的記錄形成了一個去中心化的分佈式時間戳服務系統。用大家都懂的例子來講:比特幣網絡中,大約每10分鐘產生一個新的區塊,並蓋上時間戳,廣播發送給全網各個節點,這樣每個節點手裡都有一份這個區塊的所有信息,包括時間戳,這就形成了一個分佈式時間戳。

剖析區塊鏈(七):核心技術之時間戳

時間戳的這種設計,使得更改一條記錄的困難程度按時間的指數倍增加,越老的記錄越難更改,區塊鏈運行時間越久,篡改難度越高的特點,也有時間戳一份功勞。這個難篡改的原因就在於區塊的數據結構(阿深的前幾篇文章都詳細剖析了這些,為了方便閱讀,在此大概敘述一下):

每個區塊都由區塊頭和區塊體構成,先由區塊體說,區塊體中記錄著該區塊被創建這段時間內的所有交易數據,這些記錄通過merkle樹組織起來,merkle樹根哈希值作為本區塊中所有交易記錄的總結、摘要、“指紋”被放入區塊頭當中。區塊頭中不光有merkle樹根(本區塊的摘要),還有前一個區塊頭的摘要(也就是前一區塊的merkle樹根)、本區塊的時間戳、高度(從第一個區塊開始數,本區塊是第幾個區塊)等等信息。

剖析區塊鏈(七):核心技術之時間戳

如果篡改某一區塊的數據的話,首先會從當前區塊體中的merkle樹葉節點(也就是變動的數據處)一直向上傳遞到區塊頭的merkle樹根,使得merkle樹根的哈希值發生變化。由於區塊一產生就蓋上時間戳,按時間排序,就能確定下一個區塊。假設當前區塊頭摘要篡改前是A,篡改後是B,下一個區塊頭包含著A,當前區塊篡改後的A和下一個區塊保存的B不匹配,就會出現錯誤, 所以一旦有惡意篡改的行為很快就會被系統檢測到。

如果想篡改成功,那就得改動下一個區塊,以此類推,必須同時改動該區塊後面的所有區塊。因為將一個區塊放入區塊鏈中需要消耗非常多的資源(資源種類依共識算法的不同而不同,可以是計算力,流逝的時間,擁有的權益等),隨著後面添加的區塊越來越多,所以要想改動某個區塊幾乎是不可能的。

看似提到時間戳很少,但如果沒有按照時間戳來有序排列,如何證明誰是前一個區塊,誰是後一個區塊,該去保存哪個區塊的摘要。從上述結論來看,時間戳在區塊鏈當中扮演者公證人的角色,比傳統的公證制度更加可信。再加上時間戳這個技術本身的意義便是為了證明先後,這導致區塊鏈技術在產權保護方面有很大優勢,提供更加公正、可信、全面的保護。

比如阿深想發表一篇作品,可又擔心署名遭到侵犯,爭奪版權之類的麻煩事(吐槽:阿深本人由於文筆不是多好,所以並不擔心這個)。這種情況就可以將自己的文章保存在區塊鏈上,又或是這個寫作平臺本來就是一款區塊鏈產品。該文章會被蓋上時間戳,生成一個獨一無二的哈希,證明本文章的版權僅屬於阿深。後面如果有抄襲的人,想要將文章搬運走,標記是自己的版權,時間戳可以證明文章屬於阿深,讓搬運者的行為無效。

以上就是對時間戳的介紹,歡迎大家評論轉發,如果對你有所幫助不勝榮幸。


分享到:


相關文章: