def execute(self, arguments): asset_id = None from_addr = None watch_only = False do_count = False wallet = PromptData.Wallet arguments, from_addr_str = PromptUtils.get_from_addr(arguments) if from_addr_str: if not isValidPublicAddress(from_addr_str): print("Invalid address specified") return from_addr = wallet.ToScriptHash(from_addr_str) for item in arguments: if item == '--watch': watch_only = True elif item == '--count': do_count = True else: asset_id = PromptUtils.get_asset_id(wallet, item) return ShowUnspentCoins(wallet, asset_id, from_addr, watch_only, do_count)
def execute(self, arguments): from_addr_str = None to_addr_str = None args = arguments if args: args, from_addr_str = PromptUtils.get_from_addr(args) args, to_addr_str = PromptUtils.get_to_addr(args) return ClaimGas(PromptData.Wallet, True, from_addr_str, to_addr_str)
def execute(self, arguments): wallet = PromptData.Wallet if not wallet: print("Please open a wallet") return False arguments, from_addr = PromptUtils.get_from_addr(arguments) arguments, invoke_attrs = PromptUtils.get_tx_attr_from_args(arguments) arguments, owners = PromptUtils.get_owners_from_params(arguments) if len(arguments) < 1: print("Please specify the required parameters") return False hash_string = arguments[0] try: script_hash = UInt160.ParseString(hash_string) except Exception: # because UInt160 throws a generic exception. Should be fixed in the future print("Invalid script hash") return False tx, fee, results, num_ops, engine_success = TestInvokeContract(wallet, arguments, from_addr=from_addr, invoke_attrs=invoke_attrs, owners=owners) if tx and results: parameterized_results = [ContractParameter.ToParameter(item).ToJson() for item in results] print( "\n-------------------------------------------------------------------------------------------------------------------------------------") print("Test invoke successful") print(f"Total operations: {num_ops}") print(f"Results {str(parameterized_results)}") print(f"Invoke TX GAS cost: {tx.Gas.value / Fixed8.D}") print(f"Invoke TX fee: {fee.value / Fixed8.D}") print( "-------------------------------------------------------------------------------------------------------------------------------------\n") print("Enter your password to continue and invoke on the network\n") tx.Attributes = invoke_attrs passwd = prompt("[password]> ", is_password=True) if not wallet.ValidatePassword(passwd): return print("Incorrect password") return InvokeContract(wallet, tx, fee, from_addr=from_addr, owners=owners) else: print("Error testing contract invoke") return False
def execute(self, arguments): wallet = PromptData.Wallet if not wallet: print("Please open a wallet") return False if len(arguments) < 5: print("Please specify the required parameters") return False args, from_addr = PromptUtils.get_from_addr(arguments) arguments, priority_fee = PromptUtils.get_fee(arguments) p_fee = Fixed8.Zero() if priority_fee is not None: p_fee = priority_fee if p_fee is False: logger.debug("invalid fee") return False path = args[0] try: needs_storage = bool(util.strtobool(args[1])) needs_dynamic_invoke = bool(util.strtobool(args[2])) is_payable = bool(util.strtobool(args[3])) except ValueError: print("Invalid boolean option") return False params = args[4] return_type = args[5] try: function_code = LoadContract(path, needs_storage, needs_dynamic_invoke, is_payable, params, return_type) except (ValueError, Exception) as e: print(str(e)) return False contract_script = GatherContractDetails(function_code) if not contract_script: print("Failed to generate deploy script") return False tx, fee, results, num_ops, engine_success = test_invoke( contract_script, wallet, [], from_addr=from_addr) if tx and results: print( "\n-------------------------------------------------------------------------------------------------------------------------------------" ) print("Test deploy invoke successful") print(f"Total operations executed: {num_ops}") print("Results:") print([item.GetInterface() for item in results]) print(f"Deploy Invoke TX GAS cost: {tx.Gas.value / Fixed8.D}") print(f"Deploy Invoke TX Fee: {fee.value / Fixed8.D}") print( "-------------------------------------------------------------------------------------------------------------------------------------\n" ) comb_fee = p_fee + fee if comb_fee != fee: print( f"Priority Fee ({p_fee.value / Fixed8.D}) + Deploy Invoke TX Fee ({fee.value / Fixed8.D}) = {comb_fee.value / Fixed8.D}\n" ) print("Enter your password to continue and deploy this contract") passwd = prompt("[password]> ", is_password=True) if not wallet.ValidatePassword(passwd): print("Incorrect password") return False return InvokeContract(wallet, tx, comb_fee, from_addr=from_addr) else: print("Test invoke failed") print(f"TX is {tx}, results are {results}") return False
def execute(self, arguments): wallet = PromptData.Wallet if not wallet: print("Please open a wallet") return False arguments, from_addr = PromptUtils.get_from_addr(arguments) arguments, priority_fee = PromptUtils.get_fee(arguments) arguments, invoke_attrs = PromptUtils.get_tx_attr_from_args(arguments) arguments, owners = PromptUtils.get_owners_from_params(arguments) arguments, return_type = PromptUtils.get_return_type_from_args(arguments) if len(arguments) < 1: print("Please specify the required parameters") return False hash_string = arguments[0] try: script_hash = UInt160.ParseString(hash_string) except Exception: # because UInt160 throws a generic exception. Should be fixed in the future print("Invalid script hash") return False p_fee = Fixed8.Zero() if priority_fee is not None: p_fee = priority_fee if p_fee is False: logger.debug("invalid fee") return False tx, fee, results, num_ops, engine_success = TestInvokeContract(wallet, arguments, from_addr=from_addr, invoke_attrs=invoke_attrs, owners=owners) if tx and results: if return_type is not None: try: parameterized_results = [ContractParameter.AsParameterType(ContractParameterType.FromString(return_type), item).ToJson() for item in results] except ValueError: logger.debug("invalid return type") return False else: parameterized_results = [ContractParameter.ToParameter(item).ToJson() for item in results] print( "\n-------------------------------------------------------------------------------------------------------------------------------------") print("Test invoke successful") print(f"Total operations: {num_ops}") print(f"Results {str(parameterized_results)}") print(f"Invoke TX GAS cost: {tx.Gas.value / Fixed8.D}") print(f"Invoke TX fee: {fee.value / Fixed8.D}") print( "-------------------------------------------------------------------------------------------------------------------------------------\n") comb_fee = p_fee + fee if comb_fee != fee: print(f"Priority Fee ({p_fee.value / Fixed8.D}) + Invoke TX Fee ({fee.value / Fixed8.D}) = {comb_fee.value / Fixed8.D}\n") print("Enter your password to send this invocation to the network") tx.Attributes = invoke_attrs try: passwd = prompt("[password]> ", is_password=True) except KeyboardInterrupt: print("Invocation cancelled") return False if not wallet.ValidatePassword(passwd): return print("Incorrect password") return InvokeContract(wallet, tx, comb_fee, from_addr=from_addr, owners=owners) else: print("Error testing contract invoke") return False