Skip to main content

Minimal Brownie like contract wrapper for Pyrevm

Project description

pyrevm_contract

Minimal Brownie like contract wrapper for Pyrevm

pip install pyrevm_contract

init revm

from pyrevm_contract import Revm, Contract

revm = Revm("https://eth.llamarpc.com", block_number=5282490) # revm singleton; sets backend for all contracts

caller = "0x00000000000000000000000000000000000021E8"
weth_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"

init contract via json file object

weth_abi_path = ...
with open(weth_abi_path) as f:
    abi = json.load(f)

weth = Contract(weth_addr, abi)

init contract via json abi file path

weth_abi_path = ...
weth = Contract(weth_addr, abi_file_path=weth_abi_path)

create contract abi manually

from pyrevm_contract import ABIFunction, ContractABI
funcs = [
    ABIFunction(
        name="balanceOf",
        inputs=["address"],
        outputs=["uint256"],
        constant=True,
        payable=False,
    ),
    ABIFunction(
        selector="0xd0e30db0" # support for selector based funcs
        inputs=[],
        outputs=[],
        constant=False,
        payable=True
    )
]

weth = Contract(
    weth_addr,
    contract_abi=ContractABI(funcs),
)

call contract

revm.set_balance(caller, 100) # revm cheatcode; sets ether balance of acct

weth.balanceOf(caller) # -> 0
weth["0xd0e30db0"](value=100, caller=caller) # call via selector
weth.balanceOf(caller) # -> 100

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_contract-0.2.5.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

pyrevm_contract-0.2.5-py3-none-any.whl (5.8 kB view hashes)

Uploaded Python 3

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