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