def transact(self): contract_address = get_contract_address(self, self.args.contract_name, "--at is required to specify target contract address") abi = self.args.contract_def["abi"] contract = Contract(self.w3, contract_address, abi) positional_inputs = getattr(self.args, "contract_positional_inputs", []) named_inputs = { name[len("contract_named_input_"):]: value for name, value in self.args.__dict__.items() if name.startswith("contract_named_input_") } gas_price = self.get_gas_price_verbose() txn = contract.build_transaction(self.args.contract_function, self.ident.get_address(), gas_price, *positional_inputs, **named_inputs) if not self.args.yes or self.args.verbose: self._pprint({"transaction": txn}) proceed = self.args.yes or input("Proceed? (y/n): ") == "y" if proceed: receipt = self.ident.transact(txn, self.err_f) events = contract.process_receipt(receipt) self._pprint_receipt_and_events(receipt, events) return receipt, events else: self._error("Cancelled")
def transact_contract_command(self, contract_name, contract_fn, contract_params, is_silent=False): contract_address = get_contract_address(self, contract_name) return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).transact()
def call_contract_command(self, contract_name, contract_fn, contract_params, is_silent=True): contract_address = get_contract_address(self, contract_name) return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).call()
def call(self): contract_address = get_contract_address(self, self.args.contract_name, "--at is required to specify target contract address") abi = self.args.contract_def["abi"] contract = Contract(self.w3, contract_address, abi) positional_inputs = getattr(self.args, "contract_positional_inputs", []) named_inputs = { name[len("contract_named_input_"):]: value for name, value in self.args.__dict__.items() if name.startswith("contract_named_input_") } result = contract.call(self.args.contract_function, *positional_inputs, **named_inputs) self._printout(result) return result
def transact_contract_command(self, contract_name, contract_fn, contract_params, is_silent = False): contract_address = get_contract_address(self, contract_name) return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).transact()
def call_contract_command(self, contract_name, contract_fn, contract_params, is_silent = True): contract_address = get_contract_address(self, contract_name) return self.get_ContractCommand(contract_name, contract_address, contract_fn, contract_params, is_silent).call()
def get_registry_address(self): return get_contract_address(self, "Registry")
def get_mpe_address(self): return get_contract_address(self, "MultiPartyEscrow")
def generate_client_library(self): cur_dir_path = PurePath(os.getcwd()) if not self.args.protodir: client_libraries_base_dir_path = cur_dir_path.joinpath("client_libraries") if not os.path.exists(client_libraries_base_dir_path): os.makedirs(client_libraries_base_dir_path) else: if os.path.isabs(self.args.protodir): client_libraries_base_dir_path = PurePath(self.args.protodir) else: client_libraries_base_dir_path = cur_dir_path.joinpath(self.args.protodir) if not os.path.isdir(client_libraries_base_dir_path): self._error("directory {} does not exist. Please make sure that the specified path exists".format(client_libraries_base_dir_path)) # Create service client libraries path library_language = self.args.language library_org_id = self.args.org_id library_service_id = self.args.service_id library_dir_path = client_libraries_base_dir_path.joinpath(library_language, get_contract_address(self, "Registry"), library_org_id, library_service_id) metadata = self._get_service_metadata_from_registry() model_ipfs_hash = metadata["model_ipfs_hash"] with TemporaryDirectory() as temp_dir: temp_dir_path = PurePath(temp_dir) proto_temp_dir_path = temp_dir_path.joinpath(library_language, library_org_id, library_service_id) safe_extract_proto_from_ipfs(self._get_ipfs_client(), model_ipfs_hash, proto_temp_dir_path) # Compile proto files compile_proto(Path(proto_temp_dir_path), library_dir_path) self._printout('client libraries for service with id "{}" in org with id "{}" generated at {}'.format(library_service_id, library_org_id, library_dir_path))