下圖闡釋了在一種區塊生成間隔較小(區塊生成率大於區塊傳播延遲)的網路中,區塊鏈網路高度分叉,此時攻擊者可以秘密創造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,那麼有沒有可能進一步提升?
同時由於把非主鏈的區塊拋棄了,只有主鏈的區塊才有出塊獎勵,這樣的激勵機制會導致礦工不願意貢獻算力,這又改如何解決?