def resolve(name: str, proxy: ElrondProxy) -> Address: name_arg = "0x{}".format(str.encode(name).hex()) dns_address = dns_address_for_name(name) contract = SmartContract(dns_address) result = contract.query(proxy, "resolve", [name_arg]) if len(result) == 0: return Address.zero() return Address(result[0].hex)
def prepare_deploy_transaction(self, owner, arguments, gas_price, gas_limit, value): arguments = arguments or [] gas_price = int(gas_price or config.DEFAULT_GAS_PRICE) gas_limit = int(gas_limit) value = str(value or "0") plain = PlainTransaction() plain.nonce = owner.nonce plain.value = value plain.sender = owner.address.bech32() plain.receiver = Address.zero().bech32() plain.gasPrice = gas_price plain.gasLimit = gas_limit plain.data = self.prepare_deploy_transaction_data(arguments) payload = TransactionPayloadToSign(plain) signature = signing.sign_transaction(payload, owner.pem_file) prepared = PreparedTransaction(plain, signature) return prepared
def deploy(self, owner, arguments, gas_price, gas_limit, value, chain, version) -> Transaction: self.owner = owner self.compute_address() arguments = arguments or [] gas_price = int(gas_price) gas_limit = int(gas_limit) value = str(value or "0") tx = Transaction() tx.nonce = owner.nonce tx.value = value tx.sender = owner.address.bech32() tx.receiver = Address.zero().bech32() tx.gasPrice = gas_price tx.gasLimit = gas_limit tx.data = self.prepare_deploy_transaction_data(arguments) tx.chainID = chain tx.version = version tx.sign(owner) return tx
def dns_resolve(args: Any): addr = resolve(args.name, ElrondProxy(args.proxy)) if addr.hex() != Address.zero().hex(): print(addr.bech32())