¿Cómo puedo cambiar el precio del gas o el límite de gas cuando pruebo con pyethereum?

Tengo un código que finalmente está destinado a ejecutarse en una red privada. Lo estoy probando con el precioso pyethereum, haciendo cosas como:

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)

Esto explota con

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

No explota cuando le paso menos datos, y el contrato parece bastante caro, así que asumo que se está rompiendo porque se está quedando sin gasolina. ¿Hay alguna forma de pasar a pyethereum algunas configuraciones que permitan que la transacción use más gas?

Respuestas (2)

Usa t.gas_limity t.gas_price.

Para el límite de gas, dado que generalmente solo desea configurarlo una vez:

Establecer t.gas_limitantes t.state(). Ejemplot.gas_limit = 3000000

De lo contrario puede hacerself.s.abi_contract(code, gas=3000000,...

(Puede establecer el gas_limit mucho más alto con fines de prueba para que pueda implementar un contrato muy grande, pero es mejor mantenerlo más bajo que el límite de gas de bloque de la red real para que los contratos puedan implementarse en la red real).

Gracias, configuré t.gas_limit = t.gas_limit * 10 justo antes de llamar a t.state() y ahora funciona.

Puede cambiar el gas de arranque aquí:

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

Pero no estoy seguro si ese es el problema real.