區塊鍊(1.0)是一個基于密碼學安全的分布式賬本,是一個友善驗證,不可篡改的賬本。通常認為與智能合約相結合的區塊鍊為區塊鍊2.0,如以太坊是典型的區塊鍊2.0很多人隻了解過比特币,不知道區塊鍊,比特币實際是一個使用了區塊鍊技術的應用,隻是比特币目前太熱,把區塊鍊技術的光芒給掩蓋了,區塊鍊才是未來。
下面講解區塊鍊1.0技術是如何實作的。
哈希函數
在講區塊鍊記賬之前,先說明一下哈希函數。
哈希函數:Hash(原始資訊) = 摘要資訊
原始資訊可以是任意的資訊, hash之後會得到一個簡短的摘要資訊。
哈希函數有幾個特點:
- 同樣的原始資訊用同一個哈希函數總能得到相同的摘要資訊
- 原始資訊任何微小的變化都會哈希出面目全非的摘要資訊
- 從摘要資訊無法逆向推算出原始資訊
舉例說明:
Hash(張三借給李四100萬,利息1%,1年後還本息 …..) = AC4635D34DEF
賬本上記錄了AC4635D34DEF這樣一條記錄。
可以看出哈希函數有4個作用:
-
簡化資訊
很好了解,哈希後的資訊變短了。
-
辨別資訊
可以使用AC4635D34DEF來辨別原始資訊,摘要資訊也稱為原始資訊的id。
-
隐匿資訊
賬本是AC4635D34DEF這樣一條記錄,原始資訊被隐匿。
-
驗證資訊
假如李四在還款時欺騙說,張三隻借給李四10萬,雙方可以用AC4635D34DEF來驗證原始資訊
哈希函數的這4個作用在區塊鍊技術裡有廣泛的運用。
區塊鍊記賬方法
假設有一個賬頁序号為0的賬頁交易記錄如下:
賬号 | 入賬 | 出賬 | 餘額 | 備注說明 |
---|---|---|---|---|
王二 | 100 | 190 | 收到xxx貨款 | |
張三 | 30 | xxxx | ||
李四 | 120 | 90 | 170 |
記賬時間為:2018-8-22 10:22:02
區塊鍊在記賬是會把賬頁資訊(包含序号、記賬時間、交易記錄)作為原始資訊進行Hash, 得到一個Hash值,如:787635ACD, 用函數表示為:
| |
賬頁資訊和Hash值組合在一起就構成了第一個區塊。
比特币系統裡約10分鐘記一次賬,即每個區塊生成時間大概間隔10分鐘
在記第2個賬頁的時候,會把上一個塊的Hash值和目前的賬頁資訊一起作為原始資訊進行Hash,即:
| |