比特幣技術原理----區塊鏈的本質

買賣虛擬貨幣

比特幣白皮書

2008年10月31日,一個密碼學極客中本聰在“metzdowd.com(密碼朋克)”網站的郵件列表中發表了一篇論文,題為《比特幣:一種點對點式的電子現金系統》。


創世區塊

2009年1月3日,區塊鏈裡的第一個區塊,創世區塊被挖出。
他在區塊中留下:the times 03/jan/2009 chancellor on brink of second bailout for banks.(2009年1月3日,財政大臣正處於為銀行實施第二輪緊急救助的邊緣.)
創世區塊的雜湊值為: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f


比特幣:點對對貨幣的開源實現

2009年2月11日,中本聰在p2p foundation這個論壇上釋出了一篇長文《比特幣:點對對貨幣的開源實現》

他向大家宣佈:
我開發了新的開源的點對點電子現金系統,叫做比特幣。它是一個完全去中心化的,無需中央伺服器或者受信任方,因為比特幣的一切都是建立在密碼學證明的基礎上,而不是信任的基礎上。


區塊鏈

單向連結性

區塊頭雜湊值    hash () = sha256(sha256((block_header))
每個區塊連結到各自父區塊的雜湊值序列就建立了一條一直可以追溯到第一個區塊(創世區塊)的鏈條。(溯源)

最長鏈原則

由於最長鏈原則要想篡改資料需重新計算耗費巨大的計算量,所以一個長區塊鏈的存在可以讓區塊鏈的歷史不可改變,這也是比特幣安全性的一個關鍵特徵。(不可篡改)


區塊

區塊是一種被包含在公開賬簿(區塊鏈)裡的聚合了交易資訊的容器資料結構,由一個包含後設資料的區塊頭和緊跟其後的構成區塊主體的一長串交易組成。


區塊頭

區塊頭由三組區塊後設資料組成。
首先是一組引用父區塊雜湊值的資料,這組後設資料用於將該區塊與區塊鏈中前一區塊相連線。
第二組後設資料,即難度、時間戳和nonce,與挖礦競爭相關。
第三組後設資料是merkle樹根(一種用來有效地總結區塊中所有交易的資料結構)。


區塊頭結構


構成區塊主體的一長串交易

構成對應區塊所有交易詳情,以區塊高度639230為例,在此區塊發生的交易詳情如下:


merkle 樹

merkle 樹是一種雜湊二叉樹,它是一種用作快速歸納和校驗大規模資料完整性的資料結構。

在比特幣網路中,merkle 樹被用來歸納一個區塊中的所有交易,同時生成整個交易集合的數字指紋,且提供了一種校驗區塊是否存在某交易的高效途徑。

當 n 個資料元素經過加密後插入 merkle 樹時,你至多計算 2*log2(n)次就能檢查出任意某資料元素是否在該樹中,這使得該資料結構非常高效。


起始時所有的交易都還未儲存在 merkle樹中,而是先將資料雜湊化,然後將雜湊值儲存至相應的葉子節點。以葉子節點分別是 ha、hb、hc 和 hd為例:
h~a~ = sha256(sha256(交易 a))

透過串聯相鄰葉子節點的雜湊值然後雜湊之,這對葉子節點隨後被歸納為父節點。 例如,為了建立父節點 hab,子節點 a 和子節點 b 的兩個 32 位元組的雜湊值將被串聯成 64 位元組的字串。隨後將字串進行兩次雜湊來產生父節點的雜湊值:

h~ab~=sha256(sha256(h~a~ + h~b~))


為了證明區塊中存在某個特定的交易,一個節點只需要計算 log2(n)個 32位元組的雜湊值,形成一條從特定交易到樹根的認證路徑或者 merkle 路徑即可。有了 merkle 樹,一個節點能夠僅下載區塊頭(80 位元組/區塊),然後透過從一個滿節點回溯一條小的 merkle 路徑就能認證一筆交易的存在,而不需要儲存或者傳輸大量區塊鏈中大多數內容,這些內容可能有幾個 g 的大小。


merkle 樹和簡單支付驗證(spv)節點

一個節點能夠透過生成一條僅有 4 個 32 位元組雜湊值長度(總128 位元組)的 merkle 路徑,來證明區塊中存在一筆交易 k。該路徑有 4 個雜湊值(由藍色標註)hl、hij、hmnop 和 habcdefgh。由這 4 個雜湊值產生的認證路徑,再透過計算另外四對雜湊值 hkl、hijkl、hijklmnop和 merkle 樹根(在圖中由虛線標註),任何節點都能證明 hk(在圖中由綠色標註)包含在 merkle 根中。


免責聲明:

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

推荐阅读

;