比特幣之區塊鏈技術

數字貨幣 比特幣 比爾·蓋茨 黑客 架構之路 2017-05-19

最近影響極大的“勒索”病毒襲轉全球,造成數以萬計的電腦中毒,主要是通過AES/RSA加密電腦辦公文件,此種加密方式沒有私鑰無法解密,黑客提供瞭解密的方式,就是按黑客提供的交易方式“比特幣”交易,所以現在比特幣又火了一把,水漲船高。今天我們要介紹的這種比特幣用的一種技術---區塊鏈,你就明白為什麼黑客要用這種交易方式進行交易,而不是銀行卡或者其他方式。

比特幣之區塊鏈技術

比特幣是一個"去中心化"的貨幣系統,而去中心化就意味著可以反偵查,這對於執法機構而言,如果不具備相應技術能力儲備,無法展開調查;相反,如果銀行賬戶出現問題,一報案就可以馬上偵查。去中心化也意味著,透過網路的技術支持,使得比特幣的製造和發行都不以對中央發行機構的信任為基礎,轉帳和其他交易等操作甚至不需要姓名。比特幣所有轉賬記錄都可以在網絡節點中顯示出來。不過,當比特幣匯出後,如果黑客一直不動用比特幣,那麼這是無法追查的,就好比,錢到了一個無主的銀行賬戶上。除非黑客動用比特幣支付或者再次交易,那麼可以從最末端向前追查。

背景

互聯網上的貿易,幾乎都需要藉助可資信賴的第三方信用機構來處理電子支付信息。這類系統仍然內生性地受制於“基於信用的模式”。

區塊鏈技術是構建比特幣區塊鏈網絡與交易信息加密傳輸的基礎技術。它基於密碼學原理而不基於信用,使得任何達成一致的雙方直接支付,從而不需要第三方中介的參與。

比特幣之區塊鏈技術

比特幣之區塊鏈技術

定義

區塊鏈是一個分佈式賬本,一種通過去中心化、去信任的方式集體維護一個可靠數據庫的技術方案。

從數據的角度來看

區塊鏈是一種幾乎不可能被更改的分佈式數據庫。這裡的“分佈式”不僅體現為數據的分佈式存儲,也體現為數據的分佈式記錄(即由系統參與者共同維護)。

從技術的角度來看

區塊鏈並不是一種單一的技術,而是多種技術整合的結果。這些技術以新的結構組合在一起,形成了一種新的數據記錄、存儲和表達的方式。

動態

國際權威雜誌《經濟學人》、《哈佛商業週刊》、《福布斯雜誌》等相繼報道區塊鏈技術將影響世界。

創業公司R3聯合全球42家頂級銀行成立區塊鏈聯盟,包括摩根大通、美國銀行、匯豐銀行、花旗銀行、富國銀行、三菱UFJ金融集團、巴克萊銀行、高盛、德意志銀行等。

特徵

開放,共識

任何人都可以參與到區塊鏈網絡,每一臺設備都能作為一個節點,每個節點都允許獲得一份完整的數據庫拷貝。節點間基於一套共識機制,通過競爭計算共同維護整個區塊鏈。任一節點失效,其餘節點仍能正常工作。

去中心,去信任

區塊鏈由眾多節點共同組成一個端到端的網絡,不存在中心化的設備和管理機構。節點之間數據交換通過數字簽名技術進行驗證,無需互相信任,只要按照系統既定的規則進行,節點之間不能也無法欺騙其它節點。

交易透明,雙方匿名

區塊鏈的運行規則是公開透明的,所有的數據信息也是公開的,因此每一筆交易都對所有節點可見。由於節點與節點之間是去信任的,因此節點之間無需公開身份,每個參與的節點都是匿名的。

不可篡改,可追溯

單個甚至多個節點對數據庫的修改無法影響其他節點的數據庫,除非能控制整個網絡中超過51%的節點同時修改,這幾乎不可能發生。區塊鏈中的每一筆交易都通過密碼學方法與相鄰兩個區塊串聯,因此可以追溯到任何一筆交易的前世今生。

分類

公有鏈

無官方組織及管理機構,無中心服務器,參與的節點按照系統規則自由接入網絡、不受控制,節點間基於共識機制開展工作。

私有鏈

建立在某個企業內部,系統的運作規則根據企業要求進行設定,修改甚至是讀取權限僅限於少數節點,同時仍保留著區塊鏈的真實性和部分去中心化的特性。

聯盟鏈

由若干機構聯合發起,介於公有鏈和私有鏈之間,兼具部分去中心化的特性

交易方式

交易確認—交易記錄的保存

對於傳統的電子貨幣,交易記錄保存在銀行中,但是由於比特幣是去中心化的,所以需要所有用戶共同維護一個全球統一的交易記錄,並將數據儲存在每個客戶端中。

如何維護一個全球統一的交易記錄呢?

科普

數字簽名

