以太坊的GHOST協議是如何提高交易吞吐量的?

交易吞吐量是區塊鏈技術發展的主要制約因素!

對於比特幣而言,一直被人詬病的地方就在於交易吞吐量,比特幣每秒的交易吞吐裡只有7筆/秒,所以後續的區塊鏈項目,比如以太坊、EOS等,都致力於交易吞吐裡的提升,尤其是EOS,其所宣傳的每秒能支撐百萬級的交易量也是EOS成為明星項目的主要原因之一。所以可以毫不誇張的話,誰能在兼顧安全穩定、去中心化的原則下,還能解決交易吞吐裡的問題,誰就是區塊鏈世界中的下一個神人”中本聰“!

區塊鏈中的交易吞吐量受限於兩方面:一是區塊的大小,另外一個是區塊的出塊速度

以太坊通過提高出塊速度,提高了交易吞吐量,但是卻導致了大量的臨時分叉!

所以為了提高以太坊的交易吞吐量,以太坊將出塊的時間降低到了15秒。與比特幣10分鐘的出塊時間相比,以太坊的出塊速度提高了40倍

以太坊的GHOST協議是如何提高交易吞吐量的?

但是降低了出塊時間,也帶來了一些問題:因為以太坊和比特幣一樣,都是運行在應用層上的一個協議,底層是一個p2p的網絡,而p2p網絡的一個缺點就是:區塊傳輸時間比較長。所以在發佈一個區塊後,區塊在網絡上的傳輸時間是比較長的,可能長達十幾秒的時間,也就可能超過以太坊的區塊產生時間,對於比特幣來說,10分鐘的時間,也就是600秒,是有足夠的時間允許區塊傳播到網絡上的其他節點。

在礦工挖取區塊的過程中,有可能會有兩個區塊同時產生,同時廣播到網絡中,這就是臨時分叉,但是由於以太坊的出塊時間非常短,所以在以太坊中,臨時性分叉就會形成常態,而且分叉的數目也會更多

因為在15秒的時間之內,其他節點還沒有收到你發佈的區塊,還是在沿著原來的區塊鏈往下挖,所以在收到你的區塊之前,其他節點可能已經自己已經挖出了區塊。在比特幣系統中,系統只承認最長的區塊鏈,也只有在最長區塊鏈上的區塊才能使礦工得到虛擬幣獎勵,不是最長區塊鏈上的區塊,礦工就不能獲得虛擬幣的獎勵。

以太坊的GHOST協議是如何提高交易吞吐量的?

在上圖中,不是最長鏈上的區塊稱為orphan block,在比特幣系統中,由於這些塊不在最長合法鏈上,所以礦工拿不到比特幣的獎勵,對於比特幣系統來說,出現這種臨時性分叉的情況不是很多,所以對於礦工來說,挖到orphan block而得不到獎勵的規定是可以接受的。

但是對於以太坊來說,由於以太坊的出塊時間很短,所以會出現大量的臨時分叉,如果以太坊也像比特幣系統一樣處理,意味著礦工挖到的區塊有很大概率是白挖的,所以對於礦工來說不是很公平。尤其是對於個體礦工來說,會更為不公平。原因在哪呢,我們解釋一下,正常的情況下,區塊鏈中挖到區塊的概率應該與所佔算力的比率是成正比的,個人礦工在挖出區塊後,寄希望於別的礦工能在自己的區塊後繼續挖塊,使自己的區塊能成為最長合法鏈上的一個塊,但是礦池在算力以及網絡帶寬上比個人礦工相比具有巨大的優勢,而且在以太坊中區塊的產生時間為15秒,所以礦池在沒有拿到別人廣播的區塊時,自己可能就挖出了區塊,所以在這種情況下,礦池就會選擇在自己挖出的區塊後繼續挖取區塊,所以就可能導致礦池挖出的區塊鏈會越來越長,廣播到網絡後,就會成為最長合法鏈。所以,比如礦池佔全網算力的20%,但是礦池挖出的區塊成為合法鏈上區塊的概率就會超過20%。所以對個人礦工來說,就會更加的不公平。

以太坊通過使用GHOST協議來解決臨時分叉而帶來的礦工激勵問題

以太坊的GHOST協議是如何提高交易吞吐量的?

在以太坊中,orphan block稱之為uncle block。之所以稱之為uncle block,是因為相對於最長合法鏈上的後續區塊來說,是它的叔父區塊。

在ghost協議中規定,在上圖的藍色區塊發佈時,可以將uncle block包含進來,同時uncle block可以得到7/8個區塊的獎勵,目前以太坊的區塊獎勵是3個以太幣,所以就是3*7/8個以太幣,也就是說,

礦工挖出了區塊,雖然最終沒有放在最長合法鏈上,但是也可以得到一定的區塊獎勵。

對於藍色區塊,為什麼要包含uncle block,如果包含一個uncle block,則可以額外獲得1/32的區塊獎勵,最多包含2個uncle block,再加上挖到區塊的3個ETH的獎勵,所以對於藍色區塊來說,上面的公式的結果是最終的區塊獎勵數量。

所以ghost協議的一個重要思想就是對於那些挖到區塊但是沒有加入最長合法鏈上的礦工也進行區塊獎勵,同時通過以包含uncle block的方式使臨時分叉能快速的進行合併。從而在解決臨時分叉的情況下,提高了交易吞吐量。不過可惜的是,即使這樣,以太坊的交易吞吐量也只是30-40筆/秒,還遠遠達不到工業級生產的要求。


分享到:


相關文章: