-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Copy pathutils.py
27 lines (23 loc) · 1.04 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from eth_utils.toolz import (
identity,
)
def deploy(w3, contract_factory, apply_func=identity, args=None):
args = args or []
deploy_txn = contract_factory.constructor(*args).transact()
deploy_receipt = w3.eth.wait_for_transaction_receipt(deploy_txn)
assert deploy_receipt is not None
address = apply_func(deploy_receipt["contractAddress"])
contract = contract_factory(address=address)
assert contract.address == address
assert len(w3.eth.get_code(contract.address)) > 0
return contract
async def async_deploy(async_web3, contract_factory, apply_func=identity, args=None):
args = args or []
deploy_txn = await contract_factory.constructor(*args).transact()
deploy_receipt = await async_web3.eth.wait_for_transaction_receipt(deploy_txn)
assert deploy_receipt is not None
address = apply_func(deploy_receipt["contractAddress"])
contract = contract_factory(address=address)
assert contract.address == address
assert len(await async_web3.eth.get_code(contract.address)) > 0
return contract