區塊鏈: 技術驅動金融 - 第2章 比特幣如何作到去中心化

2.1 中心化與去中心化算法

    中心化和去中心化並不是水火不容,其實沒有一個系統是徹底中心化,或者徹底去中心化的。如,電子郵件是一個去中心化系統,任何人只要願意,均可以設計本身的電子郵件服務器,只是對於大多數普通人來講,這是不必的,因此就把這個任務交給了電子郵件服務商。一樣的,比特幣系統是去中心化的,可是比特幣交易所(將比特幣轉換成其餘貨幣的平臺)、錢包軟件、用戶管理比特幣的軟件,能夠是中心化或去中心化的。數據庫

    要理解比特幣如何作到去中心化,咱們須要理解下面的五個問題:後端

  1. 誰在維護交易帳本?
  2. 誰有權利批准哪一個交易是正當有效的?
  3. 誰在製造新的比特幣?
  4. 誰在制定系統變化規則?
  5. 比特幣是如何取得交易價值的?

    點對點(P2P)網絡是最接近去中心化的體系,用戶只須要下載比特幣客戶端,就能夠在其電腦上運行一個節點。一個節點既能夠做爲普通用戶,也能夠做爲礦工(將在比特幣挖礦中詳細講解),可是挖礦須要不少資金投入,因此並非全部用戶都是礦工安全

2.2 分佈式共識服務器

    分佈式共識(distributed consensus)是區塊鏈中一個很是重要的概念。網絡

    計算機界對分佈式共識研究了多年,一個直觀的例子是:一個社交網絡的後端平臺包含一個由幾萬臺服務器組成的分佈式數據庫,每一條信息都被記錄在若干個節點上,對於整個系統,這些節點必須作到同步。數據結構

    如下給出分佈式共識協議的定義:分佈式

分佈式共識協議  在一個具備n個節點的系統中,每個節點都有一個輸入值,其中一些節點具備故障,甚至是惡意的。一個分佈式共識協議有如下兩個屬性:函數

  • 輸入值的停止必須通過全部誠實節點來肯定。
  • 這個輸入值必須由誠實節點來生成。

    要理解分佈式共識在比特幣中的用途,須要注意:比特幣系統是點對點系統,當AliceBob付款時,她其實是在向構成比特幣網絡的全部節點廣播其交易信息。如圖2.2.1換句話說,Alice把這筆交易廣播給全部節點,防止Bob收款後抵賴區塊鏈

2.2.1 Alice向比特幣網絡廣播交易信息

    在比特幣網絡中有各類各樣的用戶在向網絡廣播交易信息,節點必須對哪些交易能夠進行廣播交易發生的次序達成共識,以此係統將造成一個惟一的全球交易總帳。所以,在比特幣系統裏,咱們將對每個區塊進行共識處理。

    在任什麼時候刻,每一個節點都有:

  • 總帳本。包含一系列區塊,每一個區塊中包含已經被全部節點達成共識的交易清單。
  • 交易池。包含沒有被打包進區塊、尚未達成共識、尚待確認的交易。

    每一個節點的總帳本是一致的,而交易池則略有差異,由於點對點網絡是不完美的,因此在任什麼時候刻,有些節點收到了交易信息,而有些則沒有收到

    全部節點如何對一個區塊達成共識?

    一個直觀的方法是:在一個時間段裏,好比每隔十分鐘,每一個節點提議,從本身的交易池中選擇未被確認的交易打包進區塊,做爲已經達成共識的區塊鏈的下一個區塊。這時候,每一個節點都會把這個區塊發給全部其餘節點,其餘節點將這個區塊做爲共識協議的輸入,檢驗區塊中的交易是否有效。當全部其餘節點都確認了這個區塊中的交易是正當有效的,那麼這個區塊就被增長到區塊鏈的末尾(固然,這裏會涉及到共識協議的一些細節問題)。

    可能有人會指出,這個區塊沒有包含全部的正當有效的交易,但這不要緊,那些尚未被打包進區塊的交易,能夠等待下一次機會。

    上述方法和比特幣有些類似之處,但有幾個技術問題:第一,達成共識通常是一個難題,由於有些節點會死機、離線或根本就是惡意節點;第二,上述方法要求全部節點之間兩兩相連(即全鏈接網絡),而比特幣網絡是點對點網絡,是不完美的,要執行一個全部節點參與的共識協議好像並不現實;第三,因爲交易信息分佈在整個互聯網上,信息傳遞會有嚴重的延遲。

