Transactions

特定 txn 的 gas 成本是否取決於區塊的礦工?

  • August 6, 2017

問題在上面。實際上,我看到了一些(小)波動。但是,在閱讀文件後,我認為 gas 應該是恆定的,前提是交易完全相同。哪個是真的?我錯過了什麼嗎?

氣體量取決於 tx 數據的大小。高gasPrice tx 優先被開採,礦工將在自己接受的最低gas 價格下放棄非本地交易。gas 量將通過 st_transaction.go 源文件的 IntrinsicGas 方法計算,如下:

func IntrinsicGas(data []byte, contractCreation, homestead bool) *big.Int {
 igas := new(big.Int)
 if contractCreation && homestead {
   igas.SetUint64(params.TxGasContractCreation)
 } else {
   igas.SetUint64(params.TxGas)
 }
 if len(data) > 0 {
   var nz int64
   for _, byt := range data {
     if byt != 0 {
       nz++
     }
   }
   m := big.NewInt(nz)
   m.Mul(m, new(big.Int).SetUint64(params.TxDataNonZeroGas))
   igas.Add(igas, m)
   m.SetInt64(int64(len(data)) - nz)
   m.Mul(m, new(big.Int).SetUint64(params.TxDataZeroGas))
   igas.Add(igas, m)
 }
 return igas
}

希望這會有所幫助~

特定交易的氣體量是固定的,因為成本基於交易中執行的乙太坊虛擬機 (EVM) 操作,這是確定性的。但是,必須為所使用的氣體付費,這個金額取決於發送者。每單位天然氣的數量稱為天然氣價格。因此,特定交易的價格是gas price x gas used。也就是說,即使執行相同的程式碼,交易的成本也可以在限制範圍內變化(見下文),並且由交易發送者設置。

礦工選擇將哪些交易包含在一個區塊中,他們可能依賴的一個啟發式方法是 gas 價格;據推測,gas 價格越高,交易被包括在內的可能性就越大。如果特定交易的 gas 價格太低,礦工可能會簡單地忽略它。因此,交易價格有一個實際的下限。我仍在尋找有關gas價格是否有上限的答案。

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