Skip to main content

No project description provided

Project description

pyrevm

Blazing-fast Python bindings to revm

py rust

Quickstart

make install
make test

Example Usage

Here we show how you can fork from Ethereum mainnet and simulate a transaction from vitalik.eth.

from pyrevm import EVM, Env, BlockEnv

address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"  # vitalik.eth
address2 = "0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

fork_url = "https://mainnet.infura.io/v3/c60b0bb42f8a4c6481ecd229eddaca27"

# set up an evm
evm = EVM(
    # can fork from a remote node
    fork_url=fork_url,
    # can set tracing to true/false
    tracing=True,
    # can configure the environment
    env=Env(
        block=BlockEnv(timestamp=100)
    )
)

vb_before = evm.basic(address)
assert vb_before != 0

# Execute the tx
evm.message_call(
    caller=address,
    to=address2,
    value=10000
    # data
)

assert vb_before != evm.basic(address)
assert evm.basic(address2).balance == 10000

Tracing

There is also support for tracing:

from pyrevm import EVM

EVM(tracing=True)

Transactions

There is support for checkpoints:

from pyrevm import EVM

evm = EVM()
checkpoint = evm.snapshot()
evm.message_call(
    caller=...,
    to=...,
    value=...,
)
evm.revert(checkpoint)  # or: evm.commit() to clear all checkpoints

Note: in contrast to the Rust library, the Python library does not automatically commit to database.

See more usage examples in the pytests.

Develop

We use Poetry for virtual environment management and Maturin as our Rust <> Python FFI build system. The Rust bindings are auto-generated from the macros provided by PyO3.

To build the library, run make build. To run the tests, run make test.

Note: If building for production, use make build-prod, else performance will be degraded.

To release to pypi, create a new github release. This will run the .github/workflows/release.yml action and publish source+binary wheels to pypi.

Benchmarks

TODO

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrevm-0.3.3.tar.gz (55.6 kB view hashes)

Uploaded Source

Built Distributions

pyrevm-0.3.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyrevm-0.3.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyrevm-0.3.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyrevm-0.3.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp312-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

pyrevm-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (4.0 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyrevm-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

pyrevm-0.3.3-cp311-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyrevm-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (4.0 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyrevm-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

pyrevm-0.3.3-cp310-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyrevm-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp310-cp310-macosx_11_0_arm64.whl (4.0 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyrevm-0.3.3-cp310-cp310-macosx_10_12_x86_64.whl (4.1 MB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

pyrevm-0.3.3-cp39-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyrevm-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp38-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

pyrevm-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pyrevm-0.3.3-cp37-none-win_amd64.whl (3.9 MB view hashes)

Uploaded CPython 3.7 Windows x86-64

pyrevm-0.3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pyrevm-0.3.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (6.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page