如何認識區塊鏈-區塊鏈學習筆記

最近區塊鏈可以算是全球熱點,互聯網圈、金融圈、電商圈包括政治圈都在熱議

區塊鏈。在加密貨幣市場比特幣曾一度熱炒到2萬美元,區塊鏈也是17年達沃斯論

壇的主要話題,甚至在區塊鏈圈里把互聯網劃分為古典互聯網和區塊鏈互聯網。

那究竟什么是區塊鏈?它和加密貨幣是什么關系?他將如何改變世界?為什么有?

些人堅定的認為它有如此巨大的價值?可能大部分人還是很困惑。在看一些相關

的介紹文章時由于不同的文章的對受眾人群的知識結構有不同的要求,每篇文章

有自己不同的側重重點和知識起點,對于一個初識區塊鏈的朋友,在看一些層次

高低區塊鏈類文章后,大多會有越看越糊涂的感覺。所以就想根據自己的學習經

歷寫一篇關于區塊鏈入門類的文章,簡單概要的向大家介紹一下區塊鏈的基本知

識。本文適合一些初識區塊鏈的朋友,希望本文的內容對大家認識區塊鏈有所有

幫助。

什么是區塊鏈?

這是在人們接觸到區塊鏈時首先提出的問題,不同的文章也給出不同的解釋,有

說他是一種分布式賬本技術,有說他是一種全新的分布式數據庫,也有說他是一

種全新的分布式數據存儲技術,為什么會有這么多不同的定義,他們說的是對的

還是錯的,對于一個初識者面就很難理清。我們先看看維基百科和百度百科中對

區塊鏈的定義。

維基百科區塊鏈定義:區塊鏈(英語:blockchain 或 block chain)是用分布式

數據庫識別、傳播和記載信息的智能化對等網絡, 也稱為價值互聯網。中本聰在

2008年,于《比特幣白皮書》中提出“區塊鏈”概念,并在2009年創立了比特幣

社會網絡,開發出第一個區塊,即“創世區塊”。

百度百科區塊鏈定義: 區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密

算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點

之間建立信任、獲取權益的數學算法。狹義來講,區塊鏈是一種按照時間順序將

數據區塊以順序相連的方式組合成的一種鏈式數據結構, 并以密碼學方式保證的

不可篡改和不可偽造的分布式賬本。 廣義來講,區塊鏈技術是利用塊鏈式數據結

構來驗證與存儲數據、利用分布式節點共識算法來生成和更新數據、利用密碼學

的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編

程和操作數據的一種全新的分布式基礎架構與計算方式。

以上的兩種解釋應該是普遍被大家所認可的,從上面的解釋看,在區款連技術主

要包含分布式網絡、共識機制、加密算法、智能合約、權限許可、價值、資產等

幾大要素,使區塊鏈技術能夠實現更為透明、安全和高效的交易(包括簡單交易

和智能合約交易),從而實現整個社會溝通、協同和交易的效率提升。 按照功能

架構劃分整個區塊鏈技術又分為:應用層、合約層、激勵層、共識層、網絡層、

數據層(如:圖1),區塊鏈技術的各要素在各層發揮所用。雖然右圖結構清晰的

理出了區塊鏈的整體架構,但區塊鏈的主要的技術要素是如何在一起協作的?究

竟如何理解區塊鏈?本文后邊會根據右圖展開,通過一個個問題給大家進行梳

理,最終叫大家對于區塊鏈有個初步的認識。

圖1

什么是區塊鏈網絡?網絡層

在向大家解釋這個問題之前,先說一下大家用p2p技術下片的事,我相信大部分人

都在網上下種子,然后通過種子下片等其他數據資源。基本都用電驢、迅雷這樣

的下載工具,下載網絡上的資源,他的基礎原理是通俗的理解為就是你在打開客

戶端的的同時,也就連接到基于這個種子的p2p網絡,你的電腦即是數據的提供者

也是獲取者,形成點對點的網狀的數據傳輸,沒有中心節點,這是這種網絡結構

在打擊盜版上的無力所在,區塊鏈網絡結構就是在這種網絡結構的基礎上發展而

來,有的是基于同一種網絡協議。這種非中心化的網絡結構也恰恰是成為了區塊

鏈網絡的一個優勢所在

區塊鏈網絡的標準定義:目前最被認同的解釋是:區塊鏈網絡采用了基于國際互

聯網(Internet)的P2P(peer-to-peer)網絡架構。P2P是指位于同一網絡中的

每臺計算機都彼此對等,各個節點共同提供網絡服務,不存在任何“特殊”節

