您好,登錄后才能下訂單哦!
在發送比特幣交易時,其費用與其大小成比例。輸入和輸出越多,它就越貴。再加上未決交易的因素,交易費用可能僅基于這兩個因素就會飆升。
對于以太坊,鑒于我們正在談論協議中的編程語言,對于非常少的文本或代碼(在BTC中可能非常便宜的東西),可能對計算要求非常高。 讓我們來看看這個循環,例如:
while (i++ < 1000) { j = j + i; }
這個循環意味著只要i小于1000,將其增加1然后將i和j相加并將結果寫入j ,然后再次執行。如果i
為0,則此循環將執行1000次,或者更多,如果它是負數。
為了以公平的方式支付這種計算成本,因為它必須立即在所有礦工的機器上執行,并且他們將資源和時間花在它上面,這里引入了gas的概念。gas用于支付EVM內部所謂的智能合約(以太坊計劃)的執行費用。例如,上面的i+j
是一個求和運算,每次執行時需要3個gas,因此如果執行1000次則需要3000個gas,因此如果執行1000次則需要3000個gas。
為了正確解釋gas ,我們首先介紹EVM 。
EVM代表以太坊虛擬機 。但是什么是虛擬機呢?
虛擬機是在特定計算機上運行的軟件,其包含完全封裝在主計算機內的另一操作系統。例如,虛擬機允許您在Linux內部運行Windows,在Windows內部運行Windows,在macOS上運行Windows,如下圖所示,或任何其他組合。
我們使用虛擬機將我們日常使用計算機的環境與我們工作或編程的環境分開。這樣我們就可以防范病毒(它們無法破壞虛擬機并進入主操作系統),有助于防止無限循環崩潰我們的主操作系統,并保持硬盤驅動器損壞,如臭名昭著的WannaCry勒索軟件。此外,VM允許我們在Linux上使用Windows游戲,或者允許我們輕松地在相同編程語言環境的不同版本中編程,而不會混淆它們。
以太坊虛擬機內置于以太坊協議上運行的軟件中。它執行智能合約——以Solidity語言編寫的以太坊程序。EVM包含在以太坊網絡的完整節點中,在其中執行這些以太坊用戶編寫的程序。
以太坊的任何礦工同時執行智能合約代碼。這意味著以太坊程序(dapps - 去中心化應用程序)同時在每個人的計算機上執行(去中心化的)。
但是,這些程序的執行并不是免費的。礦工們用自己的電力,時間和硬件來做這件事。為了支付他們執行計算機指令的努力(例如“將值5存儲到變量X中”),引入了gas的概念。
gas是計算機需要執行的特定操作的成本單位,并且當我們廣播包含以太坊程序以運行dapp的交易時,它執行該指令。例如,總計兩個數字需要3個gas。乘以它們需要5個gas。將256位字存儲到區塊鏈中需要20000個gas,這意味著存儲1kb的數據需要640000個gas。
就像美元有美分一樣,以太也有自己的基本單位:wei。 如果我們將wei作為以太的基本單位,我們得到下面的定義表:
這就是在以太網單元之間的單位轉換。
根據這個信息網站,目前的天然氣平均價格是10GWei(10千兆wei)。看到1GWei是以太網的十億分之一,上述存儲1kb字的成本是640000*10,即640萬GWei。這相當于0.0064eth,每個以450美元的價格,約為2.88美元。
從上表開始到文章的這個位置的文本大約是1kb。因此,將這一小段文本存儲到區塊鏈中實際上需要2.88美元。但是,這只是存儲成本!我們的智能合約也可能有一些邏輯,如求和或乘以然后存儲數字,或在特定的挖掘塊上激活的觸發器等。顯然,將數據存儲到區塊鏈本身是非常昂貴的。BigchainDB或IPFS中的存儲效果更好,而區塊鏈是全局處理和驗證數據的更好解決方案。
為什么直接支付gas而不是ether的成本?
EVM可以執行的所有可能操作的所有gas價格都在以太坊協議和我們連接到它的客戶端(程序)中進行硬編碼,如Geth,Eth,Parity等。如果代碼在以太網中列出,那么每當以太的價值波動時我們就必須更新代碼,以便將計算工作的價格保持在正常范圍內并保持系統可用,這顯然是不可持續的。
通過在成本之上添加這個gas層,并用GWei支付gas費用,我們可以選擇改變交易中使用的gas量以及支付的金額。它完全在我們的控制之下,不會使系統失去平衡。
這引導我們進入上一節。
gas限制是我們愿意花在交易上的最大gas量。我們用于廣播以太坊交易的大多數軟件都能夠自動估算執行功能所需的gas量。它通常會立即建議一個值。例如,簡單的貨幣A-> B交易通常只需要21000個gas。更復雜的那些稱為特定智能合約功能的可能會遇到數十萬甚至數百萬的gas。消耗的gas量稱為gas成本。
作為用戶,我們可以修改我們想要在交易上花費的gas數量并減少它,但如果交易在執行期間耗盡了gas,我們就會丟失我們發送的gas。它已被花費并且交易被拒絕。另一方面,如果我們提供的gas量超過需要的數量,剩余部分將退還給我們。因此,發送比執行交易所需的更多gas總是更好。
gas成本是每單位gas的GWei價格。
因此,以太坊交易的總成本實際上是必需gas的數量乘以GWei每gas單位的價格。這是我們支付的最高交易費用; 任何額外的gas都會退還,因此費用往往被高估。
我們來看一個例子。
在上圖中,我們正在執行一項交易,由于其復雜性,估計它將需要135963gas。以25GWei的價格,我們支付的最高交易費是1.57美元,這在查看我們發送的總金額時是微不足道的(0.38eth = 178美元)。如果我們將天然氣的價格提高到250GWei,那么交易成比例地變得更加昂貴:
較高的費用可以有效地鼓勵礦工在隊列中的其他人之前處理我們的交易,從而加快執行速度。如果我們不急,我們可以將gas價格保持在起始值,交易確認不應超過10分鐘。但如果我們匆忙并希望在幾秒鐘內完成(例如,如果我們正在處理拍賣),那么很容易提高gas價格并犧牲一些錢來保證成功。
gas是以太坊虛擬機中每次計算操作所花費的工作單位。這是以太幣,以太坊協議的代幣,并且每個計算操作都有不同的gas成本。gas價格(GWei或以太網的十億分之一)根據網絡擁塞和用戶對快速確認的偏好而變化。
對于我們想要在以太坊網絡上部署的智能合約,兩個術語很重要:gas限制和gas價格。gas限制是我們愿意花在執行交易上的最大gas量。實際需要的gas量(僅在交易執行后才知道)稱為gas成本。gas價格是每單位gas的價格,以GWei(或以太網的十億分之一)表示。交易總成本將是gas成本和gas價格的乘積,而最高交易費用將是gas限價減去gas價格的乘積。差額退還給交易的發件人以保持系統公平和可用。
======================================================================
分享一些比特幣、以太坊、EOS、Fabric等區塊鏈相關的交互式在線編程實戰教程:
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在C#代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
- java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。
- 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目采用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
- C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
- EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發。
- 深入淺出玩轉EOS錢包開發,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智能合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中集成對EOS區塊鏈的支持。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。
- Hyperledger Fabric 區塊鏈開發詳解,本課程面向初學者,內容即包含Hyperledger Fabric的×××書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操作實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。
- Hyperledger Fabric java 區塊鏈開發詳解,課程面向初學者,內容即包含Hyperledger Fabric的×××書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、java鏈碼與應用開發的操作實踐,是java工程師學習Fabric區塊鏈開發的最佳選擇。
- tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這里是以太坊如何計算交易成本
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。