以太坊如何控制區塊大小?| 白話區塊鏈入門092

買賣虛擬貨幣

作者 | Fiona
出品|白話區塊鏈(ID:hellobtc)

作為市值第二的老大哥的以太坊,經常被拿來和比特幣比來比去。不知你是否發現,和比特幣擴容事件此起彼伏的熱鬧場面相比,以太坊似乎沒有過類擬的區塊擴容困擾,要知道,從2017年開始,以太坊的交易量同樣也快速增長,那以太坊又是怎麼搞定這個問題的呢?

我們先來看下以太坊的區塊大小變化情況(如下圖)。3月19日,以太坊區塊的平均大小為21345Bytes,約為0.02M(平均出塊時間為15秒)

可見,以太坊的區塊大小是不固定的,背後的原因,在於它採用了完全不同於比特幣的做法。

比特幣的轉帳交易是統一格式,可以用固定的區塊大小來規範。以太坊則不同,V神(以太坊的創立者)將區塊鏈視為世界計算機,在比特幣基礎上,以太坊實現了智慧合約,這就意味著,除了和比特幣有同樣的轉帳功能外,以太坊網路中更多的是要為大量程式提供運算服務。

以太坊網路中不同的事務,所需要的計算成本各不相同。

舉個例子,對於轉帳交易類事務,以太坊網路的處理是相對一致的;而對於一個有Bug的程式來說,很可能會消耗掉大量的算力(比如程式中存在無限迴圈運算時)。以太坊明確了每筆操作會有個最低算力消耗值,而智慧合約的算力消耗量則在最低消耗值基礎上,還需要加上所有程式碼執行的算力。實際消耗的算力只有在實際使用時才能確認

因此,以太坊中每筆交易的大小是不確定的。如果需要用一個相對固定的引數來規範以太坊區塊的話,最直觀的就是固定每個區塊中所包含的算力了。這個值由礦工在每個區塊中的GAS LIMIT(單位:gas)引數來表示,每個交易提交時也會有算力需求(單位:gas),乘以算力gas的價格(單位:gwei/gas),就是交易成本了(單位:gwei,gwei和eth類似於比特幣裡的 聰 和BTC的關係:每 eth = 10^9 gwei)。

目前gas price和每個區塊裡的GAS LIMIT數值如下圖:

▲ 資料來源:https://ethstats.net

提交每筆交易時,需要附加願意付出的最多成本,礦工在打包時,會遵循以下規則:

  • 利益導向——哪筆交易給的酬勞高,會優先打包誰的,直到區塊中包含的算力值(gas limit)消耗殆盡;

  • 多退少不補——按實際算力收取費用,但如果給的不夠,打包時則不會將計算結果提交到鏈上,費用也會全部收取(每筆事務的最低算力消耗值則為21000gas)

在理解了上述規則後,擴容問題的解決就簡單了:為了避免出現比特幣類似的區塊擴容爭議,以太坊協議允許礦工每次可以將上個區塊BGL值調整正負0.0976%(=1/1024 ),按平均每15秒出塊的頻率,以快速滿足網路上快速變化的計算需求。

因此,在面對突來的交易激增時,以太坊表現出了較好的靈活性,比如在2017年6月29日,因1C0原因,交易量激增,以太坊在不到2個小時內,就實現了33%的增長。

下圖是以太坊網路每個區塊中包含算力的變化情況,從最早的3百多萬,到目前基本穩定在8百萬gas中。在能提供的算力增長時,如有足夠的交易能消耗完,自然礦工會得到更多收益,但也需要礦工付出更多成本——更大的寬頻、更快的計算能力,所以這個過程雖然不需要多方爭議,但也受限於物理效能,客觀上不會一蹴而就。

總結

以太坊透過在每個區塊中包括相對穩定的算力而非區塊容量的大小,實現了對區塊的規範化管理;並用逐塊的算力調整機制(調整正負0.0976% ),以應對交易處理量變化情況。

以太坊已經完成了君士坦丁堡升級,你還會繼續看好以太坊嗎?為什麼?歡迎在留言區留言。

免責聲明:

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

推荐阅读

;