作者:Rosario Borgesi
翻譯:火火,白話區(qū)塊鏈
以太坊區(qū)塊鏈徹底改變了去中心化應用程序和智能合約,但每筆交易都會產(chǎn)生以太坊gas費。在本指南中,我們將揭開以太坊gas費的神秘面紗,了解其基本原理、計算方法、影響成本的因素以及在控制成本的同時優(yōu)化交易的有效策略。
1、了解以太坊 Gas
gas是以太坊區(qū)塊鏈上交易和智能合約執(zhí)行的燃料。它代表處理這些操作所需的計算工作,并以稱為 gwei 的小面額以太幣定價(1 gwei = 10^-9 ETH)。
換句話說,gas是計算工作的計量單位,相當于一定量的以太幣。
這就是為什么 gas 費在以太坊生態(tài)系統(tǒng)中至關重要:
1)資源分配:gas 費充當分配網(wǎng)絡資源的機制。通過要求用戶為其使用的計算能力和存儲空間付費,網(wǎng)絡確保公平訪問并防止資源濫用。
2)防止網(wǎng)絡垃圾郵件:如果沒有gas費,惡意行為者可能會用垃圾郵件交易淹沒網(wǎng)絡,導致系統(tǒng)超載并減慢合法交易的速度。gas費使得向網(wǎng)絡發(fā)送垃圾郵件成本高昂且在經(jīng)濟上不切實際。
3)激勵礦工:gas費激勵礦工將交易納入?yún)^(qū)塊中。礦工優(yōu)先考慮gas費較高的交易,鼓勵用戶為及時交易處理提供有競爭力的費用。
4)網(wǎng)絡安全:gas費用有助于以太坊網(wǎng)絡的安全。他們通過要求用戶支付所涉及的計算步驟來確保交易和智能合約的正確執(zhí)行。這可以阻止?jié)撛诘墓艉吐┒础?/p>
5)可擴展性和效率:通過為每個操作附加成本,gas費鼓勵開發(fā)人員編寫高效且優(yōu)化的代碼。對效率的關注對于擴展網(wǎng)絡至關重要,因為它鼓勵最佳實踐并減少區(qū)塊鏈的壓力。
6)經(jīng)濟模型:gas費是以太坊經(jīng)濟模型的一個組成部分。它們促進了可持續(xù)的生態(tài)系統(tǒng),讓礦工的努力得到補償,促進網(wǎng)絡的增長和穩(wěn)定。
2、Gas 費的組成部分
了解構成以太坊汽油費的主要組成部分:
1)基本費用:由協(xié)議設定,您必須至少支付此金額才能使您的交易被視為有效。
2)優(yōu)先費:是添加到基本費用中的小費,以使您的交易對驗證者有吸引力,以便他們選擇將其包含在下一個區(qū)塊中。
僅支付基本費用的交易在技術上是有效的,但不太可能被包含在內(nèi),因為它沒有激勵驗證者選擇它。
優(yōu)先費用取決于您發(fā)送交易時的網(wǎng)絡使用情況:如果需求量很大,那么您可能需要將優(yōu)先費用設置得更高,但當需求較少時,您可以支付更少的費用。
3、交易費用計算
例如,假設喬丹必須向泰勒支付 1 ETH。一筆ETH轉賬需要21,000單位的gas,基本費用為10 gwei。喬丹包括 2 gwei 的小費。
總費用現(xiàn)在等于:
units of gas used * (base fee + priority fee)
其中base fee是協(xié)議設置的值, 是priority fee用戶設置的作為驗證器提示的值。
即21,000 * (10 + 2) = 252,000 gwei(0.000252 ETH)。
當喬丹匯款時,1.000252 ETH 將從喬丹的賬戶中扣除。泰勒將獲得 1.0000 ETH。驗證者收到 0.000042 ETH 的小費。0.00021 ETHbase fee被燒毀,這意味著它將被從流通中移除。
4、讀取和寫入數(shù)據(jù)
以太坊網(wǎng)絡在向網(wǎng)絡寫入數(shù)據(jù)和從網(wǎng)絡讀取數(shù)據(jù)之間進行了區(qū)分,這種區(qū)別在您編寫應用程序的方式中起著重要作用。一般來說,寫入數(shù)據(jù)稱為事務,而讀取數(shù)據(jù)稱為調(diào)用。
1)事務:事務在寫入或更改數(shù)據(jù)時會更改網(wǎng)絡狀態(tài)。它可以像將以太幣發(fā)送到另一個帳戶一樣簡單,也可以像執(zhí)行合約功能或向網(wǎng)絡添加新合約一樣復雜。為了進行交易,我們必須支付gas費,并且它們需要時間來處理。
2)調(diào)用:調(diào)用可用于在網(wǎng)絡上執(zhí)行代碼,但不會永久更改數(shù)據(jù)。它們基本上用于讀取數(shù)據(jù),因此可以免費運行(不花費gas)。當您通過調(diào)用執(zhí)行合約函數(shù)時,您將立即收到返回值。
5、交易對象
您可以通過在交易對象中設置以下參數(shù)來設置提交交易時愿意支付的gas量:
1)GasLimit:交易可以消耗的最大 Gas 單位量。EVM 指定每個計算步驟所需的氣體單位。
2)maxPriorityFeePerGas:作為驗證器小費包含的消耗 Gas 的最高價格。
3)maxFeePerGas:愿意為交易支付的每單位 Gas 的最高費用(包括baseFeePerGas和maxPriorityFeePerGas)
6、倫敦升級 (EIP-1559)
在倫敦升級之前,費用的計算沒有區(qū)分基本費用和優(yōu)先費用。
在交易對象中我們可以設置:
1)GasLimit/startGas:交易可以消耗的最大 Gas 單位量。和之前一樣。
2)GasPrice:我們愿意為每單位 Gas 支付的 wei 金額。
假設 Alice 必須向 Bob 支付 1 ETH。交易中,gas限額為21,000單位,gas價格為200 gwei。
總費用為:Gas units (limit) * Gas price per unit即21,000 * 200 = 4,200,000 gwei0.0042 ETH
7、復雜交易中的費用計算
為了更好地了解交易成本,我們可以查看EVM 操作碼。那么我們來計算一下執(zhí)行這個函數(shù)的成本:
函數(shù)doMath ( uint a, uint b ) { a + b; b - a; a * b; a== 0;}
a + b (ADD) 成本3 個氣體單位b - a (SUB) 成本3 個 氣體單位a * b (MUL)成本 5 個氣體單位a == 0 (EQ) 成本3 個氣體單位
所以這筆交易的總成本是14個gas單位。
需要理解的重要一點是,如果在交易對象中我們指定的gasLimit等于6,則只會執(zhí)行前兩個操作,然后交易將被停止,并且支付的gasFee將不會恢復,因為我們必須支付完成的工作。
因此,如果我們必須將參數(shù)gasLimit設置為一個足夠的值,以便我們的交易能夠被執(zhí)行并且不會丟失我們的以太幣。
在這個特定的例子中,計算天然氣費相對簡單。然而,對于更復雜的函數(shù),尤其是那些涉及不同大小變量循環(huán)的函數(shù),提前確定天然氣費用可能具有挑戰(zhàn)性。
在這種情況下,我們可以利用estimateGas兩個最著名的開發(fā)庫提供的功能:ethers.js和web3.js。該函數(shù)允許我們估計與在以太坊區(qū)塊鏈上執(zhí)行特定函數(shù)相關的天然氣成本。
然而值得提醒的是,設置gasLimit和maxFeePerGas始終是一個好習慣,以避免執(zhí)行會消耗太多以太幣的交易。
8、降低 Gas 費的策略1)利用第 2 層
Layer-2 是構建在以太坊區(qū)塊鏈之上的輔助框架或協(xié)議。這些解決方案旨在通過處理以太坊主鏈(稱為第 1 層)之外的大多數(shù)交易來增強可擴展性并優(yōu)化交易速度。Layer-1 涉及基礎以太坊區(qū)塊鏈,其中交易成本高昂,并且由于高需求可能面臨可擴展性問題。
在各種 Layer-2 方法中,有Arbitrum和Optimism中采用的 Rollups 。
Rollups 將多個交易聚合為單個交易,壓縮數(shù)據(jù)并將其存儲在以太坊主網(wǎng)上。這顯著降低了 gas 費用并提高了可擴展性,因為單個主網(wǎng)交易可以代表大量的鏈下交易。
2)在網(wǎng)絡擁塞減少期間運行
如果我們想在第一層上操作,節(jié)省費用的解決方案似乎是顯而易見的:我們必須在網(wǎng)絡不太擁堵的時候發(fā)出交易。
事實上,以太坊區(qū)塊鏈每秒只允許大約 20-40 筆交易 (TPS)(這是所有以太坊用戶的總數(shù));當達到限制時,用戶被迫相互競爭以獲取其交易,這會導致費用上漲。
要檢查網(wǎng)絡負載,我們可以使用Etherscan。
3)盡量減少交易
以太坊區(qū)塊鏈上的每筆交易都會產(chǎn)生成本,稱為gas費。為了減少這些費用,必須盡可能將多個操作合并到一個交易中。例如,將多個Token傳輸或與智能合約的交互捆綁到單個交易中可以顯著降低總體成本。
4)優(yōu)化代碼復雜性
以太坊交易涉及執(zhí)行存儲在區(qū)塊鏈上的代碼。復雜且低效的代碼需要更多的計算資源,從而導致更高的gas費用。通過優(yōu)化和簡化代碼,您可以減少執(zhí)行所需的gas。這涉及高效的編碼實踐、最大限度地減少冗余計算以及利用高效的編程技術。
5)節(jié)能智能合約
在開發(fā)智能合約時,以最小化天然氣消耗的方式設計它們至關重要。這包括避免不必要的存儲操作、優(yōu)化循環(huán)以及降低合約邏輯的復雜性。在開發(fā)過程中應利用氣體優(yōu)化工具和最佳實踐。
9、結論
總之,gas費是以太坊的重要組成部分,它維護網(wǎng)絡完整性、激勵正確使用、確保安全性并支持可擴展性,所有這些共同有助于構建高效且可持續(xù)的區(qū)塊鏈網(wǎng)絡。
在本文中,我們探討了 gas 費的計算和估算,深入了解了減輕其影響的各種策略。通過采用優(yōu)化技術、利用 Layer2 解決方案以及實施節(jié)省 gas 的智能合約代碼,用戶和開發(fā)人員可以有效降低交易成本并提高以太坊網(wǎng)絡上應用程序的整體效率。
通過對 gas 費用和管理它們的實用策略有了更深入的了解,您現(xiàn)在已經(jīng)做好了駕馭以太坊環(huán)境并優(yōu)化您的編碼工作的準備。祝您編碼愉快,愿您的以太坊交互既具有成本效益又具有創(chuàng)新性!
免責聲明:本文不構成投資建議,用戶應考慮本文中的任何意見、觀點或結論是否符合其特定狀況,及遵守所在國家和地區(qū)的相關法律法規(guī)。
歡迎轉載分享!
轉載請注明本文地址:
如有文章侵犯了您的權利,請聯(lián)系本站站長,我們將在第一時間刪除相關內(nèi)容,謝謝!