區(qū)塊鏈概念大熱的背后,真正的價值在這里
在金融領(lǐng)域,賬本記錄了資產(chǎn)和現(xiàn)金等資源的交易情況,是十分重要的財務(wù)記錄。我們每個人在銀行都有相應(yīng)的流水記錄,而每一條記錄之間的順序通常是按時間進(jìn)行排序和編號的。這種流水式的賬本對于有權(quán)限的人來說,篡改起來是非常容易的,比如,他們把幾條記錄里的內(nèi)容稍做修改,不仔細(xì)查看內(nèi)容很難看出來。
下圖就展示了一個例子:有人把第4頁的一行內(nèi)容進(jìn)行了修改,你可能很難看出前后的區(qū)別,因為賬本的變化不夠顯著(參見下圖)。很顯然,這種普通的賬本篡改起來非常簡單,而檢查是否篡改卻十分困難。
根據(jù)這一原理,用戶的任何篡改都能反映到頁碼的變化上。為了更便于檢測,我們希望即便只是對內(nèi)容進(jìn)行了極小修改,頁碼都能面目全非。這樣做的一個好處是篡改者很難掌握頁碼的變化。那么,如果有一種賬本,他把每一頁的內(nèi)容和頁碼進(jìn)行關(guān)聯(lián),不管對第4頁的內(nèi)容進(jìn)行了何種修改,頁碼都會發(fā)生突變,比如篡改后第4頁的頁碼變成了40,這樣的話,篡改行為就能很快被檢測出來。這就是區(qū)塊鏈防篡改的第一個主要原理:將頁面內(nèi)容和順序編號進(jìn)行關(guān)聯(lián)。
但這樣也給真實的記賬過程帶來一個問題--由于頁碼的不可控制,記賬時很難生成連續(xù)的頁碼,那么,賬本的順序該怎樣維護(hù)呢?區(qū)塊鏈中,在新加入一頁賬本的時候,就把上一頁賬本的頁碼寫到當(dāng)前頁的開頭,這樣就能對所有賬本頁進(jìn)行排序了,典型的一個區(qū)塊鏈就可以表示成下圖的形狀:
一個有效賬本的第一個規(guī)則是:必須保證前后兩頁的頁碼一致性。一旦出現(xiàn)頁面鏈接不上,說明賬目有假。有了這樣一個賬本之后,怎么樣才能得到一個有效的篡改賬本呢?
比如,修改第200頁上的某一筆交易,很顯然,第200頁的頁碼也發(fā)生了變化,那么,為了保持整個區(qū)塊鏈的一致性,你必須修改第201頁頭部記錄的頁碼,由于第201頁也變了,那么必須修改第202頁頭部的頁碼。也就是說,必須把第200頁之后的所有賬本都修改了。乍聽上去,篡改數(shù)據(jù)只是增加了一些繁瑣度,因此我們需要第二條規(guī)則。
一個有效賬本的第二條有效性規(guī)則是:每一個頁碼都必須小于一個固定數(shù)值。符合第二條規(guī)則是極為困難的,這是由于區(qū)塊鏈從內(nèi)容到頁碼的映射過程有很強(qiáng)的不可預(yù)測性,篡改者只有不停地進(jìn)行隨機(jī)測試,這個計算量非常大,如果運氣不好,上億次的嘗試才能改好一頁。
