def tester(): genesis_params = PyEVMBackend._generate_genesis_params( overrides={'gas_limit': 7 * 10**6}) pyevm_backend = PyEVMBackend(genesis_parameters=genesis_params) pyevm_backend.reset_to_genesis(genesis_params=genesis_params, num_accounts=10) return EthereumTester(backend=pyevm_backend, auto_mine_transactions=True)
def _get_pyevm_test_backend() -> PyEVMBackend: try: # TODO: Consider packaged support of --dev mode with testerchain from tests.constants import PYEVM_GAS_LIMIT, NUMBER_OF_ETH_TEST_ACCOUNTS except ImportError: raise DevelopmentInstallationRequired(importable_name='tests.constants') # Initialize genesis_params = PyEVMBackend._generate_genesis_params(overrides={'gas_limit': PYEVM_GAS_LIMIT}) pyevm_backend = PyEVMBackend(genesis_parameters=genesis_params) pyevm_backend.reset_to_genesis(genesis_params=genesis_params, num_accounts=NUMBER_OF_ETH_TEST_ACCOUNTS) return pyevm_backend
def add_provider(self, provider: Union[IPCProvider, WebsocketProvider, HTTPProvider, EthereumTester] = None, provider_uri: str = None, timeout: int = None) -> None: if not provider_uri and not provider: raise self.NoProvider("No URI or provider instances supplied.") if provider_uri and not provider: uri_breakdown = urlparse(provider_uri) # PyEVM if uri_breakdown.scheme == 'tester': if uri_breakdown.netloc == 'pyevm': from nucypher.utilities.sandbox.constants import PYEVM_GAS_LIMIT, NUMBER_OF_ETH_TEST_ACCOUNTS # Initialize genesis_params = PyEVMBackend._generate_genesis_params(overrides={'gas_limit': PYEVM_GAS_LIMIT}) pyevm_backend = PyEVMBackend(genesis_parameters=genesis_params) pyevm_backend.reset_to_genesis(genesis_params=genesis_params, num_accounts=NUMBER_OF_ETH_TEST_ACCOUNTS) # Test provider entry-point eth_tester = EthereumTester(backend=pyevm_backend, auto_mine_transactions=True) provider = EthereumTesterProvider(ethereum_tester=eth_tester) elif uri_breakdown.netloc == 'geth': # TODO: Hardcoded geth - dev IPC provider - for now provider = IPCProvider(ipc_path='/tmp/geth.ipc', timeout=timeout) else: raise ValueError("{} is an invalid or unsupported blockchain provider URI".format(provider_uri)) # IPC elif uri_breakdown.scheme == 'ipc': provider = IPCProvider(ipc_path=uri_breakdown.path, timeout=timeout) # Websocket elif uri_breakdown.scheme == 'ws': provider = WebsocketProvider(endpoint_uri=provider_uri) # HTTP elif uri_breakdown.scheme in ('http', 'https'): provider = HTTPProvider(endpoint_uri=provider_uri) else: raise self.InterfaceError("'{}' is not a supported provider protocol".format(uri_breakdown.scheme)) self.__provider = provider
def _get_tester_pyevm(provider_uri): # https://web3py.readthedocs.io/en/latest/providers.html#httpprovider from nucypher.utilities.sandbox.constants import PYEVM_GAS_LIMIT, NUMBER_OF_ETH_TEST_ACCOUNTS # Initialize genesis_params = PyEVMBackend._generate_genesis_params( overrides={'gas_limit': PYEVM_GAS_LIMIT}) pyevm_backend = PyEVMBackend(genesis_parameters=genesis_params) pyevm_backend.reset_to_genesis(genesis_params=genesis_params, num_accounts=NUMBER_OF_ETH_TEST_ACCOUNTS) # Test provider entry-point eth_tester = EthereumTester(backend=pyevm_backend, auto_mine_transactions=True) provider = EthereumTesterProvider(ethereum_tester=eth_tester) return provider