Gas
使用 pyethereum 進行測試時如何更改 gas 價格或 gas 限制?
我有一些最終注定要在專用網路上執行的程式碼。我正在用可愛的 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_limit
和t.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)
但我不確定這是否是實際問題