deploy

Documentation for eth_defi.deploy Python module.

Deploy any precompiled contract.

See Github for available contracts.

Functions

deploy_contract(web3, contract, deployer, ...)

Deploys a new contract from ABI file.

get_or_create_contract_registry(web3)

Get a contract registry associated with a Web3 connection.

get_registered_contract(web3, address)

Get a contract that was deployed with the registry.

register_contract(web3, address, instance)

Register a contract for tracing.

Exceptions

ContractDeploymentFailed

Did not get successful tx receipt from a deployment.

ContractRegistry

Manage internal registry of deployed contracts

Lower case address -> Contract mapping.

alias of Dict[str, web3.contract.contract.Contract]

exception ContractDeploymentFailed

Bases: Exception

Did not get successful tx receipt from a deployment.

__init__(tx_hash, msg)
__new__(**kwargs)
add_note()

Exception.add_note(note) – add a note to the exception

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

deploy_contract(web3, contract, deployer, *constructor_args, register_for_tracing=True, gas=None, confirm=True)

Deploys a new contract from ABI file.

A generic helper function to deploy any contract.

Example:

token = deploy_contract(web3, deployer, "ERC20Mock.json", name, symbol, supply)
print(f"Deployed ERC-20 token at {token.address}")

If you need to verify the deployed contract use eth_defi.foundry.forge.deploy_contract_with_forge().

Parameters
  • web3 (web3.main.Web3) – Web3 instance

  • contract (Union[str, web3.contract.contract.Contract]) – Contract file path as string or contract proxy class

  • deployer (str | eth_account.signers.local.LocalAccount) –

    Deployer account.

    Either address (use construct_sign_and_send_raw_middleware) or LocalAccount.

  • constructor_args – Other arguments to pass to the contract’s constructor

  • register_for_tracing

    Make the symbolic contract information available on web3 instance.

    See get_contract_registry()

  • gas (int) –

    Gas limit.

    If not set tries to estimate and probably may hit reverts when doing so.

  • confirm – Confirm the contract deployment.

Raises

ContractDeploymentFailed – In the case we could not deploy the contract.

Returns

Contract proxy instance or tx_hash if confirm=false.

Return type

web3.contract.contract.Contract | hexbytes.main.HexBytes

get_or_create_contract_registry(web3)

Get a contract registry associated with a Web3 connection.

  • Only relevant for test sessions

  • Assumes one web3 instance per test

  • Useful to make traces symbolic in eth_defi.trace

Parameters

web3 (web3.main.Web3) – Web3 test session

Returns

Mapping of address -> deployed contract instance

Return type

Dict[str, web3.contract.contract.Contract]

register_contract(web3, address, instance)

Register a contract for tracing.

See deploy_contract().

Parameters
get_registered_contract(web3, address)

Get a contract that was deployed with the registry.

  • Resolve a symbolic contract information based on the contract address and our contract registry

  • See eth_defi.deploy.deploy_contract() how to deploy a registered contract

Example:

from eth_defi.deploy import get_registered_contract

contract = get_registered_contract(web3, "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8")
assert contract.name == "VaultSpecificGenericAdapter"
Parameters

address (str) – Contract address as a hex string

Returns

The known Contract instance at the registry or None if the contract was not registered/deployed through registry mechanism.

Return type

web3.contract.contract.Contract