比特幣&數字貨幣(week2)筆記

第二周雖然沒有作業,但是這周的課程解答了長期以來困擾我的:什麼是挖礦?這周課程把比特幣的整體流程理了一遍。

接上周的內容,比特幣網路需要解決去中心化的問題,做為一個分散式P2P網路,首先需要解決的就是一致性問題。

假設理想情況:

比特幣的每次交易,發起者(也就是支付者)都會廣播這次交易的接受者、比特幣數量等交易信息給比特幣網路里的所有節點。而每個節點收到廣播的交易以後,會檢查交易的合法性:包括是否有貨幣擁有者的簽名、貨幣數量是否正確等,如果該節點認為這次交易合法,就會在這次交易上簽名表示同意,再轉而傳播給其他節點。

所以每個節點上可能會有兩種交易記錄,一種是所有節點都認可了的記錄;另一種是還沒有同步到每個節點的記錄,每個節點會不同。

但是事實上分散式網路中不可能解決一致性問題,而比特幣解決該問題的方式主要有兩點:

  • 給節點獎勵

  • 擁抱隨機性

比特幣解決一致性的流程是:

  1. 新的交易會被交易發起者廣播到網路所有節點

  2. 每一個節點都會把自己收到的交易收集在「block」里,並把多條交易記錄構建成一個「block chain」

  3. 每隔一段時間,會有一個隨機的節點把自己收集到的block chain廣播到整個網路

  4. 其他節點收到了廣播的block chain後會檢查這裡面每一個block是否是合法的(簽名,數量等)

  5. 其他節點在認為block合法後會簽署自己的簽名表示認可

在這種情況下,我們再重新考慮double spending attack的問題,也就是貨幣所有者是否可以把貨幣合法地使用兩次。

  • 假設Alice把比特幣支付給Bob,Alice發起了交易並且把這條交易廣播到了整個網路,Bob收到了這個交易記錄,並且認為交易成功,把貨物付給了Alice,這條交易對應block 1。

  • 於是Alice又廣播了一條交易記錄,把本來支付給Bob的貨幣支付給了屬於Alice的另一個節點,並且廣播到了整個網路,這條交易對應 block 2。

於是整個網路的其他節點收到了屬於Alice比特幣的兩條交易記錄,而這兩條交易記錄在它們看來簽名和數量都是合法的,那麼被隨機選擇到的節點會廣播用哪一條交易的block構成的block chain呢。

在比特幣網路中,節點的規則是以較長的Block chain優先,也就是說block 1和block2 所在的block chain,哪一條更長(block1、block2哪一個後面附加了更多的block),哪一個就會被廣播給更多的節點。

考慮到這個特點,交易的接受方不會在收到本次交易對應的block廣播就認為交易成功,而是會等到這次交易對應的block後面附加了足夠多的其他的block,才會認為交易成功,通常這個block數為6次,也就是6次認證。

假如Bob在收到了block1+另外6個block 的 block chain後才認為交易成功,Alice很難再次發起一個double spending attack,因為Alice沒有辦法在block 2後面附加其他的block,因為網路里大部分其他節點都已經認可了block1+另外6個block chain的交易記錄,並且按照block chain 長度優先的原則,剩下的節點也會優先接受block1所在的block chain。

比特幣的安全性主要是以下兩點:

加密演算法來保證交易的合法性

一致性(block chain)來避免出現double spending attack

我們回到:給節點獎勵&擁抱隨機性

給節點獎勵

比特幣網路中遵守規則的節點越多,比特幣網路就越安全,因此比特幣引入了兩個獎勵機制來獎勵被選擇廣播block chain的節點:

  • 通過增加一條產生屬於block創建者的 新比特幣記錄,這是產生新比特幣的唯一方式

  • 每一筆交易都必須支付額外的小費,小費被支付給block 創建者

產生新比特幣的獎勵曾經是50,後來變成了25。而預計在一定時間後比特幣將達到上限,也就無法再通過產生新比特幣的方式獎勵節點。

擁抱隨機性

另一個問題是,被隨機選擇出廣播block chain的節點是如何隨機選擇出來的。

每一個節點要創建block時,必須在交易信息transinfo之外增加一段信息,假設稱為nounce,而transinfo+nounce的hash值必須滿足某個特定的條件,找到能使transinfo+nounce的hash值滿足特定條件的nounce,才可以創建出block。

由於hash的特點,要找到對應的nounce只能通過不斷地嘗試,這個過程就被稱為挖礦,許多節點都在競爭解出nounce來創建block,獲得發布block chain贏得獎勵的機會。

而解開這個hash謎題需要進行很多的運算,耗費極大的電力,因此不停運算hash謎題來試圖創建block的節點就被稱為礦機,每一個節點都可以成為礦機。

如果挖礦獲得的比特幣獎勵大於運算所產生的電力費用,那麼礦工們就是盈利的。

比特幣的整個網路會控制成功創建一個block所需的相對平均時間,來調節整個比特幣網路的運行。


推薦閱讀:

寵物行業值得投資的地方有這些
投機成功的基礎是,假設傻B仍會繼續犯過去犯過的錯誤!
有不諧者吾擊之——利用市場錯誤「笑傲股林」(二)
你買的白茶真的值得收藏嘛?
沒個600萬,你還是別做理財師了!

TAG:比特币Bitcoin | Coursera | 投资 |