比特幣白皮書
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樹根(一種用來有效地總結區塊中所有交易的資料結構)。
h~a~ = sha256(sha256(交易 a))
每個區塊連結到各自父區塊的雜湊值序列就建立了一條一直可以追溯到第一個區塊(創世區塊)的鏈條。(溯源)
最長鏈原則
由於最長鏈原則要想篡改資料需重新計算耗費巨大的計算量,所以一個長區塊鏈的存在可以讓區塊鏈的歷史不可改變,這也是比特幣安全性的一個關鍵特徵。(不可篡改)區塊
區塊是一種被包含在公開賬簿(區塊鏈)裡的聚合了交易資訊的容器資料結構,由一個包含後設資料的區塊頭和緊跟其後的構成區塊主體的一長串交易組成。區塊頭
區塊頭由三組區塊後設資料組成。首先是一組引用父區塊雜湊值的資料,這組後設資料用於將該區塊與區塊鏈中前一區塊相連線。
第二組後設資料,即難度、時間戳和nonce,與挖礦競爭相關。
第三組後設資料是merkle樹根(一種用來有效地總結區塊中所有交易的資料結構)。
區塊頭結構
構成區塊主體的一長串交易
構成對應區塊所有交易詳情,以區塊高度639230為例,在此區塊發生的交易詳情如下:
merkle 樹
merkle 樹是一種雜湊二叉樹,它是一種用作快速歸納和校驗大規模資料完整性的資料結構。在比特幣網路中,merkle 樹被用來歸納一個區塊中的所有交易,同時生成整個交易集合的數字指紋,且提供了一種校驗區塊是否存在某交易的高效途徑。
當 n 個資料元素經過加密後插入 merkle 樹時,你至多計算 2*log2(n)次就能檢查出任意某資料元素是否在該樹中,這使得該資料結構非常高效。
h~a~ = sha256(sha256(交易 a))
透過串聯相鄰葉子節點的雜湊值然後雜湊之,這對葉子節點隨後被歸納為父節點。 例如,為了建立父節點 hab,子節點 a 和子節點 b 的兩個 32 位元組的雜湊值將被串聯成 64 位元組的字串。隨後將字串進行兩次雜湊來產生父節點的雜湊值:
h~ab~=sha256(sha256(h~a~ + h~b~))