延遲與全球時間

    比特幣協議達成共識時必須直面兩大障礙:

  • 不完美網絡,如信息延遲和節點死機。
  • 惡意節點

    嚴重網絡延遲致使的一個後果是,節點之間沒有一個統一的全球時間概念。那麼,共識協議的一些指令,如「在第一步裏發了第一個消息的節點必須在第二步裏執行X」,就沒法執行,由於全部節點對於誰在第一步中發出第一個消息有不一樣的見解。

不可能性結論

    在全球時間上的不統一,給共識協議算法帶來了不少限制。事實上,因爲這些限制,許多關於分佈式共識的文獻都對是否可以達成共識持悲觀態度,有許多達成共識具有不可能性的結論已經被證明,如「拜占庭將軍問題」、「Fischer-Lynch-Paterson不可能結果」。儘管如此,仍是有一些文獻提出了一些分佈式共識協議,其中比較著名的是Paxos算法。Paxos算法作了一些妥協,一方面,它可以作到不產生不一致的結果,另外一方面,該算法所作的妥協是,在必定條件下(雖然不太可能出現),該協議會死機卡住,從而沒法繼續運行。

打破傳統上的假設

    這些「不可能性結論」是針對分佈式數據庫的研究,都是在一些特定的模式下才成立的,並不能徹底套用到比特幣身上,畢竟比特幣自己就已經打破了不少原來分佈式數據庫所作的假設。

    第一,比特幣引進了獎勵的理念,這對分佈式共識協議來講是一個全新的理念。在這個狀況下,人們天然地會爲了獎勵而變得誠實起來。因此,比特幣並無真正解決分佈式共識問題,只是在特訂貨幣系統下解決了這個問題。

    第二,比特幣體系包含隨機性這個概念。此外,它再也不糾結於規定共識的起點和終點,相反,共識是經過一段較長的時間而達成的,在實際系統中,達成共識大約須要一個小時左右。但即便在一個小時之後,節點們也仍是沒法肯定哪一個區塊應該進入總帳本。但隨着時間的流逝,咱們對某一個區塊的認識(即這個區塊是否應該進入總帳)與最終整體共識相吻合的機率將愈來愈大,觀點出現分歧的機率按指數級降低

2.3 使用區塊鏈達成沒有身份的共識

    在傳統的分佈式共識中,要求節點實名制,或者節點的身份是明確的,這樣可使設計更容易。好比,有了真實身份,咱們就能夠用這樣的指令「編號最小的節點開始作某些動做」。

    在比特幣系統中,沒有強迫用戶使用真實身份來加入,這是比特幣的重要特性,也是比特幣系統的核心理念。缺乏真實身份,給比特幣的共識協議帶來不少難點。咱們能夠作兩個較弱的理論假設:

  • 隨意節點選擇:假設咱們能夠在系統中隨意選擇一個節點,由這個節點來決定區塊鏈的下一個區塊。
  • 節點不會受到女巫攻擊。亂造節點就是所謂的女巫攻擊(sybil attack)現象,即多個節點看似不一樣的身份,其實是一我的在操縱。

隱性共識

    隨意節點選擇的假設可讓隱性共識(inplicit consensus)成爲可能。

    咱們的共識協議有多個回合,每個回合對應區塊鏈中的一個區塊。在每一個回合中,一個隨機節點會被選中,由它來提議區塊鏈的下一個區塊。注意,在比特幣網絡中,每一個節點會將交易廣播給其餘節點,所以隨機選中的節點能夠將這些交易打包進區塊中

    這裏沒有共識算法,也沒有任何投票過程來決定哪些交易會被選中,隨機選擇的節點會直接決定區塊鏈的下一個區塊,但萬一這個節點是惡意的,在區塊中打包一些非法的交易,或者是自私節點,只打包那些有利於本身的交易。針對這個問題,能夠採用隱性共識的方法。

    其餘節點能夠經過隱性地接受或拒絕前面這個被隨機選中的節點。若是接受,他們就在這個區塊以後接龍下去;若是拒絕,他們就忽略這個區塊,而是選擇前一個曾經接受的區塊,來繼續接龍下去。值得注意的是,這裏的前一個曾經接受的區塊,並不必定就是這個區塊的前一個區塊,由於,頗有可能在以前的幾個回合中,隨機選擇的節點都是惡意節點,其餘節點已經隱性拒絕了多個回合

比特幣共識算法(簡化版)