點。每個網絡節點以“扁平(flat)”的拓撲結構相互連通。在P2P網絡中不存在

任何服務端(server)、中央化的服務、以及層級結構。P2P網絡的節點之間交互

運作、協同處理:每個節點在對外提供服務的同時也使用網絡中其他節點所提供

的服務。P2P網絡也因此具有可靠性、去中心化,以及開放性。

有了網絡,就必然存在網絡中的節點,在區塊鏈網絡中也存這不同功能的網絡節

點,這些節點的不同是基于叫整個區塊鏈網絡更高效的運作而設計的,以比特網

為例,他的網絡節點就分為full節點、獨立記賬節點(礦工節點)、輕量錢包節

點、完整區塊鏈數據節點,路由節點以及后續發展出礦池節點和與之相關系的分

布式挖礦節點。在這里重點對前三種做一個簡要的說明

Full節點:即包含所有功能的全節點,它有記賬功能就是向區塊鏈寫入數據的功

能、數據路由、數據校驗、交易提交等功能。通俗的可以理解為既可發起交易、

又可將交易數據寫入區塊、還能將新的區塊數據廣播到網絡的其他節點并接收并

驗證其他節點所更新的數據。

獨立記賬節點:該節點擁有full節點的一部分功能,即接受交易信息,參與發現

區塊的競爭,并交易數據寫入區塊、將新的區塊數據廣播到網絡的其他節點并接

受其他節點所更新的數據。

輕錢包節點:它的作用就更好理解了,他只是發起交易或查詢請求,向網絡中廣

播,并重網絡中獲取其他節點返回的交易成功失敗的信息和相關查詢信息。

圖2

這些節點如何協同的呢?下面用一筆比特幣交易在網絡中完成的流程給大家做個

簡要的介紹。

圖3

通過上邊的流程大家對區塊鏈網絡和網絡中的節點和大體的交易流程又一定的了

解,錢包節點在向區塊鏈發起交易信息時會通過斯鑰簽名公鑰加密等一系列加密

驗證機制這里先不展開,感興趣的朋友可以單獨的深入的看。在交易信息驗證通

過提交后引出了另一個問題。

交易信息是如何在區塊鏈中存儲的?

上文向大家簡單介紹了區塊鏈網絡,和一筆交易怎樣在網絡中完成并存儲到了區

塊鏈中,那這些數據是以什么樣的形勢存儲的呢?上文所說的區塊是什么?又是

怎么鏈起來的? 這就說到了區塊鏈的數據層,在此以比特網為例給大家解釋一

下,數據在區塊中存儲的形勢,區塊和區塊是什么鏈起來的,是如何加密又怎么

進行驗證?是怎么做到不可篡改的?

比特網的區塊是一種被包含在公開賬簿(區塊鏈)里的聚合了交易信息的容器數

據結構。我們可以簡單的理解為他是一個固定大小的一組交易數據的集合,他的

整體大小和結構一定。比特網他的一個區塊的大小為2m左右,它的結構:由區塊

標識、一個包含元數據的區塊頭和緊跟其后的構成區塊主體的一長串交易組成。

圖4

區塊的主標識是區塊頭通過二次SHA256算法加密的的到數字指紋(就是雙哈希函

數算出的數值)和區塊的深度。這個雙哈希函數計算的值基于加密學原理可以說

是全局唯一的。在對應區塊鏈的深度更保證了主體標識的唯一性。

區塊頭一般包含三組數據1、引用父區塊的哈希值這組數據將區塊與前一區塊聯系

起來形成區塊鏈。2、該區塊的難度、時間戳、工作量證明的計數器(Nonce)。

3、merkle樹根(用來有效總結區塊中所有交易的數據結構,一般用作驗證交易使

用),在區塊頭明確后就可以確定區塊的主標識了。

區塊主體:就是存儲的一長串的交易信息,eg:A轉賬給B,100個比特幣,付0.1

個比特幣的手續費;B收到A轉過的100比特幣,當然實際存儲形勢要比這個嚴禁完

圖5為比特網的區塊鏈實例

圖5

在區塊鏈規則里一個區塊只能有一個父區塊,一個父區塊可能有多個子區塊,由

于哈希算法的不可逆屬性(或者暫時不可逆)比特網對區塊頭進行了雙哈希加

密,一個區塊的哈希值受他的父區塊的影響,這樣一環扣一環深度越深的區塊就

穩定,如果對父區塊或者爺爺太爺爺這樣的區塊進行偽造,就必修改這個區塊之

