我們常說雙花和拜占庭將軍問題,其實本質是共識問題。如果乙個去中心化網路不能解決共識問題,那就一文不值。
回到昨天說的案例:a同時將1個位元幣發給b和c。要解決這個問題,就是要讓全網的所有節點都認為a發給了b,或者都認為a發給了c,這樣就不怕那些「壞」節點搗亂了,你可以雙花,但我們大家只認乙個。
其實在前面已經用過乙個辦法,那就是先收到哪一筆就認哪一筆,但因為位元幣節點分布全球,每個節點先收到的交易是不一樣的,所以這個辦法行不通。那我們能不能找乙個權威的節點,以他收到的資訊為準,然後大家都向他索要真資訊?這是可以的,但我們又回到了「中心化」的老路子上去了,中心化的缺點之前說過了,這裡就不多說了。
那麼中本聰是怎麼解決這個問題的呢?他的辦法也是找乙個權威的節點,但是這個權威的節點是變動的,不是固定某乙個節點,這樣就避免了「中心化」。
具體怎麼實現的呢?位元幣網路大概每10分鐘就競選一次記賬權,每個節點都會先在自己的電腦上記賬,把他收到的交易資訊記到乙個賬本上,俗稱「打包」。但是,只有拿到記賬權的人,他記的賬本大家才會認,他會把這個賬本廣播給所有節點。這裡的賬本就是區塊。於是,整個過程完成,位元幣這條區塊鏈上又增加了乙個新的區塊。
這個方法說來簡單,但其實要解決好幾個問題:
1、要給記賬人一些好處,要不誰吃飽了撐的跑來記賬。
好處有兩個,一是位元幣網路憑空「創造」出一些位元幣獎勵給記賬人,這個獎勵每4年減半,現在乙個區塊獎勵12.5個(所有的位元幣最初都是這麼憑空產生的);二是從他打包的交易裡收一點手續費。但是這個手續費,交易的傳送者是可以自主決定出多少的。出得多當然交易速度就快,出得少交易就慢,因為區塊是有大小限制的,記賬人肯定優先把手續費出得多的交易打包,如果區塊裡還有空間,再考慮出得少的,如果沒空間了,出得少的就只能往後排了,最後很有可能這個記賬人不記,那個記賬人也不記,乙個個的10分鐘就這麼過去了,交易當然就慢了。
2、不給好處沒人記,但給了好處,肯定又一堆人搶著記,這時候的問題就變成了用乙個什麼辦法選出乙個記賬人。
辦法就是解題,誰先解出來誰就負責記賬,拿到獎賞。每次的題型都是一樣的,考的都是雜湊,但題目不一樣。我們在講雜湊的那一篇說過,把一堆資訊雜湊出一串固定長度的資料很容易,但反過來從雜湊值反推原始值是不可能的,只能用笨辦法找各種原始值乙個個去試,誰試得快誰就有優勢,所以解題拼的是cpu的蠻力,這個蠻力也叫「算力」。每個區塊裡都有乙個「難度係數」,這個難度係數決定了下乙個區塊的題目有多難,如果全網的算力太高了,那就把難度調高一點,反之則調低一點,反正就是保證全網在10分鐘左右解出這道題,也就是保證大概10分鐘出乙個塊。這樣就保證了位元幣產出的穩定,既不會因為太快而通貨膨脹,又不會因為太慢而通貨緊縮。
區塊鏈共識機制一 POW POS DPOS
念 夕 關注 去中心化系統維繫的核心,在於參與者達成的共識。共識是博弈後的產出,既是博弈,就是平衡,參與到系統中的各方,都是唯利是圖的,名 錢 權,各有所需。區塊鏈技術發展至今,遇到了各種如擁堵,中心化,浪費資源等問題,各種解決方案層出不窮,也出現了除位元幣使用的pow機制外的其他幾種共識機制。顧名...
《區塊鏈寶典》共識演算法(一)
前言 區塊鏈系統是一種分布式架構系統,分布式系統中,多個主機通過非同步通訊的方式組成網路集群,非同步通訊要保證每個主機達成一致的狀態共識。區塊鏈這種基於網際網路的去中心化系統,需要解決的首要問題就是如何實現不同節點上資料的一致性和正確性,這就需要借鑑分布式系統中實現狀態共識的演算法。可以毫不誇張的講...
區塊鏈2 0筆記(一)
16年1月20日,中國人民銀行數字貨幣研討會在北京召開。只有央行發行的數字貨幣才是合法的貨幣。區塊鏈維基百科定義 乙個區塊鏈就是乙個基於位元幣協議的不需要許可的分布式資料庫,它維護了乙個持續增長的不可被篡改和修改的資料記錄列表,即使對於資料庫節點的運營者也是如此。區塊鏈究竟是什麼?區塊鏈實現的是一種...