這個算法的簡化假設是,能夠隨意選擇一個節點,這些節點都不受女巫攻擊的影響。

    1. 新的交易被廣播到全部節點。

    2. 每一個節點都將新的交易放進一個區塊。

    3. 在每一個回合,一個隨機選擇的節點能夠廣播它的區塊。

    4. 其餘節點能夠選擇接受這個區塊,前提是區塊裏的交易是正當有效的(有真的簽名)。

    5. 節點們能夠把以上接受的區塊的哈希值放進本身的區塊裏,以此來表示它們對這個新區塊的承認。

    接下來咱們看看這個算法如何可以抵抗一些常見的攻擊行爲。

    竊取比特幣

    假設這一輪由Alice來提議區塊鏈的下一個區塊,若是她想竊取Bob的比特幣,那麼Alice就發起一筆把Bob的比特幣轉到本身地址上的交易,僞造Bob的數字簽名來對這筆交易進行簽名,並把這筆交易放到下一個區塊中。顯然,若是數字簽名機制是安全的,那麼Alice就不可能達到目的。

    拒絕服務攻擊

    假設這一輪由Alice來提議區塊鏈的下一個區塊,若是她不喜歡Bob,那麼她能夠拒絕把和Bob有關的任何交易放進區塊中。儘管這是Alice能夠開展的有效攻擊,即拒絕爲Bob提供服務,但顯然這是個小問題。Bob只須要等下一個誠實節點來提議區塊,他的交易就有可能被放進區塊中。

    雙重支付攻擊

    假設AliceBob開的網店的一個顧客,Bob提供一些付費軟件下載服務。Alice能夠發起這樣的雙重支付攻擊:

    AliceBob購買一個軟件,她就在本身的地址上向Bob的地址發起一筆比特幣交易,並向整個網絡廣播這筆交易。假設如今由某個誠實節點來製造下一個區塊,並把這筆交易放進區塊中。當看到這筆交易被放進區塊鏈以後,Bob認爲Alice已經給他付款了,因而容許Alice下載軟件。緊接着,假設下一回合隨機選擇的節點恰好是由Alice控制的節點,那麼Alice能夠產生一個新區塊,而且放進一筆交易,這筆交易是把她付給Bob的幣轉到一個被她所控制的地址上,並將這個區塊接到上一個誠實節點所產生的區塊的前一個區塊,以此來忽略掉誠實節點所建立的區塊。

    這就是一個經典的雙重支付攻擊,由於兩筆交易用的是同一個幣,只能有一個交易能夠被放進區塊鏈中。

    你可能會問,既然Alice在第一筆交易中已經明確地把幣轉給了Bob的地址,這個幣的擁有者就是Bob,那Alice又怎麼來建立第二筆交易,將這個幣轉移到本身控制的地址上呢?這是否須要僞造Bob的簽名?顯然,僞造簽名是屬於竊取比特幣行爲,並不屬於雙重支付攻擊

    事實上,咱們須要清楚地瞭解一筆交易的結構。在比特幣中,一個交易就是一個數據結構,其中包含三個主要的部分:

  • 交易發起者的數字簽名
  • 一個付給目標公鑰(地址)的指令
  • 一個哈希值

    前兩個元素是很好理解的。第三個元素是一個哈希值,表明一個指針,指向先前一筆交易的輸出,代表這個幣的來源。這個指針必須指向一個已被共識鏈上某個以前的區塊所確認的交易。換句話說,任何人均可以追溯一個交易中比特幣的源頭

    記住,有兩種比較容易混淆的哈希指針:一種是在區塊內用來表示接在以前哪一個區塊後面的哈希指針;另外一種是在交易裏的一個或多個,用來指向以前的已被確認的交易的哈希指針,說明比特幣的來源。

    下圖爲雙重支付攻擊示意圖:

2.3.1 雙重支付攻擊示意圖

    雙重支付攻擊的成功與否,取決於最後哪一個區塊會被歸入長期共識鏈,是包含CA->B的區塊,仍是包含CA->A'的區塊。誠實節點會遵照「在最長有效分支後面延展」這一規則,但事實上,到底在哪一個分支後面延展,並無明確的答案。

    從道德角度看,兩個分支是大相徑庭的,第二筆交易應該是無效的(即付給本身的地址),但這個區別僅僅創建在咱們知道Alice先付給Bob而後再付給本身這個前提下的。從技術角度看,這兩筆交易均是有效的,節點沒有辦法辨別哪個是道義上合理合法的交易。

    實際上,下一個提議區塊的節點有可能選擇在那個包含雙重支付的區塊上延展,特別是,Alice若是還賄賂了一下這個節點(若是她知道這個節點是誰控制的),那這就更有可能了。這樣的話,包含雙重支付區塊的鏈就要比另外一條鏈長,那麼後續的誠實節點就會在這個鏈上繼續延展,隨着這個過程的進行,這條包含雙重支付的鏈就更可能會成爲長期共識鏈中的一部分。相反,包含付給Bob地址交易區塊的鏈就會被網絡徹底遺忘,成爲孤塊(orphan block)

    如今,讓咱們從商家Bob的角度來考慮,他如何保護本身不受雙重支付攻擊,這也是理解比特幣安全措施的重要部分。

    當Alice廣播第一筆交易——向Bob支付,Bob也在網上聽着。若是Bob很草率的話,一旦收到Alice廣播的交易並驗證了Alice的簽名有效,就馬上容許Alice下載軟件,這稱爲零驗證交易(zero confirmation transaction)。這樣一來,若是Alice控制了下一個被隨機選中的節點,那麼Alice就能夠馬上廣播第二筆交易——雙重支付,這個節點就能夠把這筆交易放進下一個區塊,並將這個區塊連接到包含第一筆交易的區塊的前一個區塊,從而產生分支。

    顯然,這是由於Bob太「草率」了。若是Bob很謹慎,那麼,他不會馬上容許Alice下載軟件,而是等待後續區塊的出現,並從這些區塊中查看Alice是否發起了雙重支付攻擊。一旦Bob發現了Alice企圖發起雙重支付攻擊(即包含雙重支付交易的區塊被加入到區塊鏈中),那麼他就會放棄這筆交易,拒絕讓Alice下載軟件。若是在接下來的幾個區塊都是創建在第一筆交易的基礎上(即被後續的幾個區塊確認),那麼Bob就能夠相信這個交易會被歸入長期共識鏈,這時候,就能夠容許Alice下載軟件了。

    以上過程以下圖所示。

 

2.3.2Bob角度看雙重支付

    總之,一個交易獲得的確認越多,它被歸入長期共識鏈的機率就越大。誠實節點老是選擇延展最長的共識鏈,由於長鏈增加更多,而包含雙重支付的那條鏈追上長鏈的機率就會變得愈來愈小。在只有一小撮惡意節點的狀況下,這個結論尤其正確,由於短鏈想要遇上長鏈,那惡意節點須要一直被選中

    此外,值得注意的是,就算包含雙重支付的鏈成爲了長期共識鏈的一部分,那也不能說系統出錯了。如前面所述,雙重支付交易只是從道德角度看是不合法的,可是從技術角度看,這筆交易是徹底合法有效的,這就如同Alice把錢從她的一個銀行卡轉到了另外一個銀行卡同樣。Bob必須確保這筆錢真正轉到了本身的地址上(即確認成爲長期共識鏈的一部分),才容許Alice下載軟件,他有責任,也應該這麼作,由於這關乎Bob本身的利益。若是雙重支付交易成爲長期共識鏈的一部分,那麼Bob就應該拒絕爲Alice提供服務。

    事實證實,雙重支付成功的機率將隨着確認數的增長而指數級降低。在比特幣生態系統中,最多見的方法是等待6次確認,並非6這個數字有什麼特殊含義,只是在等待時間和確認所感興趣交易會被歸入長期共識鏈之間有一個較好的平衡而已。在實際應用中,咱們能夠根據應用場景需求,決定確認的次數

2.4 獎勵機制與工做量證實

     前面章節主要關注比特幣去中心化的技術手段,接下來讓咱們考慮另外一個重要的部分:比特幣的獎勵機制。

    以前咱們試圖大膽地相信這樣的假設,在隨機選擇節點時,至少有50%的可能會選中誠實節點,這或許是有問題的。若是對顛覆這個過程的參與者有金錢獎勵,這個關乎誠實的假設就格外成問題,這種狀況下咱們沒法真的假設某個節點是誠實的,由於一旦有金錢獎勵,某些節點可能就會變得誠實起來。所以問題變成了:咱們是否能夠給予表現誠實的節點獎勵?相反,回想一下雙重支付的問題,咱們是否能夠懲罰那個建立雙重支付區塊的節點?

    事實上,無論是獎勵仍是懲罰,都沒有辦法在現實中執行,由於咱們不知道這些節點的真實身份,因此不能給這些節點的家庭住址寄去現金,或者抓捕那個建立雙重支付區塊的節點。但若是有某種能夠代替的數字貨幣,咱們就能夠實行獎勵機制。

    在此以前,咱們討論的都是使用抽象的算法來實現分佈式共識,並不針對某個具體的應用。如今咱們要跳出模型,創建分佈式共識過程的應用實際上就是一種貨幣,明確地說,咱們要以這種貨幣爲單位來獎勵那些表現誠實的節點

