7 open_web3_from_ctx, get_erc20_instance_description, load_eth_address, \
8 load_eth_private_key, write_mixer_description, MixerDescription, \
9 create_prover_client, load_contract_address
11 from click
import Context, command, option, pass_context, ClickException
12 from typing
import Optional
16 @option(
"--eth-addr", help=
"Sender eth address or address filename")
17 @option(
"--eth-private-key", help=
"Sender's eth private key file")
20 default=INSTANCE_FILE_DEFAULT,
21 help=f
"File to write deployment address to (default={INSTANCE_FILE_DEFAULT})")
22 @option(
"--token-address", help=
"Address of token contract (if used)")
24 "--permitted-dispatcher",
25 help=
"Instance file or address of contract permitted to call dispatch method")
26 @option(
"--vk-hash", type=str, help=
"verification key hash for dispatch calls")
27 @option(
"--deploy-gas", type=int, help=
"Maximum gas, in Wei")
31 eth_addr: Optional[str],
32 eth_private_key: Optional[str],
34 token_address: Optional[str],
35 permitted_dispatcher: Optional[str],
36 vk_hash: Optional[str],
37 deploy_gas: Optional[int]) ->
None:
39 Deploy the zeth contracts and record the instantiation details.
46 if bool(permitted_dispatcher) != bool(vk_hash):
48 "Must supply BOTH --permitted-dispatch AND --vk-hash, or NEITHER")
50 print(f
"deploy: eth_address={eth_address}")
51 print(f
"deploy: instance_out={instance_out}")
52 print(f
"deploy: token_address={token_address}")
54 if permitted_dispatcher:
56 print(f
"deploy: permitted_dispatcher={permitted_dispatcher}")
57 print(f
"deploy: vk_hash={vk_hash}")
60 if token_address
else None
63 _zeth_client, mixer_instance_desc = MixerClient.deploy(
69 permitted_dispatcher=permitted_dispatcher,
71 deploy_gas=deploy_gas)
74 mixer=mixer_instance_desc,
75 token=token_instance_desc,
76 permitted_dispatcher=permitted_dispatcher,