后的所有區塊,由于比特網采用工作量證明機制(后面介紹)進而所需要的算量

就是巨大的(可以說近乎不可能)。 就象成地質構造中的地質層或者是冰川巖芯

樣品。表層可能會隨著季節而變化,甚至在沉積之前就被風吹走了。但是越往深

處,地質層就變得越穩定。到了幾百英尺深的地方,你看到的將是保存了數百萬

年但依然保持歷史原狀的巖層。在區塊鏈里,最近的幾個區塊可能會由于區塊鏈

分叉所引發的重新計算而被修改。最新的六個區塊就像幾英寸深的表土層。但

是,超過這六塊后,區塊在區塊鏈中的位置越深,被改變的可能性就很小了。在

100個區塊以后,區塊鏈已經足夠穩定。幾千個區塊(一個月)后的區塊鏈將變成

確定的歷史,理論上永遠不會改變。(引用自精通比特幣第7章)在一般情況下在

新區塊后續追加4個區塊后就很難再被改變。所以在人們利用比特幣換取實物時,

如果金額特別巨大,通常在區塊鏈記錄收到對方一定量的比特幣后等一段時間,

等在記錄該筆交易信息的區塊后續又新生成羅干區塊后,確定交易信息穩定沒有

被攢改的可能。這樣才將比特幣所交換的實物付給對方,來避免區塊分叉帶來的

雙花風險。當然如果有人完全控制了區塊的生成就會一些用區塊鏈分叉的雙花行

為就能延伸后續區塊越長影響也越大,但是成本是巨大的,現實中往往得不償

失。

誰有權向區塊鏈寫入數據?

在上文向大家介紹了區塊鏈的存儲形勢,和如何實現不可篡改的機制,那么下一

個問題來了,在一個區塊鏈網絡中各個分布的節點最終誰有權限來創建一個新區

塊及它寫的內容又如何被其他的節點接受的?這里就引出了區塊鏈技術中另一個

重要的要素共識機制,關于共識機制我個人的理解即為誰有權限寫,寫的內容如

何校驗,如何保證寫的內容是準確的。這就需要通過共識機制和數據校驗邏輯來

解決改問題。

目前主要的共識機制有三種:POW:Proof of Work-工作證明、POS:Proof of

Stake-股權證明、POW+POS;隨著技術的不斷發展還一些新的共識機制的出現如:

DPOS、 DBFT等等。 不同的共識機制分別對應的不同形態的區塊鏈形態。在這里

我們重點說一下POW(鼎鼎大名的比特網就是采用這種機制)和POS

POW:Proof of Work-工作證明:比特網采用POW,目前被大家所熱說的挖礦就是

在這個機制的產生的現象,記在上文提過的,比特網中的記賬節點(挖礦節

點),根據自己交易池中的交易記錄在加上父區塊的哈希值等信息經過不斷的調

整難度值參數進行雙哈希計算,最終形成一個符合要求的哈希結果,一般這個結果

要小于某個值即達到要求。最終結果(BlockHash)由N個前導零構成,零的個數

取決于網絡的難度值(難度值根據全網的算力每隔一段時間進行一次調整,調整

基于保持全網每隔一段時間就一個區塊誕生的原則,比特網為10分鐘)。要得到

合理的Block

Hash需要經過大量嘗試計算,計算時間取決于機器的哈希運算速度。當某個節點

提供出一個合理的Block Hash值,說明該節點確實經過了大量的嘗試計算,當

然,并不能得出計算次數的絕對值,因為尋找合理hash是一個概率事件。當節點

擁有占全網n%的算力時,該節點即有n/100的概率找到Block Hash。當記賬節點

(挖礦)碰撞出符合要求哈希值既擁有了新區塊的寫入權限,對區塊鏈進行追

加,并向全網進行廣播,其他節點收到信息并進行驗證如驗證通過立即停止基于

原區塊的算力競賽,轉而利用新區塊的區塊頭進行下一個區塊的競爭。

POS:稱股權證明,類似于財產儲存在銀行,這種模式會根據你持有數字貨幣的量

和時間,分配給你相應的利息。簡單來說,就是一個根據你持有貨幣的量和時

間,給你發利息的一個制度,在股權證明POS模式下,有一個名詞叫幣齡,每個幣

每天產生1幣齡,比如你持有100個幣,總共持有了30天,那么,此時你的幣齡就

為3000,這個時候,如果你發現了一個POS區塊,你的幣齡就會被清空為0。你每

被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率

5%),那么在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意

思了,持幣有利息。

為什么有人熱衷于記賬(挖礦)?

