標籤:中心 中介 學習 send 建立 分布式系統 忽略 size 共識演算法
區塊鏈技術中幾個關鍵問題
第一,去中心化
去中心化並不是一個時髦的名詞,簡單說就是點對點交換資訊,不存在第三方中介。我們日常使用的Internet、Email Service、SMTP等都使用了去中心化思想。
第二,分布式共識
在去中心化的分布式系統中,如果要達成受信任的記賬系統,需要考慮共識問題,也就是如何讓點對點通訊的各方達成一致,並解決叛徒或者惡意結點的問題。
分布式共識要保證所有誠實結點的輸入一致,且共識是由所有誠實結點達成的。拜占庭將軍問題是一個典型的案例,但當叛徒數量超過總人數的1/3時,共識問題就無法解決了。這些演算法都會出現一些漏洞。
在區塊鏈技術中,並未完全應用之前的分布式共識演算法,而是結合了專屬的獎勵機制和逐步確認機制。可以說中本聰在用陽謀來對付陰謀。
共識演算法簡要:
一,廣播交易。
二,誠實節點將交易打包進區塊。(礦工,看誰算力強)
三,隨機的節點廣播該區塊。
四,如果區塊中所有的交易都是有效(有驗證演算法),則其他節點接受這個區塊,並在之後建立的新區快中加入這個區塊的雜湊(鏈入演算法)。
第三,獎勵機制
比特幣是一種貨幣,大部分節點願意通過維持這個系統的正常運轉獲得獎勵,從而保證大部分結點是誠實的。
目前由兩部分組成:區塊獎勵和交易小費。
第四,逐步確認機制
區塊鏈中的共識不是立即確認,而是分兩步走。
第一步是第一個區塊(一筆交易)的確認需要等待一個小時,可以基本確定這次交易是合法的(比如,A send 10 BTC to B,來購買B的貨物,這個區塊產生後,B需要等待再次鏈入6個區塊的時間,才會完成交易,把貨物交給A,這個時間可以認為之前的待確認區塊基本無法更改)。
第二步,隨著鏈入的區塊卻來越多,代表這次交易的區塊被更改的機率越來越小,合法性逐步增強。
第五,雙重支付問題
什麼是雙重支付?
假設A廣播一條交易資訊,A send 10 BTC to B,礦工(其他節點)會將這個區塊打包鏈入區塊鏈,B發現該區塊後,如果立刻將貨物交給A(零確認機制),這時,A可能會利用自己強大的算力迅速將另一個區塊也加入區塊鏈,即A send 10 BTC to A,如果A可以成功將這個區塊加入,並且利用算力在這個區塊後繼續加入新的區塊,則真實的區塊則會被忽略。因為誠實的結點會沿著最長的區塊鏈建立的區塊。
怎麼解決的?
基本基於兩點:第一,用上面提到的逐步確認機制代替零確認機制。第二,A很難達到能夠在逐步確認機制下,仍能在假區塊後控制鏈入6個以上新區塊的算力。第三,即使真能達到這種算力,那麼整個比特幣系統就會因A這個強大BUG而失去其公信力,即信任崩塌,失去信任的BTC則一文不值,那麼掌控強大算力的A也會一無所得,成本高於收益。這也是赤裸裸的陽謀,即想玩就一起好好玩,想搗亂,大家都別玩了。
(文章內容僅為區塊鏈技術的學習記錄,如有失誤或考證不嚴謹的地方,請多多指教。)
(參考資料:https://www.zhihu.com/people/ustcsse308)
初識區塊鏈(二)