區塊鏈(Blockchain)-核心技術概覽

想知道更多關於區塊鏈技術知識,請百度【鏈客區塊鏈技術問答社區】
鏈客,有問必答!

定義與原理
一、定義
公認的最先關於區塊鏈的描述性文獻是中本聰所撰寫的文章《Bitcoin:A Peer-to Peer Electronic Cach System》,但該文獻重點在於討論比特幣系統,實際上並無明確提出區塊鏈的定義和概念,在其中指出,區塊鏈是用於記錄比特幣交易帳目歷史的數據結構。
另外,Wikipedia上給出的定義中,將區塊鏈類比爲一種分佈式數據庫技術,經過維護數據塊的鏈式結構,能夠維持持續增加的、不可篡改的數據記錄。
區塊鏈技術最先的應用出如今比特幣項目中。做爲比特幣背後的分佈式記帳平臺,在無集中式管理的狀況下,比特幣網絡穩定運行了八年時間,支持了海量的交易記錄,而且從未出現嚴重的漏洞,這些都與巧妙的區塊鏈結構分不開的。
區塊鏈技術自身仍然在飛速發展中,目前相關規範和標準還在進一步成熟中。
二、基本原理
區塊鏈的基本原理理解起來並不複雜。首先,區塊鏈包括三個基本概念:
交易(transaction):一次對帳本的操做,致使帳本狀態的一次改變,如添加一條轉帳記錄;
區塊(block):記錄一段時間內發生的全部交易和狀態結果,是對當前帳本狀態的一次共識;
鏈(chain):由區塊按照發生順序串聯而成,是整個帳本狀態變化的日誌記錄。
若是把區塊鏈做爲一個狀態機,則每次交易就是試圖改變一次狀態,而每次共識生成的區塊,就是參與者對於區塊中交易致使狀態改變的結果進行確認。
在實現上,首先假設存在一個分佈式的數據記錄帳本,這個帳本只容許添加、不容許刪除。帳本底層的基本結構是一個線性的鏈表,這也是其名字「區塊鏈」的來源。鏈表由一個個「區塊」串聯組成,後繼區塊記錄前導區塊的哈希值(pre hash)。新的數據要加入,必須放到一個新的區塊中。而這個塊(以及塊裏的交易)是否合法,能夠經過計算哈希值的方式快速檢驗出來。任意維護節點均可以提議一個新的合法區塊,然而必須通過必定的共識機制來對最終選擇的區塊達成一致。 
三、以比特幣爲例理解區塊鏈工做過程
以比特幣網絡爲例,能夠具體看其中如何使用了區塊鏈技術。
首先,比特幣客戶端發起一項交易,廣播到比特幣網絡中並等待確認。網絡中的節點會將一些收到的等待確認的交易記錄打包在一塊兒(此外還要包括前一個區塊頭部的哈希值等信息),組成一個候選區塊。而後,試圖找到一個nonce串(隨機串)放到區塊裏,使得候選區塊的哈希結果知足必定條件(好比小於某個值)。這個nonce串的查找須要必定的時間去進行計算嘗試。
一旦節點算出來知足條件的nonce串,這個區塊在格式上就被認爲是「合法」了,就能夠嘗試在網絡中將它廣播出去。其餘節點收到候選區塊,進行驗證,發現確實符合約定條件了,就認可這個區塊是一個合法的新區塊,並添加到本身維護的區塊鏈上。當大部分節點都將區塊添加到本身維護的區塊鏈結構上時,該區塊被網絡接受,區塊中所包括的交易也就獲得確認。
固然,在實現上還會有不少額外的細節。這裏面比較關鍵的步驟有兩個:
一個是完成對一批交易的共識(建立區塊結構);
一個是新的區塊添加到區塊鏈結構上,被你們承認,確保將來沒法被篡改。
比特幣的這種基於算力尋找nonce串的共識機制稱爲工做量證實(Proof of Work,PoW)。目前,要讓哈希結果知足必定條件,並沒有已知的快速啓發式算法,只能進行嘗試性的暴力計算。嘗試的次數越多(工做量越大),算出來的機率越大。
經過調節對哈希結果的限制,比特幣網絡控制平均約10分鐘產生一個合法區塊。算出區塊的節點將獲得區塊中全部交易的管理費和協議固定發放的獎勵費(目前是12.5比特幣,每四年減半),這個計算新區塊的過程俗稱爲挖礦。
實際上,比特幣網絡中存在大量(據估計數千個)的維護節點,並且大部分節點都是正常工做的,默認都只認可所看到的最長的鏈結構。只要網絡中不存在超過一半的節點提早勾結一塊兒採起惡意行動,則最長的鏈將很大機率上成爲最終合法的鏈。並且隨着時間增長,這個機率會愈來愈大。
固然,若是整個網絡中大多數的節點都聯合起來做惡,能夠致使整個系統沒法正常工做。要作到這一點,每每意味着付出很大的代價,跟經過做惡獲得的收益相比,得不償失。html

未經容許,拒絕轉載。https://www.liankexing.com/no...算法

相關文章
相關標籤/搜索