Contract-Deployment

每次合約呼叫或合約創建期間是否會消耗天然氣?

  • September 3, 2018

我知道有一個關於腳本消耗多少氣體的計算。我的問題是每次合約呼叫的消耗(即乙太坊客戶端)還是僅在將合約部署到乙太坊網路時才適用?

前者對我來說更有意義,因為涉及到處理,所以每次呼叫都與成本相關,但我不確定這對開發人員來說在經濟上是否可行?

兩個都。網路上的所有交易都需要消耗氣體。合約部署通常比對合約的正常事務呼叫多得多,但有些呼叫可能非常昂貴。

至於實際數字,這裡有一些。

部署:契約部署的大部分是

  1. 發送成本 - 21k。這適用於所有交易
  2. 契約創建成本 - 32k。這是針對沒有“to”地址的 CREATE 操作碼和交易,這意味著它們是合約創建
  3. 已部署程式碼的每字節成本 - 200。這是部署的每個合約字節碼字節的成本。最小化這通常是人們最小化部署成本的方式。
  4. 建構子 - 取決於。這是建構子的成本,它通常是基本程式碼,但也經常有 SSTORE 操作碼,這很昂貴。
  5. TX 數據 - 非零為 64 字節,零為 4 字節。在 tx 數據中發送的每個字節都有與之相關的這些成本。對於大型契約部署來說,這可能是一個不錯的數量。

合約呼叫:這些是合約中常用的操作成本。有很多不同的操作碼,所以我只列出一些

  1. 加法/減法/Pop/Push - 3. 非常不言自明。
  2. 乘/除 - 5. 也是不言自明的。
  3. 呼叫 - 700。呼叫其他地址的成本(通常用於呼叫程式碼或僅發送 eth。)

其餘的操作碼成本可以在https://ethereum.github.io/yellowpaper/paper.pdf的黃皮書第 24/25 頁上找到。

乙太坊網路上的每筆交易都需要 ETH(當然,挖出的區塊除外)。

將合約放在網路上需要儲存,並且更改狀態的合約呼叫也需要 eth。

引用自:https://ethereum.stackexchange.com/questions/40233