def download_registry(general_config, config_root, registry_outfile, network, force): """Download the latest registry.""" # Setup emitter = general_config.emitter ensure_config_root(config_root) github_source = GithubRegistrySource( network=network, registry_name=BaseContractRegistry.REGISTRY_NAME) source_manager = RegistrySourceManager(sources=[github_source]) if not force: prompt = CONFIRM_MANUAL_REGISTRY_DOWNLOAD.format(source=github_source) click.confirm(prompt, abort=True) try: registry = InMemoryContractRegistry.from_latest_publication( source_manager=source_manager, network=network) except RegistrySourceManager.NoSourcesAvailable: emitter.message(REGISTRY_NOT_AVAILABLE, color="red") raise click.Abort try: output_filepath = registry.commit(filepath=registry_outfile, overwrite=force) except InMemoryContractRegistry.CantOverwriteRegistry: emitter.message(CANNOT_OVERWRITE_REGISTRY, color="red") raise click.Abort emitter.message( SUCCESSFUL_REGISTRY_DOWNLOAD.format(output_filepath=output_filepath))
def inspect(general_config, provider_uri, config_root, registry_infile, deployer_address, poa, ignore_solidity_check): """Echo owner information and bare contract metadata.""" emitter = general_config.emitter ensure_config_root(config_root) initialize_deployer_interface(poa=poa, provider_uri=provider_uri, emitter=emitter, ignore_solidity_check=ignore_solidity_check) local_registry = establish_deployer_registry( emitter=emitter, registry_infile=registry_infile, download_registry=not bool(registry_infile)) paint_deployer_contract_inspection(emitter=emitter, registry=local_registry, deployer_address=deployer_address)
def inspect(general_config, eth_provider_uri, config_root, registry_infile, deployer_address, poa, ignore_solidity_check, network): """Echo owner information and bare contract metadata.""" emitter = general_config.emitter ensure_config_root(config_root) initialize_deployer_interface(poa=poa, eth_provider_uri=eth_provider_uri, emitter=emitter, ignore_solidity_check=ignore_solidity_check) download_required = not bool(registry_infile) registry = establish_deployer_registry(emitter=emitter, registry_infile=registry_infile, download_registry=download_required, network=network if download_required else None) paint_deployer_contract_inspection(emitter=emitter, registry=registry, deployer_address=deployer_address)
def create_actor(self, emitter: StdoutEmitter, is_multisig: bool = False ) -> Tuple[ContractAdministrator, str, BlockchainInterface, BaseContractRegistry]: ensure_config_root(self.config_root) deployer_interface = initialize_deployer_interface(poa=self.poa, provider_uri=self.provider_uri, emitter=emitter, ignore_solidity_check=self.ignore_solidity_check, gas_strategy=self.gas_strategy, max_gas_price=self.max_gas_price) # Warnings deployer_pre_launch_warnings(emitter, self.etherscan, self.hw_wallet) # # Establish Registry # local_registry = establish_deployer_registry(emitter=emitter, use_existing_registry=bool(self.contract_name), # TODO: Issue #2314 registry_infile=self.registry_infile, registry_outfile=self.registry_outfile, dev=self.dev, network=self.network) # # Make Authenticated Deployment Actor # # Verify Address & collect password password = None if is_multisig: multisig_agent = ContractAgency.get_agent(MultiSigAgent, registry=local_registry) deployer_address = multisig_agent.contract.address is_transacting = False else: is_transacting = True deployer_address = self.deployer_address if not deployer_address: deployer_address = select_client_account(emitter=emitter, prompt=SELECT_DEPLOYER_ACCOUNT, provider_uri=self.provider_uri, signer_uri=self.signer_uri, show_eth_balance=True) if not self.force: click.confirm(CONFIRM_SELECTED_ACCOUNT.format(address=deployer_address), abort=True) is_clef = ClefSigner.is_valid_clef_uri(self.signer_uri) eth_password_is_needed = not self.hw_wallet and not deployer_interface.client.is_local and not is_clef if eth_password_is_needed: password = get_client_password(checksum_address=deployer_address) # Produce Actor testnet = deployer_interface.client.chain_name != PUBLIC_CHAINS[1] # Mainnet signer = Signer.from_signer_uri(self.signer_uri, testnet=testnet) if self.signer_uri else None ADMINISTRATOR = ContractAdministrator(registry=local_registry, client_password=password, deployer_address=deployer_address, is_transacting=is_transacting, signer=signer) # Verify ETH Balance emitter.echo(DEPLOYER_BALANCE.format(eth_balance=ADMINISTRATOR.eth_balance)) if is_transacting and ADMINISTRATOR.eth_balance == 0: emitter.echo(DEPLOYER_ADDRESS_ZERO_ETH, color='red', bold=True) raise click.Abort() return ADMINISTRATOR, deployer_address, deployer_interface, local_registry