比特幣區塊鏈核心技術詳解

買賣虛擬貨幣

區塊鏈的出現主要解決的是傳統中心化網路部署方式所帶來的眾多問題,包括:

1)交易非公開化,中心節點掌握分佈節點資訊,分節點不掌握其他節點資訊;

2)系統安全性取決於中心節點安全性,中心節點存在道德風險,可利用大資料進行資料變現,存在隱私洩露風險;

3)系統風險性隨著網路規模擴大而上升;

4)中心節點維護系統執行涉及較高成本等。

源於比特幣,區塊鏈利用分散式部署P2P網路和同步更新完成了對於以上問題的解決:
1) 分散式方面,每個節點掌握各個節點資訊,資訊可以採用匿名化原則,但交易公開,且系統內交易批准取決於所有節點共識性原則,規則對於所有節點公平且強制,因此,隨著網路規模擴大,系統風險性反而下降;2) 同步更新方面,由於每個節點都存有過去所去所有交易的歷史記錄,且每10分鐘交易所組成的比鄰區塊之間存在邏輯巢狀關係,故隨著時間推移,交易增多,每個節點內同步更新的鏈條愈發變長,愈發難以被篡改。

比特幣完成了區塊鏈“從0到1”的誕生,比特幣區塊鏈交易簡易流程


1)交易定義

公共鑰匙加密(Public Key Cryptography)。比特幣區塊鏈PKC目前為每位網路參與者提供兩把鑰匙,一個為其他使用者所知的公匙(相當於使用者使用者名稱),一個只為使用者自己所知的私匙 (相當於使用者密碼),任何有你公匙的參與者可以給你傳送一條加密資訊,該資訊只有你可以讀到。

使用私匙,發信人可以在加密資訊中進行數字簽名,向收信人證明發信人是你自己。KPC採用橢圓不對稱加密技術,安全性較強。如何傳送比特幣?例:A向比特幣區塊鏈網路中傳送一條或多條資訊,A在資訊中指名傳送人和收件人的地址。對於每個收件人地址,A指名傳送的比特幣數量。A在資訊中利用私匙對資訊進行數字簽名,向收件人證明身份。資訊傳送後,A等待比特幣區塊鏈網路對於資訊進行驗證和確認。

區塊鏈深度分析報告:比特幣區塊鏈核心技術詳解

2)單節點交易核查

A的交易資訊傳送後,當比特幣網路內任一節點(礦工)上的機器收到了資訊,其開始做以下處理:檢查該機器自身是否已經處理過此次交易(確定交易唯一性);檢查交易涉及地址是否合法有效;檢查數字簽名,以確保原發信者是Input地址合法有效的擁有者;檢查發件人這筆比特幣有沒有在別的地方被花費提取過;檢查發件人比特幣數量至少是和收件人預收的比特幣數量相同(Input>Output,任何不同差額為手續費用)。

如果以上檢查沒有問題,節點將交易標註成有效,將其列入“未確認交易”名單。然後將資訊廣播至網路內其它節點,網路內眾節點開始對交易進行節點共識驗證,並在網路中進行廣播。進行單點驗證的礦工可以獲得一小部分比特幣獲得獎勵。

3) 加入區塊,區塊創造

該筆交易被一個挖礦節點驗證,驗證成功後會被新增到區塊中。每個節點要正確無誤的給這十分鐘的每一筆交易蓋上時間戳並記入最新的區塊中,所以每個區塊包含過去十分鐘的所有交易。

4) 節點共識驗證

每個礦工節點需透過解SHA256的演算法來競爭過去十分鐘區塊的合法記賬權,並爭取得到12.5個比特幣的獎勵(該數量基本是每四年遞減一半,目前已挖出1600萬以上比特幣)。若一個礦工節點解開了這十分鐘的SHA256難題,其將向全網公佈其這十分鐘區塊記錄的所有蓋時間戳交易,並由全網其他礦工節點核對。

5) 區塊成鏈

全網其他礦工節點核對該區塊記賬的正確性(因為他們同時也在蓋時間戳記賬,只是沒有競爭到合法區塊記賬權,因此無獎勵),沒有錯誤後他們將在該合法區塊之後競爭下一個區塊,這樣就形成了一個合法記賬的區塊單鏈,也就是—區塊鏈。

一般來說,每一筆交易,必須經過六次區塊確認,也就是六個十分鐘共計60分鐘,才能最終在區塊鏈上被承認合法交易。

比特幣區塊鏈本身是一種全球分散式資料庫,最大的特點是沒有中央管理員,因此無法被單一方所控制,但同時可以做到交易傳輸資料的可信性。

網路節點(nodes)為礦工,負責承載網路運輸任務,同時其負責交易的驗證以及資訊記錄儲存。

個人使用者,商家等可以透過錢包和交易所形式介入比特幣區塊鏈網路,但其不涉及區塊鏈的交易驗證和記錄儲存。

區塊鏈核心技術之一:數學加密

比特幣的所有權透過數字金鑰、比特幣地址和數字簽名予以確認,比特幣錢包中只有金鑰,不包含比特幣。由於每筆交易需一個有效簽名才能被處理儲存,因此擁有金鑰相當於擁有了帳戶中比特幣的所有和控制權。

公私鑰為1對1成對出現,公鑰相當於使用者名稱,私鑰相當於密碼,私鑰為隨機生成的數字,透過不可逆橢圓曲線運算加密函式運算出公鑰,公鑰經過雜湊函式運算得出一個比特幣地址,可公開且分享。

