本文首發於深刻淺出區塊鏈社區
原文連接:區塊鏈記帳原理原文已更新,請讀者前往原文閱讀算法
區塊鏈(1.0)是一個基於密碼學安全的分佈式帳本,是一個方便驗證,不可篡改的帳本。
一般認爲與智能合約相結合的區塊鏈爲區塊鏈2.0, 如以太坊是典型的區塊鏈2.0
不少人只瞭解過比特幣,不知道區塊鏈,比特幣實際是一個使用了區塊鏈技術的應用,只是比特幣當前太熱,把區塊鏈技術的光芒給掩蓋了。區塊鏈纔是將來,指望各位開發人員少關心幣價,多關心技術。
本文將講解區塊鏈1.0技術是如何實現的。安全
在講區塊鏈記帳以前,先說明一下哈希函數。
哈希函數:Hash(原始信息) = 摘要信息
原始信息能夠是任意的信息, hash以後會獲得一個簡短的摘要信息分佈式
哈希函數有幾個特色:函數
舉例說明:
Hash(張三借給李四100萬,利息1%,1年後還本息 .....) = AC4635D34DEF
帳本上記錄了AC4635D34DEF這樣一條記錄。學習
能夠看出哈希函數有4個做用:區塊鏈
很好理解,哈希後的信息變短了。spa
可使用AC4635D34DEF來標識原始信息,摘要信息也稱爲原始信息的id。code
帳本是AC4635D34DEF這樣一條記錄,原始信息被隱匿。blog
假如李四在還款時欺騙說,張三隻借給李四10萬,雙方能夠用AC4635D34DEF來驗證原始信息圖片
哈希函數的這4個做用在區塊鏈技術裏有普遍的運用。
(哈希函數是一組函數或算法,之後會發文章專門介紹哈希)
假設有一個帳頁序號爲0的帳頁交易記錄以下:
記帳時間爲:2017-10-22 10:22:02
區塊鏈在記帳是會把帳頁信息(包含序號、記帳時間、交易記錄)做爲原始信息進行Hash, 獲得一個Hash值,如:787635ACD, 用函數表示爲:
Hash(序號0、記帳時間、交易記錄) = 787635ACD
帳頁信息和Hash值組合在一塊兒就構成了第一個區塊。
比特幣系統里約10分鐘記一次帳,即每一個區塊生成時間大概間隔10分鐘
在記第2個帳頁的時候,會把上一個塊的Hash值和當前的帳頁信息一塊兒做爲原始信息進行Hash,即:
Hash(上一個Hash值、序號一、記帳時間、交易記錄) = 456635BCD
這樣第2個區塊不只包含了本帳頁信息,還間接的包含了第一個區塊的信息。依次按照此方法繼續記帳,則最新的區塊老是間接包含了全部以前的帳頁信息。
全部這些區塊組合起來就造成了區塊鏈,這樣的區塊鏈就構成了一個便於驗證(只要驗證最後一個區塊的Hash值就至關於驗證了整個帳本),不可更改(任何一個交易信息的更改,會讓全部以後的區塊的Hash值發生變化,這樣在驗證時就沒法經過)的總帳本。
記帳有成本,想了解節點爲何要記帳,請看這篇:比特幣如何挖礦(挖礦原理)-工做量證實
☛ 深刻淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術博客。
☛ 個人知識星球爲各位解答區塊鏈技術問題,歡迎加入討論。
☛ 關注公衆號「深刻淺出區塊鏈技術」第一時間獲取區塊鏈技術信息。