區塊鏈運行機制簡介

區塊鏈簡介

區塊鏈技術是構建比特幣區塊鏈網路與交易信息加密傳輸的基礎技術,其解決的核心問題是如何在缺少可信任中央節點和可信任通道的情況下,分佈在網絡中的節點如何達成共識。區塊鏈被定義爲一個分佈式的賬本,即每個區塊鏈的節點都擁有系統所有交易的信息和數據。所以區塊鏈系統具有極大的魯棒性,因爲每個節點僅僅是系統的一部分,每個節點的權利相等,都有着一樣的賬本,摧毀部分節點對系統完全不造成影響。另一方面,區塊鏈的運行機制也確保了交易的安全性,在一個龐大的系統中,除非你能控制大多數的節點,否則系統仍然會參照多數節點的意見來決定什麼纔是真實的結果,修改一部分賬本毫無意義。最後,區塊鏈中不存在中心化的中介機構,交易的成本大大降低,交易效率得到極大的提升。正是由於區塊鏈的安全性、魯棒性和高效性,其被認爲是未來要顛覆世界的技術。

區塊鏈分類

區塊鏈按照其去中心化的程度可以分成三類,公有鏈、聯盟鏈和私有鏈。
公有鏈沒有官方組織及管理機構,無中心服務器,參與公有鏈的節點可以按照系統的規則自由接入網絡,不受控制,節點之間基於共識機制開展工作。比特幣屬於典型的公有鏈。公有鏈適用於網絡節點之間沒有任何信任的場景,所有的用戶都可以進入公有鏈成爲其中一個節點。
聯盟鏈是由若干機構聯合發起,介於公有鏈和私有鏈之間,兼具部分去中心化的特徵。聯盟鏈的參與成員是預先設定的並且具有特殊特徵的,適用於連接多個公司或者中心化的組織的場景,如銀行間的清算。
私有鏈一般建立在某個企業內部,系統的運作規則根據企業要求進行設定,修改甚至是讀取權限僅限於少數節點,同時仍保留着區塊鏈的真實性和部分去中心化的特性。進入私有鏈的成員仍然是由中心控制和制定的,節點通過授權可以進入,如金融領域的聯盟可以是私有鏈的。
公有鏈、聯盟鏈和私有鏈這三種區塊鏈的類型中,只有公有鏈真正解決了信任問題,聯盟鏈和私有鏈還是建立在一定的信任機制的基礎之上進行的。而正因爲公有鏈通過挖礦這種工作量證明的機制完全替代信任機制,公有鏈中挖礦消耗的性能也不可小覷,公有鏈是這三種類型的區塊鏈中性能最低的。

區塊鏈運行機制

區塊鏈技術是一個全民參與的記賬方式,區塊鏈的運行基於以下的基礎機制:
1) 賬簿公開機制
2) 身份與簽名機制
3) 曠工挖礦機制
我們把區塊鏈系統想象成一個封閉的村莊,每個村民或者每戶人家都可以成爲區塊鏈上的一個節點,每個節點都擁有着這個村莊所有交易的一個賬簿,賬簿是公開的。只要賬簿的初始狀態是確定的,並且每一筆交易的記錄是可靠並且有序的,當前每個人持有多少錢是可以推算出來的。按照常人的思維,就算村民之間交易的可以公開,村民肯定不想讓整個村子的人都知道自己到底有多少私房錢,所以在區塊鏈中,交易是公開的,但是參與的節點都是匿名的。參與區塊鏈的節點之間不使用真實的身份進行交易,而是使用一個唯一的ID,在兩個節點進行交易的報文中會帶有此ID的數字簽名,確保交易信息是從對應的交易方發起的。

那麼在區塊鏈系統中,節點之間是如何完成支付與交易的呢?假設在村莊中,老王和老張分別是區塊鏈的兩個節點,老王要向老張支付10個比特幣,老王首先要詢問老張的ID,例如老張的ID爲ABC,老王的ID爲XYZ,此時區塊鏈中產生了一個交易,XYZ要向ABC支付10個比特幣,於是老王就寫了一個單子交給老張。爲了追溯資金的來源,單子上除了付款人和收款人的信息以外,還有那10個比特幣的來源信息,如例子中記錄,比特幣來源於賬簿的第一頁。單子寫完後,老王會在單子上加上自己的數字簽名(私鑰加密),以便於老張驗證這10個比特幣確實是來自老王的。老張收到簽名後,用老王的ID(公鑰)即XYZ對其進行簽名驗證,證明這個單子是老王發過來的。

這裏寫圖片描述

到此時,老張確定這個單子是從老張那發過來的,但問題是老張怎麼確定老王身上有足夠的比特幣來支付呢?如果在一個沒有去中心化的系統中,如老王要給老張轉賬,老王究竟有沒有足夠的餘額來支付是通過中介機構銀行來確定的,而在區塊鏈系統中,承擔這個確定工作的是曠工組織。在老王向老張發送交易單的同時,他會把交易信息廣播給曠工組織,曠工組織裏的每個曠工小組收到交易單後,負責確定交易並且把交易補充到賬簿中去。曠工小組執行交易單確定操作是會獲得獎勵的。下面我們看曠工小組是怎麼開展工作的。

曠工小組的具體工作就是生成如下的交易清單,首先曠工小組收到老王與老張之間的交易信息,會把這個交易寫到交易清單一欄,接着曠工小組成員找到當前賬簿的最後一頁,講其編號抄寫到“上一交易編號”一欄。填寫到這一步,曠工小組的工作還沒有完成,曠工小組的成員把交易清單、上一交易編號以及隨機數通過哈希運算,生成一個本賬單編號,而區塊鏈中對於本賬單編號的值是有具體的規定的,比如目標編號需要前N位爲0。由於交易清單和上一交易編號都是不可變的,曠工小組成員需要不斷的變化隨機數的值來生成符合規定的本賬單編號。區塊鏈會自調整賬單編號的規則,使得其生成的時間是10分鐘。曠工小組得到一張有意義的賬簿紙之後(這張賬簿也就是區塊),爲了得到獎勵,必須立刻向其他小組確認自己的工作成果。所以該曠工小組會立刻廣播他已經生成有效區塊的信息,要求其他小組確認。其他小組收到此類的確認信息會立刻停下手中的工作,對此區塊的有效性進行確認。確認完成之後,這個區塊就進入了主賬簿,後面的挖礦工作會基於這個更新後的主賬簿進行。

這裏寫圖片描述

對於挖礦小組來說,當賬簿紙送出去後,如果後面有收到其他小組送來的賬簿紙,其“上一頁賬簿紙編號”爲自己之前送出去的賬簿紙,那麼就表示他們的工作成功被其他小組認可了,因爲已經有小組基於他們的賬簿紙繼續工作了。而老張看到大多數的小組都確認了這個交易,就認爲這個交易已經成功。

總結一下在區塊鏈中的交易過程如下,
第一步,貨幣的所有者A會利用他的私鑰對前一次交易(比特幣的來源)和下一位所有者B的簽署一個數字簽名,並且將這個簽名附加在交易單後面;
第二步,A將交易單廣播至全網,B與曠工組織都能收到該交易單;
第三步,曠工節點通過解出對應的隨機數,生成符合條件的哈希值,去爭奪創建新區塊的權利並且爭取比特幣的獎勵;
第四步,當一個曠工節點找到解時,向全網廣播該區塊記錄的蓋有時間戳的交易,並由全網其他曠工節點核對;
第五步,其他款共節點核對區塊的正確定,沒有錯誤後他們會將該區塊認定爲合法並且去競爭下一個區塊,這就形成了一個合法記賬的區塊鏈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章