Gas

使用 pyethereum 進行測試時如何更改 gas 價格或 gas 限制?

  • March 23, 2016

我有一些最終注定要在專用網路上執行的程式碼。我正在用可愛的 pyethereum 對其進行測試,執行以下操作:

from ethereum import tester as t

class testMyContract(TestCase):
  def setUp(self):
     self.s = t.state()
     code = open('../mycontract.sol').read()
     self.mycontract = self.s.abi_contract(code, language='solidity', sender=t.k0)

  def testExpensiveThing(self):
    mydata = [1000, 3000, 2000, 8000]
    self.mycontract.doExpensiveThing(mydata)

這爆炸了

 File "/usr/local/lib/python2.7/dist-packages/ethereum/tester.py", line 201, in _send
   raise TransactionFailed()
TransactionFailed

當我傳遞更少的數據時它不會爆炸,而且契約看起來很昂貴,所以我假設它正在破裂,因為它的gas用完了。有沒有辦法通過 pyethereum 一些允許交易使用更多氣體的設置?

使用t.gas_limitt.gas_price

對於氣體限制,因為您通常只想設置一次:

t.gas_limit之前設置t.state()。例子t.gas_limit = 3000000

否則可以做self.s.abi_contract(code, gas=3000000,...

(出於測試目的,您可以將 gas_limit 設置得更高,這樣您就可以部署一個非常大的合約,但最好將其保持在低於真實網路的塊 gas 限制,以便合約可以在真實網路上部署。)

您可以在此處更改起始氣體:

self.mycontract = self.s.abi_contract(code, gas=3000000, language='solidity', sender=t.k0)

但我不確定這是否是實際問題

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