數字簽名涉及到一個哈希函數、發送者的公鑰、發送者的私鑰。數字簽名有兩個作用,一是能確定消息確實是由發送方簽名併發出來的。二是數字簽名能確定消息的完整性。

工作原理

發送報文時,發送方用一個哈希函數從報文文本中生成報文摘要,然後用自己的私鑰對摘要進行加密,加密後的摘要將作為報文的數字簽名和報文一起發送給接收方,接收方首先用與發送方一樣的哈希函數從接收到的原始報文中計算出報文摘要,接著再用發送方的公鑰來對報文附加的數字簽名進行解密,如果這兩個摘要相同、那麼接收方就能確認該數字簽名是發送方的。

SHA256

一種求Hash值的加密算法。

工作原理

將任何一串數據輸入到SHA256將得到一個256位的Hash值(散列值)。其特點:相同的數據輸入將得到相同的結果。輸入數據只要稍有變化(比如一個1變成了0)則將得到一個千差萬別的結果,且結果無法事先預知。正向計算(由數據計算其對應的Hash值)十分容易。逆向計算(俗稱“破解”,即由Hash值計算出其對應的數據)極其困難,在當前科技條件下被視作不可能。

Merkle Tree

一種哈希二叉樹,使用它可以快速校驗大規模數據的完整性。在比特幣網絡中,Merkle 樹被用來歸納一個區塊中的所有交易信息,最終生成這個區塊所有交易信息的一個統一的哈希值,區塊中任何一筆交易信息的改變都會使得使得 Merkle 樹改變。

工作原理

非葉子節點value的計算方法是將該節點的所有子節點進行組合,然後對組合結果進行hash計算所得出的hash value。

時間戳服務器

大多用來進行比對以及驗證處理,時間戳服務器是一款基於PKI(公鑰密碼基礎設施)技術的時間戳權威系統,對外提供精確可信的時間戳服務。它採用精確的時間源、高強度高標準的安全機制,以確認系統處理數據在某一時間的存在性和相關操作的相對時間順序,為信息系統中的時間防抵賴提供基礎服務。

節點網絡

比特幣是區塊鏈技術的第一個應用,它的生態圈如下:

任何機器都可以運行一個完整的比特幣節點,一個完整的比特幣節點包括如下功能:

錢包,允許用戶在區塊鏈網絡上進行交易

完整區塊鏈,記錄了所有交易歷史,通過特殊的結構保證歷史交易的安全性,並且用來驗證新交易的合法性

礦工,通過記錄交易及解密數學題來生成新區塊,如果成功可以賺取獎勵

路由功能,把其它節點傳送過來的交易數據等信息再傳送給更多的節點

除了路由功能以外,其它的功能都不是必須的。

交易過程

第1步:所有者A利用他的私鑰對前一次交易(比特貨來源)和下一位所有者B簽署一個數字簽名,並將這個簽名附加在這枚貨幣的末尾,製作成交易單

要點:B以公鑰作為接收方地址

第2步:A將交易單廣播至全網,比特幣就發送給了B,每個節點都將收到的交易信息納入一個區塊中

要點:對B而言,該枚比特幣會即時顯示在比特幣錢包中,但直到區塊確認成功後才可用。目前一筆比特幣從支付到最終確認成功,得到6個區塊確認之後才能真正確認到帳。

第3步:每個節點通過解一道數學難題,從而去獲得創建新區塊權利,並爭取得到比特幣的獎勵(新比特幣會在此過程中產生)

要點:節點反覆嘗試尋找一個數值,使得將該數值、區塊鏈中最後一個區塊的Hash值以及交易單三部分送入SHA256算法後能計算出散列值X(256位)滿足一定條件(比如前20位均為0),即找到數學難題的解。由此可見,答案並不唯一

第4步:當一個節點找到解時,它就向全網廣播該區塊記錄的所有蓋時間戳交易,並由全網其他節點核對

要點:時間戳用來證實特定區塊必然於某特定時間是的確存在的。比特幣網絡採取從5個以上節點獲取時間,然後取中間值的方式作為時間戳。

第5步:全網其他節點核對該區塊記賬的正確性,沒有錯誤後他們將在該合法區塊之後競爭下一個區塊,這樣就形成了一個合法記賬的區塊鏈。

要點:每個區塊的創建時間大約在10分鐘。隨著全網算力的不斷變化,每個區塊的產生時間會隨算力增強而縮短、隨算力減弱而延長。其原理是根據最近產生的2016年區塊的時間差(約兩週時間),自動調整每個區塊的生成難度(比如減少或增加目標值中0的個數),使得每個區塊的生成時間是10分鐘。

數據結構

區塊鏈

區塊鏈以區塊為單位組織數據。全網所有的交易記錄都以交易單的形式存儲在全網唯一的區塊鏈中。

區塊

