共識演算法解讀-PoW演算法之GHOST

買賣虛擬貨幣
問題引入:高吞吐量下比特幣的安全性如何?比特幣為了保障其安全性,採用最長鏈規則,並固定了區塊大小和出塊時間間隔,從而導致其低吞吐量(<10Tps)和長時間區塊確認間隔(6個區塊,每個區塊平均需要10分鐘),這一直以來飽受詬病,影響了比特幣網路的大規模使用。一開始人們思考的是在比特幣最長鏈的規則上,透過增加區塊大小(1M->4M)和減小出塊間隔來增大吞吐量,但是這卻帶來了三個很大的問題:•不斷的分叉!分叉也就意味著安全性降低,容易引起雙花攻擊。•區塊獎勵受網路延遲影響:整個網路的區塊獎勵不單單與算力有關,網路延遲較低的節點更有可能獲得出塊獎勵。•容易受到自私挖礦攻擊:惡意節點出塊後先不公佈,直到發現比主鏈長時再公佈

下圖闡釋了在一種區塊生成間隔較小(區塊生成率大於區塊傳播延遲)的網路中,區塊鏈網路高度分叉,此時攻擊者可以秘密創造6個區塊(由紅色虛線標記),從而超過主鏈的場景。

於是,研究人員開始思考,如何在保證高吞吐量的同時,還能保證安全性?

2015年,以色列的學者Yonatan Sompolinsky和Aviv Zohar就提出了一種The Greedy Heaviest-Observed Sub-Tree (GHOST)貪婪最重可觀測子樹演算法,以解決這個問題。

論文連結:共識演算法相關paper:Secure High-Rate Transaction Processing in Bitcoin[1]

那麼GHOST又是如何做的?

GHOST的思路很簡單,它對比特幣的最長鏈規則進行更改,在每次分叉的時候選取擁有最重子樹的分叉節點。舉例來說(參考上圖),就是在0處分叉為1B和1A時,1A的子樹(它進行自私挖礦)共有6個塊(包括1A塊),1B的子樹有12個塊,12>6, 所以選1B為主鏈的塊。這樣就減輕了了分叉帶來的問題,使得主鏈不斷向後增長。

也就是說,主鏈之外的區塊也被計入了算力。具體的演算法如下,輸入整個樹結構的區塊鏈,輸出最終主鏈的最後一個區塊B:

該演算法,從創世區塊(Genesis)開始,每次分叉就選取最重子樹,直到確定完主鏈的序。還是拿圖中的例子,最終選取的主鏈是 0, 1B, 2C, 3D, 4B。

那麼GHOST能否保證能夠唯一的確定主鏈嗎?相對於比特幣他的安全性又如何?GHOST演算法對吞吐量的影響又如何呢?這就涉及到GHOST的特性。

GHOST特性

1.收斂特性:任何一個區塊,經過足夠長的時間,最終會被主鏈完全丟棄或者採用。也就是經過足夠長的時間,任何節點的主鏈會是一樣的。
2.抗51%攻擊:在有限的時間內,攻擊者將任意在主鏈區塊B,替換到鏈下的概率接近於0。
3.吞吐量和安全性:如下圖,隨著區塊生成速度λ(每秒產生的區塊數)增加,GHOST的吞吐量相對於最長鏈Longest Chain規則沒有太多下降,並且安全性沒有任何下降,而最長鏈的安全性卻指數下降

前路

GHOST在保證安全性的前提,提升了TPS,那麼有沒有可能進一步提升?

同時由於把非主鏈的區塊拋棄了,只有主鏈的區塊才有出塊獎勵,這樣的激勵機制會導致礦工不願意貢獻算力,這又改如何解決?

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;