區塊鏈共識算法解讀: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

那麼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,那麼有沒有可能進一步提升?

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

敬請關注,後續的PoW共識算法解讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章