예제 #1
0
파일: base.py 프로젝트: 9nix00/py-evm
    def configure(cls, __name__=None, vm_configuration=None, **overrides):
        if 'vms_by_range' in overrides:
            raise ValueError("Cannot override vms_by_range")

        if vm_configuration is not None:
            overrides['vms_by_range'] = generate_vms_by_range(vm_configuration)
        return super().configure(__name__, **overrides)
예제 #2
0
파일: chain.py 프로젝트: firefox0x/py-evm
    def configure(cls, name=None, vm_configuration=None, **overrides):
        if 'vms_by_range' in overrides:
            raise ValueError("Cannot override vms_by_range")

        if vm_configuration is not None:
            overrides['vms_by_range'] = generate_vms_by_range(vm_configuration)
        return super().configure(name, **overrides)
예제 #3
0
파일: __init__.py 프로젝트: tyaakow/py-evm
 def configure_forks(self,
                     homestead_start_block=None,
                     dao_start_block=None,
                     eip150_start_block=None,
                     spurious_dragon_block=None):
     """
     TODO: add support for state_cleanup
     """
     vm_configuration = _generate_vm_configuration(
         homestead_start_block=homestead_start_block,
         dao_start_block=dao_start_block,
         eip150_start_block=eip150_start_block,
         spurious_dragon_block=spurious_dragon_block,
     )
     self.vms_by_range = generate_vms_by_range(vm_configuration)
예제 #4
0
 def configure_forks(self,
                     homestead_start_block=None,
                     dao_start_block=None,
                     tangerine_whistle_start_block=None,
                     spurious_dragon_block=None):
     """
     TODO: add support for state_cleanup
     """
     vm_configuration = _generate_vm_configuration(
         homestead_start_block=homestead_start_block,
         dao_start_block=dao_start_block,
         tangerine_whistle_start_block=tangerine_whistle_start_block,
         spurious_dragon_block=spurious_dragon_block,
     )
     self.vms_by_range = generate_vms_by_range(vm_configuration)
예제 #5
0
    def configure(cls, name, vm_configuration, **overrides):
        if 'vms_by_range' in overrides:
            raise ValueError("Cannot override vms_by_range.")

        for key in overrides:
            if not hasattr(cls, key):
                raise TypeError(
                    "The Chain.configure cannot set attributes that are not "
                    "already present on the base class.  The attribute `{0}` was "
                    "not found on the base class `{1}`".format(key, cls)
                )

        # Organize the Chain classes by their starting blocks.
        overrides['vms_by_range'] = generate_vms_by_range(vm_configuration)

        return type(name, (cls,), overrides)
예제 #6
0
    def configure_forks(self,
                        *fork_start_blocks: ForkStartBlocks,
                        dao_start_block: Union[int, bool] = None) -> None:
        """
        On demand configuration of fork rules.  This is a foot gun that if used
        incorrectly could cause weird VM errors.

        It should generally only be used on a genesis chain (head block == 0).
        Modifying the fork rules, especially if the modification effects
        existing blocks could result in a broken chain.
        """
        vm_configuration = _generate_vm_configuration(
            *fork_start_blocks,
            dao_start_block=dao_start_block,
        )
        self.vms_by_range = generate_vms_by_range(vm_configuration)