導航:首頁 > 以太坊區 > opcode以太坊

opcode以太坊

發布時間:2023-01-07 18:25:51

以太坊交易(tx) 分析

更多請參考: Github: https://github.com/xianfeng92/ethereum-code-analysis

其中 object 和 opcodes 是相對應的,比如 60 對應就是 operation PUSH1,合約編譯後的位元組碼即為一組的 operation 。

合約部署其實就是實例化一個 contract 對象,並將 data 的值設給 Code屬性 。

創建合約的tx中,input欄位對應的是合約的位元組碼,即指令數組。

其中 input 欄位對應所要調用的函數簽名的前四個位元組(771602f7)以及對應的參數(1,2)

其中 input 欄位為所要調用的合約函數簽名的前四個位元組(72a099b7)

關於函數調用,Call會把對應的Code讀出來,依次解析,Code中會把所有的public簽名的函數標志(4位元組)push到棧里。然後依據 input 中需要調用函數的簽名標志(前4位元組)來匹配 Code, 匹配之後跳轉到對應的 opcode 。

② 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

閱讀全文

與opcode以太坊相關的資料

熱點內容
區塊鏈技術原理騙局 瀏覽:770
數字貨幣漲幅榜幣贏 瀏覽:363
虛擬貨幣發行失敗案例 瀏覽:482
我國哪些比特幣交易市場關門 瀏覽:213
2017年數字貨幣暫停 瀏覽:208
比特幣產生速率 瀏覽:384
btc黑話 瀏覽:198
哪個平台可以提比特幣 瀏覽:477
以太坊今天得價格 瀏覽:169
個人通過網路收購玩家的虛擬貨幣 瀏覽:421
虛擬貨幣2000u託管 瀏覽:878
數字貨幣改變什麼不同 瀏覽:450
9月4號twee數字貨幣 瀏覽:796
法定數字貨幣法 瀏覽:536
有一種虛擬貨幣還沒交易 瀏覽:169
比特幣低成本變現 瀏覽:313
數字貨幣與實物現金的轉換 瀏覽:850
生死狙擊萌新以太工坊買什麼 瀏覽:149
哪個礦池的費率最低 瀏覽:195
g網買虛擬貨幣 瀏覽:154