Exemplo n.º 1
0
 def deploy(web3: Web3, contract_identifier: str, *,
            constructor_args=()) -> Contract:
     return deploy_compiled_contract(
         abi=contract_assets[contract_identifier]["abi"],
         bytecode=contract_assets[contract_identifier]["bytecode"],
         web3=web3,
         constructor_args=constructor_args,
     )
Exemplo n.º 2
0
def proxy_beacon(owner_key, contract_assets, web3, upgradeable_implementation):
    return deploy_compiled_contract(
        abi=contract_assets["ProxyBeacon"]["abi"],
        bytecode=contract_assets["ProxyBeacon"]["bytecode"],
        constructor_args=(upgradeable_implementation.address, ),
        web3=web3,
        private_key=owner_key,
    )
Exemplo n.º 3
0
def beacon_with_currency_network(web3, owned_currency_network, contract_assets,
                                 owner_key):
    return deploy_compiled_contract(
        abi=contract_assets["ProxyBeacon"]["abi"],
        bytecode=contract_assets["ProxyBeacon"]["bytecode"],
        constructor_args=(owned_currency_network.address, ),
        web3=web3,
        private_key=owner_key,
    )
Exemplo n.º 4
0
def proxy(
    owner_key,
    contract_assets,
    web3,
    upgradeable_implementation,
    upgradeable_initialized_value,
    proxy_beacon,
):
    implementation_init_data = upgradeable_implementation.encodeABI(
        "init", (upgradeable_initialized_value, ))
    return deploy_compiled_contract(
        abi=contract_assets["AdministrativeProxy"]["abi"],
        bytecode=contract_assets["AdministrativeProxy"]["bytecode"],
        constructor_args=(proxy_beacon.address, implementation_init_data),
        web3=web3,
        private_key=owner_key,
    )
Exemplo n.º 5
0
def proxy_factory(deploy_contract, contract_assets, web3, chain_id):
    """Returns a proxy factory deployed at a deterministic address"""
    # We need to create a new account that never sent a transaction
    # to make sure the create1 address of the factory does not depend on other tests or fixtures
    aribtrary_key = f"0x{'12345678'*8}"
    new_account = web3.eth.account.from_key(aribtrary_key)
    assert web3.eth.getTransactionCount(new_account.address) == 0
    web3.eth.sendTransaction({"to": new_account.address, "value": 1 * 10**18})

    proxy_factory = deploy_compiled_contract(
        abi=contract_assets["IdentityProxyFactory"]["abi"],
        bytecode=contract_assets["IdentityProxyFactory"]["bytecode"],
        constructor_args=(chain_id, ),
        web3=web3,
        private_key=new_account.key,
    )

    return proxy_factory
Exemplo n.º 6
0
def deploy(
        contract_name,
        *,
        web3: Web3,
        transaction_options: Dict = None,
        private_key: bytes = None,
        constructor_args=(),
):
    if transaction_options is None:
        transaction_options = {}

    contract_interface = contracts[contract_name]
    return deploy_compiled_contract(
        abi=contract_interface["abi"],
        bytecode=contract_interface["bytecode"],
        web3=web3,
        transaction_options=transaction_options,
        private_key=private_key,
        constructor_args=constructor_args,
    )