diff --git a/setup.py b/setup.py index 21e3841..337448b 100644 --- a/setup.py +++ b/setup.py @@ -46,9 +46,10 @@ setup( url='https://github.com/ethereum/vyper-debug', include_package_data=True, install_requires=[ - "py-evm==0.2.0a26", - "eth-tester==0.1.0b28", - "vyper==0.1.0b3" + "py-evm==0.2.0a33", + "eth-tester==0.1.0b33", + "vyper==0.1.0b4", + "web3==4.8.1" ], setup_requires=['setuptools-markdown'], python_requires='>=3.6, <4', diff --git a/vdb/debug_computation.py b/vdb/debug_computation.py index a5e1be8..bca335d 100644 --- a/vdb/debug_computation.py +++ b/vdb/debug_computation.py @@ -1,11 +1,11 @@ -from evm.vm.forks.byzantium.computation import ( +from eth.vm.forks.byzantium.computation import ( ByzantiumComputation, ) -from evm.exceptions import ( +from eth.exceptions import ( Halt, + VMError ) from vdb.vdb import VyperDebugCmd -from evm.exceptions import VMError from vyper.exceptions import ParserException @@ -97,7 +97,7 @@ class DebugComputation(ByzantiumComputation): pos = cls.get_pos(pc_to_execute) msg = e.args[0] msg = "" if len(msg) == 0 else msg - # import ipdb; ipdb.set_trace() + raise DebugVMError( message=msg, item=pos, diff --git a/vdb/eth_tester_debug_backend.py b/vdb/eth_tester_debug_backend.py index 85d34ea..a0bc6ee 100644 --- a/vdb/eth_tester_debug_backend.py +++ b/vdb/eth_tester_debug_backend.py @@ -1,17 +1,20 @@ -from evm.vm.forks.byzantium import ByzantiumVM -from evm.vm.forks.byzantium.state import ByzantiumState +from eth.chains.base import MiningChain +from eth.db import get_db_backend +from eth.vm.forks.byzantium import ByzantiumVM +from eth.vm.forks.byzantium.state import ByzantiumState from vdb.debug_computation import DebugComputation from eth_tester.backends.pyevm.main import ( get_default_genesis_params, - generate_genesis_state, + generate_genesis_state_for_keys, get_default_genesis_params, get_default_account_keys, PyEVMBackend ) + class DebugState(ByzantiumState): computation_class = DebugComputation @@ -20,22 +23,21 @@ class DebugVM(ByzantiumVM): _state_class = DebugState # type: Type[BaseState] -def _setup_tester_chain(): - from evm.chains.tester import MainnetTesterChain - from evm.db import get_db_backend +def _setup_tester_chain(genesis_params, genesis_state, num_accounts): class DebugNoProofVM(DebugVM): """Byzantium VM rules, without validating any miner proof of work""" + @classmethod def validate_seal(self, header): pass - class MainnetTesterNoProofChain(MainnetTesterChain): + class MainnetTesterNoProofChain(MiningChain): vm_configuration = ((0, DebugNoProofVM), ) genesis_params = get_default_genesis_params() - account_keys = get_default_account_keys() - genesis_state = generate_genesis_state(account_keys) + account_keys = get_default_account_keys(quantity=num_accounts) + genesis_state = generate_genesis_state_for_keys(account_keys) base_db = get_db_backend() @@ -48,8 +50,9 @@ class PyEVMDebugBackend(PyEVMBackend): def __init__(self, ): super().__init__() - def reset_to_genesis(self): - self.account_keys, self.chain = _setup_tester_chain() + def reset_to_genesis(self, genesis_params=None, genesis_state=None, num_accounts=None): + self.account_keys, self.chain = _setup_tester_chain(genesis_params, genesis_state, + num_accounts) def set_debug_info(source_code, source_map, stdin=None, stdout=None): diff --git a/vdb/variables.py b/vdb/variables.py index f1e759c..24c71f9 100644 --- a/vdb/variables.py +++ b/vdb/variables.py @@ -1,7 +1,7 @@ from eth_hash.auto import keccak from eth_utils import to_hex from eth_abi import decode_single -from evm.utils.numeric import ( +from eth.utils.numeric import ( big_endian_to_int, int_to_big_endian, ) diff --git a/vdb/vdb.py b/vdb/vdb.py index 3fb7055..b1733d1 100644 --- a/vdb/vdb.py +++ b/vdb/vdb.py @@ -6,9 +6,9 @@ from eth_utils import ( to_int, ) -import evm -from evm import constants -from evm.vm.opcode import as_opcode +import eth.vm +from eth import constants +from eth.vm.opcode import as_opcode from vyper.opcodes import opcodes as vyper_opcodes from vdb.variables import ( parse_global, @@ -215,7 +215,7 @@ class VyperDebugCmd(cmd.Cmd): return True -original_opcodes = evm.vm.forks.byzantium.computation.ByzantiumComputation.opcodes +original_opcodes = eth.vm.forks.byzantium.computation.ByzantiumComputation.opcodes def set_evm_opcode_debugger(source_code=None, source_map=None, stdin=None, stdout=None): @@ -238,7 +238,7 @@ def set_evm_opcode_debugger(source_code=None, source_map=None, stdin=None, stdou gas_cost=0 ) - setattr(evm.vm.forks.byzantium.computation.ByzantiumComputation, 'opcodes', opcodes) + setattr(eth.vm.forks.byzantium.computation.ByzantiumComputation, 'opcodes', opcodes) def set_evm_opcode_pass(): @@ -252,4 +252,4 @@ def set_evm_opcode_pass(): mnemonic="DEBUG", gas_cost=0 ) - setattr(evm.vm.forks.byzantium.computation.ByzantiumComputation, 'opcodes', opcodes) + setattr(eth.vm.forks.byzantium.computation.ByzantiumComputation, 'opcodes', opcodes)