什么是gas
gas是“燃料”的意思霞丧,在以太坊區(qū)塊鏈上實現(xiàn)了一個EVM(以太坊虛擬機)的代碼運行環(huán)境,在鏈上執(zhí)行寫入操作時冕香,網(wǎng)絡(luò)中的每個全節(jié)點都會進(jìn)行相同的計算并存儲相同的值蛹尝,這種執(zhí)行的消耗是昂貴的,為了促使大家將能在鏈下進(jìn)行的運算都不放到鏈上進(jìn)行悉尾,也為了獎勵礦工突那,因此在鏈上每執(zhí)行一個寫入操作時,都需要支付一定的費用构眯,用gas為單位來計數(shù)愕难,每個在鏈上可以執(zhí)行的命令都設(shè)置了一個消耗的gas值,例:PUSH操作需要消耗3個gas惫霸,一次轉(zhuǎn)賬一般要消耗21000gas猫缭,gas使用ETH來支付。
注意:無論您執(zhí)行的命令是成功還是失敗壹店,都需要支付計算費用猜丹,即使失敗,節(jié)點也驗證并執(zhí)行了您的交易(計算)硅卢,因此必須和成功執(zhí)行支付一樣的費用
什么是gas limit
每個區(qū)塊有g(shù)as limit射窒,即單個區(qū)塊允許的最多gas總量藏杖,以此可以用來決定單個區(qū)塊中能打包多少筆交易。
我們每一次交易或合約調(diào)用都要設(shè)置一個gas limit脉顿,如果該次操作所使用的gas數(shù)量小于或等于您所設(shè)置的gas limit蝌麸,則會被執(zhí)行,但如果gas總消耗量超過gas limit,所有的操作都會被重置,但費用依舊會被收取寿桨。在執(zhí)行中實際消耗的gas值總和叫g(shù)as used,沒有使用完的gas會退還到原賬號误褪。
如果您嘗試將一個會使用超過當(dāng)前區(qū)塊gas limit的交易打包,則會被網(wǎng)絡(luò)拒絕碾褂,會反饋“below gas limit”
什么是gas price
在發(fā)起交易或合約調(diào)用時兽间,我們可以自己設(shè)置gas的價格,即gas price正塌,一般以GWei(1 ETH = 1000000000 GWei)為單位嘀略。通過gas price可以節(jié)省礦工費用,但也會減慢礦工打包的速度乓诽,礦工會優(yōu)先打包gas price設(shè)置高的交易帜羊,如果您想加快轉(zhuǎn)賬,您可以把gas price設(shè)置得更高鸠天,這樣您就可以插隊靠前讼育。
在定義gas price時候,推薦瀏覽https://ethgasstation.info/ 這里能看到以太坊區(qū)塊鏈上最近完成的交易對應(yīng)的消耗單價稠集、記錄時間奶段、等待時間、手續(xù)費均價等剥纷。根據(jù)自身交易需求痹籍,我們可以參考右下Safelow/Standard/Fast三個速度對應(yīng)的gasPrice。
總結(jié)
1晦鞋、gas limit蹲缠、gas price由自己設(shè)定
2、一次交易或調(diào)用實際需要消耗的gas(gas used)由該次交易或調(diào)用過程中執(zhí)行的命令決定悠垛;
3线定、實際支付的費用 = gas used * gas price,gas used 必須小于或等于gas limit鼎文。