區塊獎勵

    比特幣裏有兩種不一樣的獎勵機制,其中一種爲區塊獎勵

    根據比特幣的規則,建立區塊的節點能夠在區塊中加入一筆造幣交易,並指定這筆交易的接收地址,一般,節點會指定一個屬於本身的地址。咱們能夠把這個視爲對節點在共識鏈上進行建立區塊服務的報酬。比特幣規定,每生產21萬個區塊,區塊獎勵的金額就減半,根據區塊生成的速度,大約每4年減半一次。在比特幣最初的4年,區塊獎勵是50個比特幣,如今處於第二個4年,因此如今一個節點產生一個區塊得到的獎勵是25個比特幣。

    區塊獎勵是如何作到鼓勵誠實行爲的?咋一看,一個節點不管提議了一個正當有效的區塊仍是惡意僞造,都會受到獎勵,但事實並不是如此。想一下節點是如何才能得到區塊獎勵的,造幣交易和其餘每一筆交易同樣,只有當它被歸入共識鏈,纔會被其餘節點所接受。這個設計激勵節點千方百計去讓其餘節點延展它們本身的區塊。所以若是網絡中大部分節點遵循「延展最長支鏈」的規則,那這樣的設計將激勵全部節點遵循這個規則。

    前面說到,每產生21萬個區塊,獎勵減半,所以至少在目前的規則規定下,比特幣的總數量爲2100萬個。注意,這是新比特幣被容許創造出來的惟一途徑,沒有任何其餘新增比特幣的機制。按照如今的獎勵發放速度,在2140年比特幣區塊獎勵就發完了。這是否意味着這個系統到2140年就沒法繼續運行,而且由於再也不有獎勵誠實行爲的激勵而變得不安全?事實上不是這樣的,由於區塊獎勵只是比特幣獎勵機制之一,還有另外一個獎勵機制——交易費,能夠確保系統安全運行。

交易費

    比特幣的第二個獎勵機制稱爲交易費。任何交易的製造者均可以選擇讓交易的輸出值比輸入值小第一個建立區塊並把這個交易放進區塊鏈的人能夠得到這個差額,做爲交易費。若是你是一個節點,正在建立一個包含200筆交易的區塊,那這200交易的交易費將被付到你放在區塊內的那個屬於你本身的地址。目前,這些交易費是徹底自願的,由於如今還有區塊獎勵。可是,隨着區塊獎勵逐漸發完,這些交易費就變得愈來愈重要,而且是必須的,由於用戶須要經過交易費來保障合理的服務質量。這個是很好理解的,例如Alice有一筆交易,其輸出值等於輸入值,即沒有交易費,那麼顯然的,Bob在建立區塊時,就不會把這筆交易打包進區塊,更極端的,後續全部節點在建立區塊時,都不肯意把這筆交易進行打包,那麼Alice的交易就沒法獲得確認。

    儘管目前交易費是徹底自願的,可是某種程度來講,交易費已經開始了,但目前還不清楚這個系統會如何演化,這取決於還並不完善的博弈論的研究與發展,這也是比特幣一個頗有趣的研究領域

挖礦與工做量證實

    咱們已經看到了比特幣的共識機制是如何抵抗某些攻擊,以及初步瞭解了比特幣的獎勵機制如何激勵節點傾向於作出誠實行動,可是仍然有幾個問題須要解決。

  • 第一,咱們須要相信咱們可以隨機選擇一個節點。
  • 第二,由獎勵產生的新問題:若是你們都想來分一杯羹,爭相獲取這些獎勵,整個系統會變得不穩定。
  • 第三,第二個問題複雜版本:可能會有攻擊者建立大量的女巫節點來嘗試顛覆整個共識過程。

    事實證實,以上問題是相互聯繫的,而且都有一個相同的解決方法——工做量證實(proof of work,POW)工做量證實的核心理念是:把隨機選擇節點改成根據節點佔有某種資源的比例來選取節點,而且這種資源是沒有人能夠壟斷的若是這個資源是計算能力,咱們稱之爲工做量證實。若是這個資源是某種幣的擁有量,咱們稱之爲權益證實(proof of stake,POS)

    根據計算能力來選擇節點究竟是什麼意思?換一個角度理解,咱們容許節點用它們的計算能力來互相競爭,其致使的結果是計算能力的比例決定了節點被自動選中的機率

    比特幣使用哈希函數解謎來證實工做量。任何一個提議並建立區塊的節點要想建立下一個區塊,這個節點必須找到一個臨時隨機數nonce,使得下面的式子成立:

這個式子的含義是:將臨時隨機數、前序區塊的哈希值、要打包進這個區塊的交易列表,鏈接成一整個字符串,做爲哈希函數的輸入,經過哈希計算獲得的輸出正好落在某個目標區間內。這就代表找到了一個符合條件的臨時隨機數

    當一個節點找到了這樣一個臨時隨機數,那麼它就把這個臨時隨機數放進區塊中,並把區塊廣播出去。值得注意的是,若是哈希函數具備第1章中描述的謎題友好性,那惟一解謎題的方法就是窮舉法,即嘗試足夠多的隨機數,直到成功爲止

    用這種哈希函數解謎的工做量證實方法,咱們能夠徹底捨棄隨機選取節點的方法。一旦某個節點找到了一個隨機數,那麼它就能夠建立並廣播下一個區塊。這就是比特幣系統實現徹底去中心化的方式。

難於計算

    哈希謎題有三個重要的特性,第一個特性是要有必定的難度不停嘗試解哈希謎題的過程,就是咱們所說的比特幣挖礦,參與挖礦的節點被稱爲礦工。儘管技術上每一個人均可以稱爲礦工,可是因爲挖礦的高成本致使了挖礦生態系統要消耗大量的能源。所以,並非每一個節點都是礦工。

可參數化成本

    哈希謎題的第二個特性是成本能夠經過參數來變化,而不是固定值。在比特幣網絡中,每產生2016個區塊,全部節點就從新計算一次目標區域的大小,使得後續區塊的產生時間間隔約爲10分鐘。也就是,大約兩個星期從新計算一次。

    從新調整目標區域的大小,以維持10分鐘的間隔,緣由是,若是區塊產生的時間間隔過小,將會形成不少低效率,還會失去許多優化上的好處,好比在一個區塊內放入大量的交易。10分鐘並無神奇之處,只是按照一個指數分佈來看待發現下一個區塊的時間獲得的平均時間間隔,以下圖所示。

2.4.1 發現下一個區塊所需時間的機率密度函數

    注意上圖是整個網絡內區塊被創造出來的頻率,而不是具體一個礦工發現了區塊。對於某個特定的礦工,它發現下一個區塊的平均時間是:

發現下一個區塊的平均時間 = 10分鐘/該礦工佔所有計算能力的比例

易於證實

    哈希謎題的第三個特性是驗證一個隨機數符合哈希謎題是很容易的。也就是說,一旦某個節點找到了一個隨機數並將包含這個隨機數的區塊廣播出去,那麼收到這個區塊的節點能夠快速驗證這個隨機數是否符合要求,從而證實這個節點是否正確地計算了工做量證實。

2.5 總結

    到此,咱們已經很好地理解了比特幣是如何實現去中心化的,如今總結一些關鍵點,放在一塊兒以便更好地理解。

  1. 身份。比特幣協議不須要真實身份就能夠參與,用戶只須要生成一對匿名的鑰匙,用公鑰表明身份,用私鑰進行簽名。
  2. 6次確認。咱們說一個交易被放進區塊鏈,其實說的是這筆交易被確認了許屢次,可是多少次並無一個明確的規定,6次是一個經常使用的數目。
  3. 哈希謎題和挖礦。哈希謎題具備三個特性:難於計算、可參數化成本、易於證實。同時因爲挖礦成本高,所以並非每一個節點都是礦工。
  4. 比特幣深度使用了分佈式共識的概念。在比特幣系統中,咱們須要圍繞比特幣的價值進行共識,須要對帳本狀況進行共識。甚至你擁有多少比特幣的算法也依賴於共識。也就是,當咱們說Alice擁有必定數量的比特幣,咱們的真實意思是說,在比特幣網絡中,區塊鏈中記錄的全部Alice地址上擁有的比特幣數量。這就是比特幣系統的一個終極真相:擁有比特幣就是其餘節點對給定的一方擁有這些比特幣的共識。直觀地說,在比特幣網絡中,你本身對全部人宣稱擁有1000個比特幣,這沒有用,只有你們都認爲你擁有1000個比特幣,你纔是真的擁有1000個比特幣。
相關文章
相關標籤/搜索