區塊鏈核心技術之二:P2P網路

擁有去中心化、抗攻擊、協助傳輸、韌性強的特點。

區塊鏈核心技術之三:區塊和鏈


挖礦流程(1/2)

挖礦由礦工型節點共同參與,由於需要保證節點之間的同步,所以新區塊的新增速度不能太快。因為每個區塊的後面,只能跟著一個區塊,礦工永遠只能在最新區塊的後面,生成下一個區塊。因此若區塊新增速度過快,就會出現剛剛同步了一個區塊並準備基於其生成下一個區塊,別的節點又有新區塊生成的情況。因此比特幣區塊鏈白皮書協議中設定故意讓新增新區塊變得較困難—平均每10分鐘,全網才能生成一個新區塊。

需注意,這種產出速度並非由白皮書硬性命令規定,而是透過使海量計算成為得出有效Hash的先決條件,從而控制區塊產生時間約為10分鐘。

目標值(The Target):

解密的過程為各個礦工在區塊頭所包含的疊加內容(參見“區塊頭”部分)基礎上放置隨機數字鏈(工作量,Proof of Work),經過SHA256反覆計算後達成目標值。礦工解密運算Hash的有效性跟目標值密切相關,只有小於目標值的Hash才有效,不然則無效,必須重算。

每個區塊頭包含一個難度係數(Difficulty),此值決定了計算Hash難度。協議規定,使用一個常量除以難度係數(Target=TargetMax/Difficulty),可得到目標值。難度係數越大,目標值就越小。隨著全網算力提升,難度係數快速上升。例,第10000個區塊難度係數為14,484.16,而第504,000個區塊難度係數已上升為2,227,847,638,503.63。

為了將產出速率恆定在十分鐘,比特幣區塊鏈白皮書內設計了難度係數的動態調節機制。難度係數每兩週(2016個區塊)調整一次。若2周內,區塊平均生成速度是8分鐘,就意味著比法定速度快了20%,因此難度係數就要調高20%;若平均生成速度是12分鐘,就意味著比法定速度慢了20%,難度係數就要調低20%。

隨機數(The Nonce):

隨機數為只能使用一次的密碼數字,若礦工透過雜湊運算產生了一個大於目標數的雜湊值,則其需選擇隨機值重新進行計算,直到找到小於或等於目標數的雜湊值。

更具體和直接解釋整個流程(3) 挖礦流程(2/2)

Merkle Root是區塊頭部分內的Hash值,代表了區塊體部分內的所有交易。在比特幣區塊鏈中,每筆交易產生後,都已經被Hash成一段程式碼並廣播給各節點。在各節點的區塊中,可能包含數百筆到數千筆的交易,因此,為節省儲存空間並減少資源耗費,比特幣區塊鏈的設計原理採用Merkle Tree機制,讓這些數百到數千筆的交易Hash值經由兩兩一組形成一個新Hash值的方式,不斷重複進行,直到最後產生一組最終的Hash值,也就是Merkle TreeRoot,這個最終的Hash值便會被記錄到Block Header中,只有32 Bytes的大小。MerkleTree機制可大幅減少資料傳輸量與運算資源消耗,驗證時,只需驗證這個Merkle Tree的Root值即可。

分叉和六度認證

分叉:

區塊鏈中,每個子區塊只有一個父區塊,但當不同的礦工發現不同的區塊時(兩個礦工同時解出了SHA256演算法,並進行全網廣播),會出現一個父區塊暫時擁有很多子區塊的情況,這種情況被稱為分叉。在任何區塊裡,第一條都沒有轉出地址,就是所謂的CoinBase(挖礦交易),沒有任何人付給礦工這筆錢,礦工只是理所應當的寫上自己獲得了12.5比特幣。

若所有節點皆認可礦工這樣寫,則礦工得到該筆挖礦收入。不同的礦工在填寫區塊的時候,資料一定是不一樣的,因為每個礦工的第一條肯定不一樣,礦工只會把挖礦收入轉入自己的地址。所以比如說礦工A的CoinBase是“A獲得了12.5比特幣”,礦工B的CoinBase是“B獲得了12.5比特幣”。

由於每個礦工的區塊資料皆不同,所以他們解題得出的結果也是不一樣的,都是正確答案,只是區塊不同。由於距離遠近,不同的礦工看到這兩個區塊是有先後順序的。通常情況下,礦工們會把自己先看到的區塊複製過來,然後接著在這個區塊後開始新挖礦工作。

從分叉的區塊起,由於不同的礦工跟從了不同的區塊,在分叉出來的兩條不同鏈上,算力存在差別,形象地說,就是跟從兩個鏈礦工的數量是不同的。由於解題能力和礦工的數量成正比,因此兩條鏈的增長速度也會不一樣。一段時間後,總有一條鏈的長度要超過另一條。當礦工發現全網有一條更長的鏈時,其就會拋棄他當前的鏈,把新的更長的鏈全部予以複製,在這條鏈的基礎上繼續挖礦。所有礦工都這樣操作,這條鏈就成為了主鏈,分叉出來被拋棄掉的鏈就消失。


最終網路內只有一條鏈會被保留,成為真正賬本,其他分鏈皆為無效。交易區塊所引伸的區塊“長度”越長(包含算力越強),越不容易被網路內其他節點所改變或否認,一般來說一筆交易要經過6次確認才會被最終記錄下來,“六級”是比特幣使用者所認可的最終確認等級。


更多區塊鏈數字貨幣資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

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

推荐阅读

;