傳統(tǒng)關(guān)系型數(shù)據(jù)庫在設(shè)計表時一般會有一個或多個時間戳(timestamp)字段,用來標記一行記錄添加或修改時的時間。
基本上,這些時間戳是給應(yīng)用內(nèi)部使用的。當數(shù)據(jù)被共享給其他應(yīng)用時,這些時間戳并沒有多大意義,因為時間戳可以偽造。
在數(shù)據(jù)黑市上,一個數(shù)據(jù)掮客可以將一份銀行VIP客戶數(shù)據(jù)進行注水,摻入一半的假數(shù)據(jù)。
一家保險公司為了攪亂市場上競爭對手的視線,故意污染數(shù)據(jù),將高凈值用戶放入騙保用戶黑名單,將騙保用戶放入高凈值用戶名單,然后讓污染后的數(shù)據(jù)故意泄露出去。
如果每條數(shù)據(jù)都帶有一個真實可信的時間戳(這條數(shù)據(jù)產(chǎn)生的真實時間點),這樣的造假行為就比較難奏效,因為假數(shù)據(jù)的時間戳一般都是最近的。
以前我們很少關(guān)心數(shù)據(jù)的時間戳,很少去了解時間戳對數(shù)據(jù)的意義,一個原因也許是我們不知道如何用技術(shù)去實現(xiàn)這樣的時間戳。
如果技術(shù)實現(xiàn)完全可行,那么這個時間戳對我們來說就有了全新的意義。
首先,我們有了真正可以信任的歷史數(shù)據(jù)。
第二,這些數(shù)據(jù)因為可信變得更有價值,可以在應(yīng)用之外被其他應(yīng)用或者分析工具使用。
第三,我們可以基于這些可信的歷史記錄生成信用。
最后,我們真正進入一個信用社會。
想象一下,如果我們想在未來某天證明自己的數(shù)據(jù)是在今天產(chǎn)生的,可以在今天對今天的所有數(shù)據(jù)進行某種形式的哈希(比如默克爾樹),最終得到一個哈希值,然后在第二天的《參考消息》上登一個廣告,把哈希值發(fā)布出去。明天的《參考消息》就成了我們的時間戳。
如果明天我們想做同樣的事,可以如法炮制,另外有一個關(guān)鍵點,那就是要記得把今天的哈希值也給哈希進去。這樣每天的哈希值就包含了以前所有數(shù)據(jù)的哈希信息。
區(qū)塊鏈在P2P網(wǎng)絡(luò)上通過節(jié)點間的共識算法實現(xiàn)了一個分布式的時間戳服務(wù)。
區(qū)塊鏈是在時間上有序的、由記錄塊(區(qū)塊)組成的一根鏈條。一個區(qū)塊包含兩個部分:區(qū)塊頭(Block Header)和記錄部分。區(qū)塊中的所有記錄通過默克爾樹(Merkle Tree)組織起來,默克爾樹根(Root)的哈希值做為本區(qū)塊里所有記錄的數(shù)字指紋被放入?yún)^(qū)塊頭。
區(qū)塊頭還包含以下字段:前一個區(qū)塊頭的哈希值(這是前一個區(qū)塊的數(shù)字指紋,也可以看做是指向前一個區(qū)塊的哈希指針),本區(qū)塊的時間戳、高度(Hight,即從第一個區(qū)塊開始數(shù)本區(qū)塊是第幾個塊),以及一些其他信息。系統(tǒng)的共識算法保證了每過固定的一段時間(Bitcoin是大約10分鐘),參與整個系統(tǒng)記賬的節(jié)點會達成共識在區(qū)塊鏈上添加下一個新的區(qū)塊。
時間戳的這種設(shè)計,使得更改一條記錄的困難程度按時間的指數(shù)倍增加,越老的記錄越難更改。這是因為,如果改動某個區(qū)塊里的一條記錄,意味著該區(qū)塊原來的默克爾樹根失效了,需要改動區(qū)塊頭,該區(qū)塊的數(shù)字指紋隨之失效。又由于下一個區(qū)塊的區(qū)塊頭包含這個哈希指針,這就意味著下一個區(qū)塊也需要改動。如此直到最新的那個區(qū)塊。
可見要想改動一個區(qū)塊,必須同時改動該區(qū)塊后面的所有區(qū)塊。因為將一個區(qū)塊放入?yún)^(qū)塊鏈中需要消耗非常多的資源(資源種類依共識算法的不同而不同,可以是計算力,流逝的時間,擁有的權(quán)益等),隨著后面添加的區(qū)塊越來越多,要想改動某個區(qū)塊幾乎是不可能的。
對一個普通應(yīng)用來說,如何實現(xiàn)這樣一個時間戳服務(wù)呢?我們需要自己創(chuàng)建一個區(qū)塊鏈嗎?其實沒必要,Bitcoin就是一個很好的時間戳服務(wù),我們可以把哈希值寫到Bitcoin的區(qū)塊鏈中。這是一種存在證明(Proof of Existence)。Factom也提供類似的服務(wù),它收集所有的哈希,每隔10分鐘生成一個哈希值,寫到Bitcoin的區(qū)塊鏈中。
哪些數(shù)據(jù)需要有時間戳?必須是不能變更的數(shù)據(jù),特別適合存檔文件。需要現(xiàn)在就考慮實施時間戳嗎?這個跟你的數(shù)據(jù)戰(zhàn)略相關(guān)。在大數(shù)據(jù)時代,擁有高質(zhì)量的數(shù)據(jù)就是擁有了價值。時間戳可以一定程度上保證數(shù)據(jù)的可信度,至少這些數(shù)據(jù)是經(jīng)過“時間考驗”的。
來源:挖鏈網(wǎng)