區塊是一種記錄交易的數據結構。每個區塊由區塊頭和區塊主體組成,區塊主體只負責記錄前一段時間內的所有交易信息,區塊鏈的大部分功能都由區塊頭實現。

區塊頭

1、版本號,標示軟件及協議的相關版本信息

2、父區塊哈希值,引用的區塊鏈中父區塊頭的哈希值,通過這個值每個區塊才首尾相連組成了區塊鏈,並且這個值對區塊鏈的安全性起到了至關重要的作用

3、Merkle 根,這個值是由區塊主體中所有交易的哈希值再逐級兩兩哈希計算出來的一個數值,主要用於檢驗一筆交易是否在這個區塊中存在

4、時間戳,記錄該區塊產生的時間,精確到秒時間戳,記錄該區塊產生的時間,精確到秒

5、難度值,該區塊相關數學題的難度目標難度值,該區塊相關數學題的難度目標

6、隨機數隨機數(Nonce),記錄解密該區塊相關數學題的答案的值

區塊形成過程

在當前區塊加入區塊鏈後,所有礦工就立即開始下一個區塊的生成工作。

1、把在本地內存中的交易信息記錄到區塊主體中

2、在區塊主體中生成此區塊中所有交易信息的 Merkle 樹,把 Merkle 樹根的值保存在區塊頭中

3、把上一個剛剛生成的區塊的區塊頭的數據通過 SHA256 算法生成一個 哈希值填入到當前區塊的父哈希值中

4、把當前時間保存在時間戳字段中

5、難度值字段會根據之前一段時間區塊的平均生成時間進行調整以應對整個網絡不斷變化的整體計算總量,如果計算總量增長了,則系統會調高數學題的難度值,使得預期完成下一個區塊的時間依然在一定時間內

核心問題

工作量證明

區塊頭包含一個隨機數,使得區塊的隨機散列值出現了所需的0個數。節點通過反覆嘗試來找到這個隨機數, 這樣就構建了一個工作量證明機制。

工作量證明機制的本質是一CPU一票,“大多數”的決定表達為最長的鏈,因為最長的鏈包含了最大的工作

量。如果大多數的CPU為誠實的節點控制,那麼誠實的鏈條將以最快的速度延長,並超越其他的競爭鏈條。如果想要修改已出現的區塊,攻擊者必須重新完成該區塊的工作量外加該區塊之後所有區塊的工作量,並最終趕上和超越誠實節點的工作量。

分叉

同一時間段內全網不止一個節點能計算出隨機數,即會有多個節點在網絡中廣播它們各自打包好的臨時區塊(都是合法的)。

比特幣之區塊鏈技術

某一節點若收到多個針對同一前續區塊的後續臨時區塊,則該節點會在本地區塊鏈上建立分支,多個臨時區塊對應多個分支。該僵局的打破要等到下一個工作量證明被發現,而其中的一條鏈條被證實為是較長的一條,那麼在另一條分支鏈條上工作的節點將轉換陣營,開始在較長的鏈條上工作。其他分支將會被網絡徹底拋棄。

雙花

雙花,即二重支付,指攻擊者幾乎同時將同一筆錢用作不同交易。

每當節點在把新收到的交易單加入區塊之前,會順著交易的發起方的公鑰向前遍歷檢查,檢查當前交易所用的幣是否確實屬於當前交易發起方,此檢查可遍歷到該幣的最初誕生點(即產生它的那塊區塊源)。雖然多份交易單可以任意序的廣播,但是它們最終被加入區塊時必定呈現一定的順序。區塊之間以Hash值作為時間戳則區塊,這決定了任意一筆交易資金來源都可以被確定的回溯。

前景

從 2008年的比特幣開始,區塊鏈經歷了可編程貨幣、可編程金融與可編程社會三大應用時代,其應用範圍逐步擴展到社會生活的方方面面。

從需求端來看,金融、 醫療、公證、通信、供應鏈、域名、投票等領域都開始意識到區塊鏈的重要性並開始嘗試將技術與現實社會對接。

從投資端來看,區塊鏈的投資資金供給逐步上升, 風投的投資熱情也不斷高漲,投資密度越來越大,供給端的資金供給有望推動技術的進一步發展。

從市場應用來看,區塊鏈能成為一種市場工具,幫助社會削減平臺成本,讓中間機構成為過去;區塊鏈將促使公司現有業務模式重心的轉移,有望加速公司的發展。

從底層技術來看,區塊鏈有望促進數據記錄、數據傳播及數據存儲管理方式的轉型;區塊鏈本身更像一種互聯網底層的開源 式協議,在不遠的將來會觸動甚至最後徹底取代現有互聯網的底層基礎協議。

從社會結構來看,區塊鏈技術有望將法律與經濟融為一體,徹底顛覆原有社會的監管模式;組織形態會因其而發生改變,區塊鏈也許最終會帶領人們走向分佈式自治的社會。

比特幣之區塊鏈技術

相關推薦

推薦中...