Contract-Design

如何設計契約以使用 Gas 退款?

  • April 8, 2016

一筆交易可能會有一些gas退款但這些退款只能在交易內使用:gas退款不會轉換為ether並退還到發送者的賬戶。

如何設計合約以使用 gas 退款,什麼是案例,以及使用 gas 退款的實際編碼合約是什麼?

你的問題有點模棱兩可,但我會嘗試用我自己對“如何設計契約以使用汽油退款”的解釋來回答。答案是他們不能;他們不能,因為退款總是退回給ORIGIN(即最初的執行人)。合約無權訪問此退款池,因此使其無用(除了降低執行成本的能力)。

gas 退款不會轉換為乙太幣並退還到發件人的帳戶。

退款實際上是轉換成乙太幣(go-ethereum/core/state_transition.go):

sender, _ := self.from() // err already checked
remaining := new(big.Int).Mul(self.gas, self.gasPrice)
sender.AddBalance(remaining)

狀態轉換期間會發生什麼:

  1. 儲備tx.gas並確保tx.sender有足夠的資金;
  2. 減少; tx_fee_21.000
  3. 減少執行氣體(執行所需的氣體量);
  4. 添加退款到tx.sender( gas退款R * tx.gasPrice在哪裡R

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