有了共識機制大家解決了在整個區塊鏈網絡中由誰來記賬對區塊進行追加的問

題,那么怎么能夠怎么眾多的計算資源拉到區塊鏈網絡中參與記賬呢?這就需要

對參與記賬和存儲區塊鏈數據的節點進行激勵。本節的內容和上文是息息相關

的,不同的共識機制對應不同的激勵機制,以比特網為例子記賬節點(挖礦節

點)每產生一個新的區塊就會給這個區塊的產生者一份獎勵25個比特幣(現在為

12.5個比特幣,每4年衰減一半),因為比特網規定每筆交易都需要手續費由交易

的付款方自行填寫,這些交易的手續也歸新區塊的產生者。因此礦工在記錄交易

時會對交易池中的交易進行手續費的高低排列,先記錄手續費高的交易對于手續

費的低的交易還有一個時間優先,就是交易提交的越久它的排序會越靠前,因此

保證低手續費的交易也有被記錄區塊鏈的可能。在礦工的這兩種收益中,前者為

新發的幣因此叫做發行機制,后者為交易費用因此叫分配機制。其根本的作用是

給予區塊鏈上貢獻者予以獎勵,從而保證區塊鏈生態能夠保持生命力。

不同的區塊鏈可以根據需要設施不同的激勵機制。在以太坊中引入了燃料機制其

中燃料就是以太幣獎勵給區塊的記錄者,還有上文pos機制所說的利息,感興趣的

讀者可以專門查閱一下以太坊的相關資料。提出這種機制的主要原因是大家認為

pow機制太浪費資源,有助于全球變暖(新技術的創新者就是這么大氣)。所以誕

生了其他的共識機制或者獎勵機制。

區塊鏈僅僅是能記錄交易信息嗎?

這里簡單提一下區塊鏈1.0和區塊鏈2.0,區塊鏈1.0是以比特網為代表的,記賬類

區塊鏈,不能運行復雜的腳本代碼,應用場景相對簡單(比特網記錄的比特的相

關交易信息)。而區塊鏈2.0是以以太坊為代表的,在區塊中不僅能夠記錄簡單轉

賬交易,而且引入了虛擬機的概念可以執行相關程序腳本(chiancode)具備圖靈

完備性。進而能夠實現智能合約,這也給區塊鏈的應用帶來了無線的想象力,區

塊鏈改變世界,實現信用社會、合約社會帶來了可能。

智能合約是運行在計算機里面的,用于保證讓參與方執行承諾的代碼。基于區塊

鏈的智能合約,是因為區塊鏈的幾大特性:去中心化、不可篡改、高可用性。例

如我們可以在區塊鏈上建立一個簡單的合同,合同約定在未來的某個時段從A的賬

戶轉賬給B 100個以太幣,在復雜一些合約規定在未來的某個時間段A的賬戶內的

代幣到達1萬轉賬給B 100個代幣,達到2萬轉賬給B 200個代幣,小于5000不轉給B

代幣。當然實際應用中智能合約可以根據實際需要設計的簡單或復雜,相關方也

可能不僅僅是兩方也可以是多方。

基于區塊鏈技術能干什么?

通過上文的理解對于區塊鏈應用大家就可以開始自己的想象了,目前的以比特幣

為代表的加密貨幣是區塊鏈的一種應用,但隨著區塊鏈2.0的不斷的普及目前很多

區塊鏈產品都在不斷的出來,從國內看BATJ都在大力發展的自己的區塊鏈應用

eg:阿里、京東都也在創建基于供應鏈商品流轉的區塊鏈應用,目前以接入了近

百個生產廠家,達到商品溯源驗真的社會價值,設想一下你要買茅臺重一出廠的

所有記錄都記錄在一個公共的無法造假的區塊鏈上,貨物的真實性就得到里很好

的認證;騰訊把區塊鏈技術應用在了供應鏈金融、物流信息、法務存證、公益尋

人、騰訊微黃金等多個領域;造成以太坊分叉的Slock.it也是在創建基于區塊鏈

的共享短租業務,類似于區塊鏈上的airbnb;澳洲交易所進行區塊鏈技術的股票

交易系統,人行發行數字貨幣等等等等大家都能在新聞中不斷的看到相關應用場

景出來了。

但是這些案例的還沒有產生很大的社會影響力,但隨著人們對區塊鏈的認識的加

深,區塊鏈運營者對區塊鏈應用的大力推廣相信很快就會融入到我們每個人的生

活工作中,發揮區塊鏈技術更為廣泛的社會價值。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容