透過比特幣應用來詮釋區塊鏈技術原理

買賣虛擬貨幣

1、比特幣概述

區塊鏈中的資料是可檢索,不可篡改的,實現主要依靠量大設計:數字簽名和共識機制。

區塊鏈技術是比特幣的基礎,比特幣是對區塊鏈技術的第一個成熟的應用。區塊鏈是指透過去中心化去信任化的方式集體維護一個可靠資料庫的技術方案。

比特幣的區塊鏈,其實就是擁有很多賬單的賬本,賬單就是區塊,賬本就是區塊鏈。

比特幣體系中不存在單獨貨幣,只存在交易單,每個人都有自己的賬戶ID,每次交易都會以交易單形式記錄在賬單上,貨幣值是依附於交易單存在的,餘額透過追溯所有參與的交易單就可以推算得出。

這個賬本記錄用一種特殊的形式記錄了比特幣從誕生到現在所有的交易記錄。每頁賬單隻記錄比特幣全世界10分鐘內的所有交易資訊,因此每10分鐘就會把所有新的交易單的資料彙集到一起,建立成為一個區塊,而每個新建立的區塊都會有一個指標指向上一個區塊,越來越多的區塊被連在一起就形成了區塊鏈。

區塊鏈非常聰明地把兩個基於雜湊值(函式演算法)的資料結構結合起來:第一個時間結構是區塊的雜湊鏈,每一個區塊都有一個區塊頭部,裡面有一個雜湊指標指向上一個區塊。第二個資料結構是一個樹狀的資料結構(梅克爾樹),它把區塊內所有交易的雜湊值進行排列儲存,這樣就可以透過樹內路徑快速搜尋到區塊內的某個需要的交易資料。

每頁賬單隻記錄比特幣全世界10分鐘內的交易資訊。每10分鐘一個新的賬單被產生,所以賬單隨時間流逝會不斷增多。每個人每一筆交易,在某頁賬單上會被記錄。這個記錄過程是比特幣體系透過網路自動完成的。目前比特幣世界運作了10年多,就有大概53萬多頁賬單了。賬單放在全世界唯一的總賬本上,並且網路中每個使用者都有一本。賬單就是區塊,總賬本就是區塊鏈。

2、如何交易

比特幣的交易是透過簽寫交易單完成的,例如:b從a處獲取的10個比特幣,想用它購買c的產品,b需求寫一個交易單,並向全網廣播,具體交易流程如下:

a從某處獲得10個比特幣記錄在Tx0.a轉賬給b,記錄在Tx1.b轉賬給c,記錄在Tx2.每個交易單都是進出雙向記錄的,類似於會計上的複式記賬法。

來源,記錄本次轉賬資金來源,有兩個科目:上一次交易單的ID(上次交易單全文Hash值)、上次傳送方的數字簽名。

去向,記錄本次轉賬資金的去向,主要包含三個科目:轉賬金額、接收方公鑰、傳送方的數字簽名(加密資金來源交易單+接收方公鑰生成的Hash值)。

每個節點收到Tx2之後進行如下驗證:

1.透過ID找到Tx1交易單

2.獲得b公鑰

3.用b公鑰對Tx2數字簽名解密

4.比對Hash來驗證

驗證得出兩個結論:1.b確實從a獲得了10個比特幣(Tx1上有a的簽名)

2.b確實有10個比特幣,而且b要給c10個比特幣(Tx2上有b的數字簽名)

交易的真實性得到有效驗證,交易造假被杜絕。

3、如何記賬

每一筆的交易以交易單形式向比特幣全網廣播,網路上每個節點都在接收全網的所有交易單,把他們放在本地一個臨時的賬單(區塊)當中,所以使用者都參與維護賬單。

這樣會出現以誰的賬單為準的問題。每個節點在網時間不同,網路傳輸情況不同,接收到的交易單也可能不同,如何分辨對錯就是記賬權分配問題。目前有三種記賬權分配機制:POW(Proof of Work,工作量證明),POS(Proof of Stake,權益證明),DPOS(Delegate Proof of Stake,股份授權證明)等,比特幣中採用的是POW,越來越多的其他數字貨幣採用了POS和DPOS,或者是混合機制。

比特幣採用的是POW工作量證明機制,其實就是計算能力的比拼。

這種機制隱含的邏輯是,努力工作的會計應該大概了是誠實可信的,這個會計在比特幣中稱為礦工,為了獲得透過工作量證明獲得記賬權需要進行下面的工作:

1.收聽全網廣播,比對本地賬本篩查拒絕掉一些不合理的交易單,將合理的新交易單記錄在本地賬單之中;2.計算一個隨機數X,將X同本地賬本銜接一起計算出一個Hash值;

3.Hash值需要前面若干位是0(位數調整影響計算難道),而這樣的隨機數很難算出,需要進行上一次的計算(挖礦過程);

4.一旦計算出來滿足要求的隨機數後,立即向全網廣播,全網的其他節點用他們本地的賬單+這個滿足要求的隨機數進行Hash值計算驗證,驗證透過之後就以該節點的賬單為準進行對賬。記賬節點將獲得比特幣獎勵;5.對賬完成,進行新的一輪隨機數計算比賽(挖礦比賽),繼續爭奪記賬權。

另外:POS權益證明是進行權益大小比拼,根據持幣數量和時間發放利息;而DPOS則是股份授權證明機制,實行電子民主,選取信任節點,成為受託人來保證通訊安全。

4、如何成鏈

傳統賬單的頁碼是連續數字的,而區塊鏈賬單的頁碼是前十位數字為0的超長隨機數密碼(Hash值,雜湊演算法生成)

在區塊鏈賬單中,需要指定上一頁的頁碼,才能將區塊有序排列。每個區塊是使用密碼箱簽名與下一個區塊“連線”起來的。區塊頭中的“本區塊雜湊值”相當於賬單的“本頁頁碼”,“父區塊雜湊值”相當於“上頁頁碼”。而“頁碼”的具體數值是使用上一頁“正文”的全文作為自變數,透過雜湊函式生成的隨機字串。

網路裡的計算機節點要爭奪記賬權,就必須隨機生成到前十位數字是0的“頁碼,而隨機數的前十位為0是個極端罕見的事件,因此整個區塊鏈網路也需要花十分鐘左右的時間,才能由某臺計算機節點找到一個這樣符合要求的”密碼“

一旦找到,這臺計算機節點就奪得了記賬權,它所生成的新賬單(區塊)就會更新到網路中的所有計算機節點。賬單(區塊)透過上頁頁碼(父區塊雜湊值)尋找父區塊,自動連結成為總賬本(區塊鏈)。

最長的鏈條才被全網公認。如果某個人需要篡改資料,鏈條就會出現分支。為了讓別人認可這條偽造的鏈條,他必須以個人理論維持這條鏈條知道長度大於真正的鏈條。由於工作量證明機制,單個節點的算力必須超過全網51%的算力才有可能超過真正的鏈條長度,隨著系統的壯大和節點的廣泛分佈,這一點幾乎不可能實現。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;