{"library":"py-evm","title":"py-evm (Python Ethereum Virtual Machine)","description":"Py-EVM is a Python implementation of the Ethereum Virtual Machine (EVM) designed for readability, flexibility for research and experimentation, and performance in testing. It aims to be a reference implementation for the Ethereum execution layer specifications. **As of May 2025, Py-EVM has been archived and is now read-only, with no further development planned. The last supported Ethereum fork is Prague.**","language":"python","status":"abandoned","last_verified":"Thu May 14","install":{"commands":["pip install py-evm"],"cli":null},"imports":["from eth.chains.mainnet import MainnetChain","from eth.db.atomic import AtomicDB","from eth.constants import GAS_LIMIT","from eth_utils import to_wei","from eth_utils import encode_hex","from eth_typing import Address"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\n\nfrom eth import constants\nfrom eth.chains.mainnet import MainnetChain\nfrom eth.db.atomic import AtomicDB\nfrom eth_utils import to_wei, encode_hex\nfrom eth_typing import Address\n\ndef run_evm_example():\n    # Setup a mock address and initial balance\n    MOCK_ADDRESS = Address(b'\\x00' * 19 + b'\\x01')  # An arbitrary address\n    PREFUND_AMOUNT = to_wei(100, 'ether')\n\n    # Initialize a new chain with an atomic database\n    # AtomicDB is an in-memory database suitable for tests and examples\n    chain = MainnetChain.from_genesis(\n        AtomicDB(),\n        genesis_state={\n            MOCK_ADDRESS: {\n                'balance': PREFUND_AMOUNT,\n                'nonce': 0,\n                'code': b'',\n                'storage': {}\n            }\n        },\n        genesis_header_params={\n            'gas_limit': constants.GAS_LIMIT,\n            'difficulty': 1  # Simplified difficulty for non-PoW chain\n        }\n    )\n\n    # Get the current VM from the chain\n    vm = chain.get_vm()\n\n    print(f\"Chain created successfully. Current block number: {vm.get_block().header.block_number}\")\n    print(f\"Balance of {encode_hex(MOCK_ADDRESS)}: {vm.get_balance(MOCK_ADDRESS)} Wei\")\n\n    # Example: Accessing a constant\n    print(f\"Default transaction gas limit: {constants.GAS_LIMIT}\")\n\nif __name__ == \"__main__\":\n    run_evm_example()","lang":"python","description":"This quickstart demonstrates how to initialize a basic Ethereum chain and Virtual Machine (VM) using Py-EVM. It sets up an in-memory database, pre-funds a mock address, and then retrieves the current block number and the balance of the pre-funded address. This provides a minimal runnable example of interacting with Py-EVM's core components for simulating EVM behavior.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"0.12.1b1","pypi_latest":"0.12.1b1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":5.4,"avg_import_s":4.55,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.55,"mem_mb":20.6,"disk_size":"55.4M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.32,"mem_mb":20.6,"disk_size":"55.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.3,"import_time_s":3.52,"mem_mb":20.6,"disk_size":"58M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.33,"mem_mb":20.6,"disk_size":"58M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.68,"mem_mb":22.1,"disk_size":"60.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.97,"mem_mb":22.1,"disk_size":"60.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.2,"import_time_s":4.24,"mem_mb":22.1,"disk_size":"63M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.2,"mem_mb":22.1,"disk_size":"63M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.31,"mem_mb":22.3,"disk_size":"51.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":5.67,"mem_mb":22.3,"disk_size":"51.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.2,"import_time_s":5.34,"mem_mb":22.2,"disk_size":"54M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":5.84,"mem_mb":22.2,"disk_size":"54M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.87,"mem_mb":22.7,"disk_size":"51.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.34,"mem_mb":22.7,"disk_size":"51.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.6,"import_time_s":4.03,"mem_mb":22.7,"disk_size":"54M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.55,"mem_mb":22.7,"disk_size":"54M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.75,"mem_mb":20.7,"disk_size":"54.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.57,"mem_mb":20.7,"disk_size":"54.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.9,"import_time_s":4.72,"mem_mb":20.7,"disk_size":"57M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"py-evm","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.24,"mem_mb":20.7,"disk_size":"57M"}]}}