緣起
談起區(qū)塊鏈不得不提到比特幣,2008年中本聰在 比特幣: 一個(gè)點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng) 一文中首先提出比特幣,初衷很明確:希望這套系統(tǒng)不依賴任何一個(gè)中心,因此它是一個(gè)分布式系統(tǒng),區(qū)塊鏈的概念正是在中本聰設(shè)計(jì)比特幣系統(tǒng)的時(shí)候第一次提出,比特幣項(xiàng)目也是區(qū)塊鏈技術(shù)目前為止落地應(yīng)用最成功的一次。
本質(zhì)
本質(zhì)上來說,區(qū)塊鏈?zhǔn)且粋€(gè)分布式的數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫維護(hù)了一個(gè)不斷增長(zhǎng)的數(shù)據(jù)記錄列表。區(qū)塊鏈這個(gè)詞拆開來看,一個(gè)區(qū)塊,一個(gè)鏈,區(qū)塊里存放的是數(shù)據(jù),鏈?zhǔn)怯脕韺^(qū)塊串聯(lián)起來。如下圖所示:

區(qū)塊
區(qū)塊里存放的是數(shù)據(jù),每個(gè)區(qū)塊包括兩部分
區(qū)塊頭:記錄當(dāng)前區(qū)塊的特征值
區(qū)塊體:記錄實(shí)際的交易數(shù)據(jù)
區(qū)塊頭主要包括的特征值如下:
Version:版本號(hào)
Previous Block: 前一個(gè)區(qū)塊頭的hash值
Number Of Transactions:交易數(shù)
Timestamp:時(shí)間戳
Nonce:隨機(jī)數(shù)
Merkle Root:區(qū)塊體根節(jié)點(diǎn)hash值
交易的記錄存儲(chǔ)在區(qū)塊體中,區(qū)塊體的存儲(chǔ)結(jié)構(gòu)是一顆二叉樹,稱為默克爾樹,在這棵樹中葉子節(jié)點(diǎn)存放的是交易數(shù)據(jù)及數(shù)據(jù)的hash值,兩個(gè)葉子節(jié)點(diǎn)的hash值生成父節(jié)點(diǎn);直至生成根節(jié)點(diǎn),就是默克爾樹根節(jié)點(diǎn)(Merkle Root)

可以打開此鏈接查看一個(gè)比特幣區(qū)塊完整的詳細(xì)信息
鏈
區(qū)塊頭里存放著上一個(gè)區(qū)塊的hash值順序成為一個(gè)鏈條,區(qū)塊鏈的概念就是這一樣來的。

工作流程
理解了交易記錄,區(qū)塊,鏈等概念,我們來看下底層區(qū)塊鏈的工作流程
1. 交易發(fā)生
2. 節(jié)點(diǎn)監(jiān)聽交易記錄
3. 驗(yàn)證記錄并將合法記錄加入到節(jié)點(diǎn)內(nèi)存區(qū)
4. 計(jì)算出區(qū)塊并廣播全網(wǎng)形成共識(shí)
5. 產(chǎn)生的新的區(qū)塊加入到區(qū)塊鏈中
6. 重復(fù)2-5
共識(shí)算法
區(qū)塊鏈技術(shù)是基于分布式系統(tǒng),為了保證各個(gè)節(jié)點(diǎn)數(shù)據(jù)的同步,我們需要一個(gè)算法來保證數(shù)據(jù)一致性,這類算法被稱為共識(shí)算法。比特幣的共識(shí)算法為工作量證明(PoW),其他共識(shí)算法還有 權(quán)益證明(PoS)、授權(quán)股權(quán)證明機(jī)制(DPoS)、瑞波共識(shí)協(xié)議(RCP)、拜占庭共識(shí)算法(PBFT)等
挖礦
回想我們?cè)谏厦嫠岬降膮^(qū)塊鏈工作流程第四步
4. 計(jì)算出區(qū)塊并廣播全網(wǎng)形成共識(shí)
如何計(jì)算出區(qū)塊?這 就需要尋找一個(gè)隨機(jī)數(shù)(Nonce)和區(qū)塊頭的其他特征值一起計(jì)算出來一個(gè)hash值,一旦找到一個(gè)隨機(jī)數(shù)使得計(jì)算出來的hash值滿足難度要求,即可全網(wǎng)廣播告訴其他節(jié)點(diǎn),這個(gè)區(qū)塊已經(jīng)被找到了,而找到區(qū)塊的節(jié)點(diǎn)會(huì)有相應(yīng)的比特幣的獎(jiǎng)勵(lì)。這個(gè)過程被形象的稱為挖礦。計(jì)算hash的機(jī)器被稱為礦機(jī),操作礦機(jī) 的人被稱為礦工
區(qū)塊鏈分叉
區(qū)塊鏈?zhǔn)且粋€(gè)去中心化的數(shù)據(jù)結(jié)構(gòu),各個(gè)節(jié)點(diǎn)在任意時(shí)刻不會(huì) 保持實(shí)時(shí)一致性,會(huì)存在某一時(shí)刻不同的節(jié)點(diǎn)形成了多個(gè)區(qū)塊,這就形成了分叉,這時(shí)應(yīng)該采用哪一個(gè)區(qū)塊?
目前的規(guī)則是新節(jié)點(diǎn)總是采用最長(zhǎng)的那條區(qū)塊鏈。如果區(qū)塊鏈有分叉,將看哪個(gè)分支在分叉點(diǎn)后面,先達(dá)到6個(gè)新區(qū)塊(稱為"六次確認(rèn)")。按照10分鐘一個(gè)區(qū)塊計(jì)算,一小時(shí)就可以確認(rèn)。
區(qū)塊鏈分類
根據(jù)參與者的不同可以分為公開鏈,私有鏈,聯(lián)盟鏈
公開鏈顧名思義,任何人都可以參與使用和維護(hù),典型的如比特幣區(qū)塊鏈,信息完全公開
私有鏈,集中管理者進(jìn)行限制,內(nèi)部少數(shù)人可以使用,信息不公開
聯(lián)盟鏈介于兩者中間,若干組織維護(hù)一條區(qū)塊鏈,區(qū)塊鏈的使用有權(quán)限管理,相關(guān)信息能夠得到保護(hù)。
總結(jié)
區(qū)塊鏈不是一個(gè)憑空產(chǎn)生的一個(gè)新技術(shù),它是技術(shù)演化到一定程度后的產(chǎn)物,其應(yīng)用場(chǎng)景也跟環(huán)境息息相關(guān),能否最終帶來成本的降低和效率的提升,是這項(xiàng)技術(shù)深入應(yīng)用的關(guān)鍵,它也面臨著很多有待改進(jìn)的關(guān)鍵技術(shù)點(diǎn):
密碼學(xué)技術(shù)
共識(shí)機(jī)制
處理性能
系統(tǒng)安全
相應(yīng)的數(shù)據(jù)和存儲(chǔ)系統(tǒng)
和現(xiàn)有系統(tǒng)的融合
參考鏈接
How does blockchain really work?, by Sean Han
Bitcoin mining the hard way: the algorithms, protocols, and bytes, by Ken Shirriff
區(qū)塊鏈技術(shù)指南,by 楊保華 陳昌