作為市值第二的老大哥的以太坊,經(jīng)常被拿來和比特幣比來比去。不知你是否發(fā)現(xiàn),和比特幣擴(kuò)容事件此起彼伏的熱鬧場面相比,以太坊似乎沒有過類擬的區(qū)塊擴(kuò)容困擾,要知道,從2017年開始,以太坊的交易量同樣也快速增長,那以太坊又是怎么搞定這個(gè)問題的呢?
我們先來看下以太坊的區(qū)塊大小變化情況(如下圖)。3月19日,以太坊區(qū)塊的平均大小為21345Bytes,約為0.02M(平均出塊時(shí)間為15秒)。
可見,以太坊的區(qū)塊大小是不固定的,背后的原因,在于它采用了完全不同于比特幣的做法。
比特幣的轉(zhuǎn)帳交易是統(tǒng)一格式,可以用固定的區(qū)塊大小來規(guī)范。以太坊則不同,V神(以太坊的創(chuàng)立者)將區(qū)塊鏈視為世界計(jì)算機(jī),在比特幣基礎(chǔ)上,以太坊實(shí)現(xiàn)了智能合約,這就意味著,除了和比特幣有同樣的轉(zhuǎn)帳功能外,以太坊網(wǎng)絡(luò)中更多的是要為大量程序提供運(yùn)算服務(wù)。
以太坊網(wǎng)絡(luò)中不同的事務(wù),所需要的計(jì)算成本各不相同。
舉個(gè)例子,對于轉(zhuǎn)帳交易類事務(wù),以太坊網(wǎng)絡(luò)的處理是相對一致的;而對于一個(gè)有Bug的程序來說,很可能會消耗掉大量的算力(比如程序中存在無限循環(huán)運(yùn)算時(shí))。以太坊明確了每筆操作會有個(gè)最低算力消耗值,而智能合約的算力消耗量則在最低消耗值基礎(chǔ)上,還需要加上所有代碼執(zhí)行的算力。實(shí)際消耗的算力只有在實(shí)際使用時(shí)才能確認(rèn)。
因此,以太坊中每筆交易的大小是不確定的。如果需要用一個(gè)相對固定的參數(shù)來規(guī)范以太坊區(qū)塊的話,最直觀的就是固定每個(gè)區(qū)塊中所包含的算力了。這個(gè)值由礦工在每個(gè)區(qū)塊中的GAS LIMIT(單位:gas)參數(shù)來表示,每個(gè)交易提交時(shí)也會有算力需求(單位:gas),乘以算力gas的價(jià)格(單位:gwei/gas),就是交易成本了(單位:gwei,gwei和eth類似于比特幣里的 聰 和BTC的關(guān)系:每 eth = 10^9 gwei)。
目前gas price和每個(gè)區(qū)塊里的GAS LIMIT數(shù)值如下圖:
提交每筆交易時(shí),需要附加愿意付出的最多成本,礦工在打包時(shí),會遵循以下規(guī)則:
· 利益導(dǎo)向——哪筆交易給的酬勞高,會優(yōu)先打包誰的,直到區(qū)塊中包含的算力值(gas limit)消耗殆盡;
· 多退少不補(bǔ)——按實(shí)際算力收取費(fèi)用,但如果給的不夠,打包時(shí)則不會將計(jì)算結(jié)果提交到鏈上,費(fèi)用也會全部收取(每筆事務(wù)的最低算力消耗值則為21000gas)。
在理解了上述規(guī)則后,擴(kuò)容問題的解決就簡單了:為了避免出現(xiàn)比特幣類似的區(qū)塊擴(kuò)容爭議,以太坊協(xié)議允許礦工每次可以將上個(gè)區(qū)塊BGL值調(diào)整正負(fù)0.0976%(=1/1024 ),按平均每15秒出塊的頻率,以快速滿足網(wǎng)絡(luò)上快速變化的計(jì)算需求。
因此,在面對突來的交易激增時(shí),以太坊表現(xiàn)出了較好的靈活性,比如在2017年6月29日,因1C0原因,交易量激增,以太坊在不到2個(gè)小時(shí)內(nèi),就實(shí)現(xiàn)了33%的增長。
下圖是以太坊網(wǎng)絡(luò)每個(gè)區(qū)塊中包含算力的變化情況,從最早的3百多萬,到目前基本穩(wěn)定在8百萬gas中。在能提供的算力增長時(shí),如有足夠的交易能消耗完,自然礦工會得到更多收益,但也需要礦工付出更多成本——更大的寬帶、更快的計(jì)算能力,所以這個(gè)過程雖然不需要多方爭議,但也受限于物理性能,客觀上不會一蹴而就。
總結(jié):
以太坊通過在每個(gè)區(qū)塊中包括相對穩(wěn)定的算力而非區(qū)塊容量的大小,實(shí)現(xiàn)了對區(qū)塊的規(guī)范化管理;并用逐塊的算力調(diào)整機(jī)制(調(diào)整正負(fù)0.0976% ),以應(yīng)對交易處理量變化情況。
以太坊已經(jīng)完成了君士坦丁堡升級,你還會繼續(xù)看好以太坊嗎?為什么?
評論
查看更多