區(qū)塊鏈1.0技術(shù)是如何實現(xiàn)記賬的
區(qū)塊鏈(1.0)是一個基于密碼學(xué)安全的分布式賬本,是一個方便驗證,不可篡改的賬本。
通常認(rèn)為與智能合約相結(jié)合的區(qū)塊鏈為區(qū)塊鏈2.0, 如以太坊是典型的區(qū)塊鏈2.0
很多人只了解過比特幣,不知道區(qū)塊鏈,比特幣實際是一個使用了區(qū)塊鏈技術(shù)的應(yīng)用,只是比特幣當(dāng)前太熱,把區(qū)塊鏈技術(shù)的光芒給掩蓋了。區(qū)塊鏈才是未來,期望各位開發(fā)人員少關(guān)心幣價,多關(guān)心技術(shù)。
哈希函數(shù)
在講區(qū)塊鏈記賬之前,先說明一下哈希函數(shù)。
哈希函數(shù):Hash(原始信息) = 摘要信息
原始信息可以是任意的信息, hash之后會得到一個簡短的摘要信息
哈希函數(shù)有幾個特點:
同樣的原始信息用同一個哈希函數(shù)總能得到相同的摘要信息
原始信息任何微小的變化都會哈希出面目全非的摘要信息
從摘要信息無法逆向推算出原始信息
舉例說明:
Hash(張三借給李四100萬,利息1%,1年后還本息 …。.) = AC4635D34DEF
賬本上記錄了AC4635D34DEF這樣一條記錄。
可以看出哈希函數(shù)有4個作用:
簡化信息
很好理解,哈希后的信息變短了。
標(biāo)識信息
可以使用AC4635D34DEF來標(biāo)識原始信息,摘要信息也稱為原始信息的id。
隱匿信息
賬本是AC4635D34DEF這樣一條記錄,原始信息被隱匿。
驗證信息
假如李四在還款時欺騙說,張三只借給李四10萬,雙方可以用AC4635D34DEF來驗證原始信息
哈希函數(shù)的這4個作用在區(qū)塊鏈技術(shù)里有廣泛的運用。
(哈希函數(shù)是一組函數(shù)或算法,以后會發(fā)文章專門介紹哈希)
區(qū)塊鏈記賬方法
假設(shè)有一個賬頁序號為0的賬頁交易記錄如下:
記賬時間為:2017-10-22 10:22:02
區(qū)塊鏈在記賬是會把賬頁信息(包含序號、記賬時間、交易記錄)作為原始信息進(jìn)行Hash, 得到一個Hash值,如:787635ACD, 用函數(shù)表示為:
1
Hash(序號0、記賬時間、交易記錄) = 787635ACD
賬頁信息和Hash值組合在一起就構(gòu)成了第一個區(qū)塊。
比特幣系統(tǒng)里約10分鐘記一次賬,即每個區(qū)塊生成時間大概間隔10分鐘
在記第2個賬頁的時候,會把上一個塊的Hash值和當(dāng)前的賬頁信息一起作為原始信息進(jìn)行Hash,即:
1
Hash(上一個Hash值、序號1、記賬時間、交易記錄) = 456635BCD
這樣第2個區(qū)塊不僅包含了本賬頁信息,還間接的包含了第一個區(qū)塊的信息。依次按照此方法繼續(xù)記賬,則最新的區(qū)塊總是間接包含了所有之前的賬頁信息。
所有這些區(qū)塊組合起來就形成了區(qū)塊鏈,這樣的區(qū)塊鏈就構(gòu)成了一個便于驗證(只要驗證最后一個區(qū)塊的Hash值就相當(dāng)于驗證了整個賬本),不可更改(任何一個交易信息的更改,會讓所有之后的區(qū)塊的Hash值發(fā)生變化,這樣在驗證時就無法通過)的總賬本。