區塊鏈擴容一直是區塊鏈團隊的重點研究方向。由於比特幣對區塊大小的設定是固定的,並且中本聰將最初大小值限定爲1M,但隨着交易量的增長,網絡擁堵狀況也愈漸嚴重,最終也致使了比特幣的分叉。算法
區別於比特幣固定區塊大小的設定,以太坊則引入了燃料(gas)的概念,並採起了區塊燃料限制(Block Gas Limit)動態調整機制,即根據交易量大小來調節Block Gas Limit。一般咱們以TPS來衡量區塊鏈的交易處理能力, Block Gas Limit值越大則意味着容許區塊打包的交易量也就越多,也就是說網絡擁有越高的TPS。因此,以太坊的擴容方案之一就是提升Gas值限制,以此來緩解網絡擁堵的狀況。網絡
Gas Limit動態調整機制性能
以太坊主要經過礦工投票機制來決定目標燃料限制(TGL,Target Gas Limit),同時不能小於最小燃料限制(MGL,Min Gas Limit)。而其動態調整機制主要是在區塊gas使用量超過父區塊Block Gas Limit的2/3時,全網對當前區塊的Block Gas Limit進行適當提高,但不容許超過TGL。區塊鏈
然而,經過提高Block Gas Limit的擴容方案在實現上也有弊端。若Block Gas Limit無上限,那麼區塊在進行廣播的時候一定會有時延問題。越高的TGL也就意味着Block Gas Limit值越大,被容許打包到區塊之中的交易越多,消耗的gas也就越多,其同步到整個區塊鏈網絡所需的時間也就越長,那麼該區塊也頗有可能由於時延問題而競爭失敗,最終被拋棄而成爲叔塊(Uncle Block)。根據Vitalik Buterin的腳本實驗分析,被打包的區塊每增長1,000,000 gas價值的交易,其變爲叔塊的機率就會增長約1.86%。一方面,由於數塊只能得到75%的區塊獎勵,因此礦工由於利益問題也不肯意選擇提高TGL。另外一方面,在提高TGL的同時也須要面臨算力中心化的問題。就目前來講,還沒有找到合適的數學算法來對TGL進行設定,其決定權依然歸屬於礦工,因此區塊燃料限制動態調整機制仍需完善。優化
Gas相關的計算加密
Gas主要用來支付交易的手續費,其計算也相對簡單。當咱們在進行交易時,gas的最大消耗限制須要由交易者自行設置,即gas limit。那麼咱們能夠獲得交易的最大gas費用計算公式,以下所示spa
其中,表示容許消耗的gas最大值,表示單位gas的價值,二者相乘即爲最大的交易手續費。舉例來講,若Gas Limit=50,000,Gas Price=20Gwei,那麼所需最高手續費(以最大消耗量來算)爲0.001ETH。其中3d
然而在整個交易執行過程當中,還可能涉及其餘費用,如合約建立費用等。那麼實際消耗的gas計算公式,以下所示blog
其中,Predifined Gas Fee表示執行交易預約費用,Storage Fee表示隨交易發送的數據的gas費用(零字節和非零字節會根據對應的設定值消耗必定的gas量),Contract Creation表示合約建立交易還需額外的費用。事件
那麼,交易完成後剩餘的gas即爲交易最大gas費用減去使用的Intrinsic Gas
其中,Gas Limit≧Intrinsic Gas,待交易執行完畢,剩餘的gas也會退還給交易者。
在費用估算上,對交易者而言,前期gas費用能夠取最大gas費用與傳送總值的總和。
其中,Upfront Cost表示交易執行的前期費用,Gas Limit表示gas消耗的最大量,Gas Price表示gas單價,Value表示發送方傳送給接收方的總值。
對於以太坊網絡來講,「網絡又堵了」經常被拿出來討論。從2017年的加密貓堵死網絡事件到近期的交易所刷單大擁堵事件,或者是面對黑客的DDOS攻擊,以太坊也嘗試經過調整Gas值限制來解決網絡堵塞問題,雖然能夠見到暫時性的成效,但問題並無徹底解決,仍需經過其餘擴容方案來優化網絡性能,從而有效解決網絡大擁堵問題。