⑴ 什麼是GAS費用
在一個公有鏈上, 任何人都可以讀寫數據。讀取數據是免費的, 但是向公有鏈中寫數據時需要花費一定費用的, 這種開銷有助於阻止垃圾內容, 並通過支付保護其安全性。 網路上的任何節點(每個包含賬本拷貝的連接設備被稱作節點) 都可以參與稱作挖礦的方式來保護網路。由於挖礦需要計算能力和電費, 所以礦工們的服務需要得到一定的報酬, 這也是礦工費的由來。
礦工會優先打包 gas 合理,gas price 高的交易。如果用戶交易時所支付的礦工費非常低(out of gas), 那麼這筆交易可能不會被礦工打包, 從而造成交易失敗。TokenPocket 的交易費用 (也是以太坊的交易費用) = gas 數量 * gas price (gas 單價, 以太幣計價)
gas是用於測量在以太坊區塊鏈上執行特定操作所需的計算工作量的單位。這個名字本身並不是偶然選定的。gas其實類似於汽油,後者作為汽車的能量保證汽車可以正常行駛,以太坊網路上的gas為交易行為進行「加油」,並允許用戶執行不同的操作。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
⑵ Gas 機制是如何運作的
以太坊是目前第二大公鏈,它和比特幣不一樣,以太坊上的可以實現的功能更多,如果比特幣是一個可以進行加減乘除的計算器,那麼以太坊就是一台功能完備的計算機。以太坊系統的復雜度超過比特幣好幾個數量級。
在以太坊中,用戶可以自己寫一個智能合約,然後把智能合約放到以太坊中執行。智能合約的執行需要消耗資源,而以太坊上的資源是有限的。
在計算機系統中,停機問題(https://zh.wikipedia.org/wiki/停機問題)目前還沒有辦法完全證明。這個問題簡單來說就是沒辦法判斷一個程序是否能夠在有限的時間內結束運行。
如果一個用戶提交了一個死循環程序到以太坊中,那麼就會無限的執行下去,從而將以太坊網路擊垮。而使用 gas 機制則可以解決這個問題,智能合約中,每段代碼的執行都會消耗一定量的 gas,在用戶提交交易的時候需要指定好。如果 gas 消耗完了,那麼智能合約就必須停止,交易也會被撤銷,如果智能合約執行完成, gas 還有剩餘,就會退還給用戶。
需要特別說明的是,即使交易失敗,用戶也需要支付 gas 費用,因為以太坊為這些錯誤的交易也付出了計算資源。
除了這點之外,gas 還可以用來激勵礦工,用戶提交交易所消耗的 gas 費用最後都會給到礦工,礦工會優先去打包那些提供了更高 gas 價格的交易,在以太坊中,如果希望自己的交易早點被打包,可以設置更高的 gas 價格。
g as 機制是以太坊系統的命脈。
gas 本質就是維護以太坊網路安全,這是從兩個方面來做到的,一方面通過 gas 來衡量計算量,一方面使用 gas 來吸引更多的礦工,礦工的數量越多,以太坊網路就越安全。
gas 只能用於交易中,用戶不會接觸到 gas,gas 會在交易的提交的時候直接通過以太幣來兌換。
智能合約中,每個操作都會消耗一定的 gas 。每個操作都對應一個 Opcode,下面是一些常見的 gas 消耗,完整的 gas 消耗說明看這里:https://github.com/crytic/evm-opcodes
以太坊中的交易最後會被確認,打包成區塊,這樣交易才算是完成,但是在一個區塊中,可以打包的交易是有限的,以太坊通過 gas 來限制可以打包的交易數。這樣就讓被打包的機會成為了一個稀缺的資源。
用戶提交一個交易後,gas 量可以看做是一個固定的值,礦工為了做到最大收益,就會選擇那些 gas 價格更高的交易。
很多以太坊的用戶經常吐槽 gas 費過高,其實這里的過高不是指 gas 本身過高,而是指 gas 對應的以太坊價格過高。
因為 Gas 的價格不是固定的,而是波動的,簡單來說就是根據供需關系來決定的,如果同時需要用以太坊的用戶多,那麼Gas 的價格就貴,如果用戶的人少,那麼 Gas 的費用就會少。
以太幣的最基本單位是 wei,1 ETH = 10 ^18 wei,而衡量 gas 價格的單位則是 gwei,1 ETH = 10 ^ 9 gwei。
在提交交易的時候,需要設定兩個參數,一個是 gas 的最大消耗量(gas limited)和 gas 的價格,gas 的消耗量通常情況下會比較固定,不會有太大的變化,主要是 gas 的價格會波動很大。
在上面我們說到礦工會挑選那些 gas 費用比較高的交易進行打包。所以 gas 的價格設置得越高,那麼總的 gas 費用就會越高。如果想讓當前的交易盡快被確認,那麼就需要設置一個當前相對來說比較高的 gas 價格。
其實對當前 gas 價格最清楚的就是那些礦工,所以礦工們也提供了一些服務,讓用戶可以實時地了解到當前 gas 價格的分布。比如 GasNow 就是一個比較常用的服務,現在很多錢包中都在使用這個來為錢包的用戶提供 gas 價格建議。
如果你提交的交易不緊急,那麼使用當前的平均 gas 價格就可以,如果需要提交緊急的交易,那麼就需要設置更高的 gas 價格。
文 / Rayjun
⑶ 以太坊gas limit什麼意思
一、智能合約這么好,可不是白用的
智能合約,顧名思義,是指計算機代碼可以自動執行的合同;以太坊虛擬機是用來執行智能合約的;智能賬戶是智能合約能夠被執行的載體。換句話說,智能賬戶,這個「賬戶」是可以被以太坊虛擬機操控的,依據什麼操控呢,依據智能合約來操控。
天下沒有免費的午餐,智能合約這個功能這么好,可不是白用的,你在以太坊進行交易的時候也要付給礦工手續費的,那麼在以太坊系統上,你要付出的手續費是怎麼回事,
Gas和手續費之間又有什麼關聯呢?
二、以太坊 Gas 是怎麼回事?
以太坊Gas類似於汽車燃油,智能合約的驅動,需要以太坊Gas。Gas是一個英文單詞,中文意思是:瓦斯、汽油,這個東西在日常生活中,是一種消耗品。以太坊為什麼會產生「燃料」呢?
以太坊裡面的Gas是什麼意思呢?其實,以太坊的Gas和交易費息息相關。以太坊交易需要手續費,這個Gas就是以太坊手續費的計算模式。
在以太坊的設定中,交易費類似於一種加密的燃料,也就是Gas,這個東西可以驅動智能合約的運動。當以太坊在區塊鏈上執行交易時,燃料將按照特點的規則而逐漸被消耗。
從這一點看呢,Gas真的是和它的本意一樣,像汽車燃油一樣,想要發動汽車,必須需要燃油。
三、以太坊 Gas 和比特幣交易費有哪不同?
說到手續費,大家可能很熟悉。天下沒有免費的午餐,無論是以太坊,還是比特幣,都需要手續費,但是二者的手續費模式是不一樣的。比特幣是直接支付比特幣作為轉賬手續費的,以太坊卻不是這樣的。
以太坊本質上是一個虛擬機,這個虛擬機是去中心化的,全世界各國人民各自掌控的虛擬機,聯合起來形成一個「世界級的計算網路」。當你發送token,執行合約、轉移以太坊,或者在區塊上做其他事情時,計算機在處理這筆交易時,需要進行計算,這個計算過程需要消耗網路資源。這樣一來,你必須支付「燃料費」(也就是Gas),才能讓計算機為你工作,讓礦工為你處理交易。
通常情況下,發送方願意支付的Gas價格越高,礦工從交易中獲得的價值就越大,礦工們也就越有可能選擇這個交易。通過這種方式,礦工可以自由地選擇交易。為了給發送者設置Gas 價格做參考,礦工們可以直接提出他們執行交易所需的最低Gas 價格。
四、以太坊 Gas 的消耗量該如何計算?
以太坊虛擬機處理交易時,虛擬機會根據交易中確定的一個一個的操作指令進行逐個處理,而每個操作指令都有明文規定的Gas消耗量。
以太坊系統規定了兩個賬戶:一個是正常賬戶,一個是智能賬戶。
普通的轉賬交易,也就是調用「正常賬戶」,所需要的Gas是固定的21000;
而調用「智能賬戶」的的話,因為智能合約的復雜程度不同,使得所需要的Gas也不同。處理交易佔用的資源(計算量、內存等)越多,那麼所需要的Gas也就越多,比如:執行一次加法運算將消耗 3Gas,如果執行更復雜的運算,那麼消耗的Gas就更多。
那麼大家可能會問一個問題:當用戶的交易涉及一個惡意的智能合約,這個合約超級復雜,執行這個合約要消耗無限的燃料,怎麼辦呢?以太坊系統的方案是:為了避免惡意
智能合約引起無限的Gas消耗,用戶需要在發送交易時設定允許消耗的燃料上限,即
GasLimit,這樣一來,就算有惡意智能合約,最壞情況也只是消耗 GasLimit 所規定的燃料范圍之內。
五、以太坊 Gas 和交易手續費有什麼關系?
以太坊上,你所支付的手續費等於:GasPrice 乘以GasUsed。
你可以把 GasPrice 理解為是燃油單價, GasUsed 理解為汽車所需多少升燃油。
對於汽車,假如說每升汽油是20塊錢,一萬升汽油就是20萬塊錢。對於以太坊,每
Gas是20吉偉(吉偉是以太幣的數量單位),一萬個 Gas 就是:20乘以一萬,等於20 萬吉偉,2萬吉偉等於0.0002以太坊,也就是說,本次交易手續為 0.0002以太坊。
具體的兌換值見下表:
圖
(注釋:以太幣數量的基礎單位是「偉」,以太幣的數量單位有「偉、芬尼、以太」,其中,「以太」被用作普通交易;「芬尼」被用作微交易;「薩博」和「偉」被用作進行關於費用和合約實施。)由此我們可以發現,Gas並不是以太坊,它是一種單獨的體系,它的匯率與以太坊成一定的比例,經過了比例兌換,最終形成交易費。
具體的匯率查詢,可以查看以下網站:
https://jin10086.github.io/etherconVerter/
Gas價格和以太幣價格都是由市場自由調節的,但是二者是不一樣的,他們的不同之處在於:以太幣的價格是根據市場情況波動,而Gas的價格由礦工決定的,如果燃料價格低於礦工們的最低要求,礦工就會拒絕處理交易。Gas和以太坊分離,可以保護系統免受隨著以太坊價格的快速變化而可能出現的波動。
通常來講,大部分礦工都會選擇利益優先,處理交易時候,他們會按Gas價格從高到底排列,優先處理Gas價格高的,如果你很著急交易 ,就需要提高Gas價格,讓礦工早點看到你;如果你不著急呢,你只需要設定一個Gas價格,這個價格在礦工設置的Gas價格底線之上就行了。
六、Gas 是怎麼獲取的呢?
實際上,Gas就是從礦工那裡購買的以太幣,用戶自己賬戶中的以太幣就可以向礦工購買Gas,以太坊客戶端根據指定的交易最大支出限額,自動用以太坊購買Gas。
七、Gas 最後去了哪裡?
每筆交易,交易發起方都要設置交易的Gas限定和 Gas價格,不同的操作會產生不同的Gas成本,Gas用完時礦工將停止執行,使用的Gas會作為獎勵,獎勵給挖礦的礦工,這將涉及到幾下幾種情況:
第一種情況是,如果有剩餘Gas,那麼這些剩餘的Gas會退還給交易發起方或智能合約創建者,比如我發送1個以太坊給依依,我設置的 Gas limit 是 5萬,正常需要消耗的Gas是21000,,那麼,剩下沒有被消耗的29000會返還給我。
第二種情況是,如果我設置的Gas limit太低,或者我賬號中的以太坊不足以支付我的Gas消耗,那麼,這筆交易會因為Gas不足而被取消,並且用於計算的Gas不會退回到我的賬戶。
第三種情況是,如果交易失敗,我也必須為已經佔用的計算資源來支付手續費。
八、怎麼設置合理的 Gas 價格?
每次交易之前,可以查詢這個網站來確認需要設置的Gas價格: https://ethGasstation.info/總結一下,這篇文章我們主要介紹了以太坊的Gas和手續費:Gas相當於燃油,你在以太坊虛擬機上處理交易,會消耗計算資源,也就是Gas。在以太坊上,你所支付的手續費等於:GasPrice 乘以GasUsed,也就是:Gas的單價乘以消耗掉的Gas總量。操作的復雜程度不同,產生的Gas成本也不同,Gas用完時,礦工將停止執行,使用的Gas會作為獎勵,獎勵給挖礦的礦工,礦工會優先選擇Gas價格出的高的交易者。
⑷ gas費預估失敗什麼意思
gas是用於測量在以太坊區塊鏈上執行特定操作所需的計算工作量的單位。
這個名字本身並不是偶然選定的。gas其實類似於汽油,後者作為汽車的能量保證汽車可以正常行駛,以太坊網路上的gas為交易行為進行「加油」,並允許用戶執行不同的操作。
在以太坊區塊鏈上的每一個操作,或者准確地說在以太坊虛擬機(EVM)上的每一個操作都有一個相對應的gas成本。例如:將兩個數字相加要花費3個gas;獲取賬戶余額會花費400個gas;發送一筆交易花費21000個gas。
智能合約通常包括多個操作,這些操作加起來甚至可以花費數十萬gas。
有趣的是,gas價格本身並不能告訴我們在某筆交易中需要支付多少錢。要計算交易費用,我們必須將gas的乘以gas價格。
gas的價格單位為gwei,,gwei的單位比ether要小,1 gwei等於0.000000001 ETH。我們可以把它們之間的關系看成是美分和美元。
⑸ 1分鍾搞清Gas/ Gas Price/ Gas Limit
好多朋友第一次接觸以太坊的時候,都會搞不清什麼是Gas,更搞不清Gas Price和Gas Limit是什麼。 本文將逐一介紹並理清這三者之間的關系,相信你看完後就會理解這三個gas相關的概念了。
Gas
Gas對應於一個交易(Transaction)中以太坊虛擬機(EVM)的實際運算步數。 越簡單的交易,例如單純的 以太幣轉帳交易,需要的運算步數越少, Gas亦會需要的少一點。 反之,如果要計算一些復雜運算,Gas的消耗 量就會大。 所以你提交的交易需要EVM進行的計算量越大,所需的Gas消耗量就越高了。
Gas Price
Gas Price就是你願意為一個單位的Gas出多少Eth,一般用Gwei作單位。 所以Gas Price 越高, 就表示交易中每運算一步,會支付更多的Eth。
大家可能對Gwei 這個單位感到陌生,Gwei 其實就是10 ^ -9 Eth,也就是說1 Gwei = 0.000000001 Eth。 所以,當你設定Gas price = 20 Gwei ,就意味著你願意為單步運算支付0.00000002 Eth。
說到這里,聰明如你就會意識到以太坊的手續費計算公式很簡單:
1交易手續費(Tx Fee) = 實際運行步數(Actual Gas Used) * 單步價格(Gas Price)
例如你的交易需要以太坊執行50步完成運算,假設你設定的Gas Price是2 Gwei ,那麼整個交易的手續費 就是50 * 2 = 100 Gwei 了。
Gas Limit
Gas Limit就是一次交易中Gas的可用上限,也就是你的交易中最多會執行多少步運算。 由於交易復雜程度各有不同, 確切的Gas消耗量是在完成交易後才會知道,因此在你提交交易之前,需要為交易設定一個Gas用量的上限。
如果說你提交的交易尚未完成,消耗的Gas就已經超過你設定的Gas Limit,那麼這次交易就會被取消,而 已經消耗的手續費同樣被扣取 —— 因為要獎勵已經付出勞動的礦工。 而如果交易已經完成,消耗的Gas未達到Gas Limit, 那麼只會按實際消耗的Gas 收取交易服務費。 換句話說,一個交易可能被收取的最高服務費就是Gas Limit * Gas Price 了。
最後值得一提的是Gas Price 越高,你提交的交易會越快被礦工接納。 但通常人們都不願多支付手續費, 那麼究竟應該將Gas Price設置為多少,才可以在正常時間(eg 10 mins)內,確保交易被確認到區域鏈上呢? 這個網站 可以幫到你。 寫這篇文章時候,1 Gwei的Gas Price 就可以確保 交易在50 秒左右被接納。
⑹ 以太坊GasLimit的計算方法
以太坊黃皮書上說的gasLimit的計算方法:
gasLimit = Gtransaction + Gtxdatanonzero × dataByteLength
需要注意的是這只是靜態的gas消耗,實際gas消耗還需要加上合約執行的開銷。
計算 IntrinsicGas的源碼位置 core/state_transition.go
相關源碼位置:internal/ethapi/api.go
EstimateGas 採用二分查找法獲取要評估交易的gas值。二分查找的下限是 param.TxGas , 如果 args 參數指定 Gas 大於 param.Gas ,那麼二分查找的上限就是 args.Gas ,否則以當前pending塊的block gas limit(後面簡稱BGL)作為二分查找的上限。 doCall 函數模擬智能合約的執行,經過多次嘗試找到智能合約能夠成功運行的最佳gas值。
由於二分查找的上限和BGL有關,而BGL和不是固定不變的,因此每次gas評估的結果不一定都是相同的,可能每個區塊周期就會變動一次。
在實際進行gas評估的時候,可能會出現類似下面的錯誤
該錯誤出現的最可能是合約執行中出錯。
How do you calculate gas limit for transaction with data in Ethereum?
⑺ gasfee什麼意思
礦工費
礦工費(GasFee)就是支付給礦工的手續費,當你在以太坊區塊鏈上進行轉賬時,礦工要把你的交易打包並放上區塊鏈,才能使交易完成,在這過程中會消耗區塊鏈的運算資源,所以要支付費用。GasFee由GasLimit(限制)和GasPrice(價格)相乘得到。不同時期、不同的操作gaslimit默認值不同,而在執行操作時可以自行設置GasLimit。需要注意的是,完成一筆交易所需的Gas單位數量,取決於交易的復雜程度。當一筆交易越復雜,就必須要耗費較多的運算資源,因此需要花費較多Gas。
⑻ gas費用什麼意思
Gas譯為「汽油費」,Gas最初是在以太坊區塊鏈上實現的,用於衡量消息消耗的計算和存儲資源。
在其他區塊鏈中,節點參與者以本機貨幣指定GasFee,然後根據消息消耗的天然氣量向生產節點參與者的區塊支付優先費用。
gas其實類似於汽油,後者作為汽車的能量保證汽車可以正常行駛,以太坊網路上的gas為交易行為進行「加油」,並允許用戶執行不同的操作。
(8)以太坊gas價格計算擴展閱讀
gas存在的原因
任意的一條消息都需被礦工打包上鏈和銷毀,存儲礦工自己會設定一個標準的GAS費用的價格。GAS費會由高到低進行標價,標價低的消息有可能不會被打包,GAS費用高的消息將會被優先打包,所以GAS費用是一個市場行為。
當消息出現擁堵的時候,GAS費用會水漲船高,如果不及時處理擁堵的消息就會出現掉算力的情況,如果連續2天算力沒有恢復,那就會受到非常嚴厲的懲罰。
如果沒有gas,用戶就可以執行一個永遠不會停止的程序,其中的原因可能是代碼有問題,也可能是有人作惡。為了防止這種情況發生,以太坊引入了與每個操作相關的gas成本,這將防止程序處於永遠運行的狀態,最終使整個網路陷入停滯狀態。
⑼ 以太坊存在的問題
1.擴展性不足:
以太坊社區的主要開發人員和研究人員始終認為區塊鏈技術要實現大規模採用,可擴展性是區塊鏈應用程序需要解決的唯一最重要的關鍵。
以太坊的底層設計,最大的問題是以太坊只有一條鏈,沒有側鏈,它把所有的程序對等的跑在全球所有節點的礦機上。這樣一個很耗資源的程序,會導致問題越來越嚴重。
2.合約程序漏洞,無法抵禦DDOS攻擊
據相關研究表明,在基於以太坊的近100萬個智能合約上,發現有34,200(約3%)個含有安全漏洞,將允許黑客竊取ETH、凍結資產或刪除合約。這幾年,以太坊面對合約程序漏洞和DDOS攻擊的問題,也一直無法找到很好的解決辦法。(更好用的數字貨幣交易平台「幣匯」)
3.對於ICO泡沫和項目方砸盤
目前的ETH下跌,很大程度上來自於項目方的砸盤套現,這個問題可以在ICO代幣融資上進行規則限制,不能像現在這樣毫無成本的就能發一個幣,而且還沒有任何監督懲罰機制。任何事情都需要有一套合理的演進規則,大家按規則辦事,所謂無規矩不成方圓。在規則的基礎上,各類ICO項目有效監督,有序進出,才是一個正常的市場,這樣才可能維系著代幣生態的持續、穩定發展。
4.智能合約費用過高
在以太坊上現在還是POW的挖礦模式,交易是有手續費的,用來激勵礦工來處理交易和保護網路,不同的是以太坊是以「gas」的形式來收費的。
在以太坊協議中規定,交易手續費=Gas 數量 x Gas 價格,其中 Gas 數量由智能合約的復雜程度決定,而 Gas 價格則由合約發起人決定。這對開發者和用戶意味著什麼呢?雖然讀取本地區塊鏈是免費的,但寫入和運算是花錢的,儲存更是尤其昂貴,因為任何寫入的信息都會被永久的儲存著。
5.社區對共識協議改變的分歧
以太坊計劃實現將 POW 機制改為 POW/POS 混合共識機制。但這個涉及到技術開發和礦工雙方能否達到利益共識的問題了。如果協議發生了變化,社區意見不合時,就會導致分叉,大家各自玩各自的。