def pubkeyhash_to_pubkey(pubkeyhash, provided_pubkeys=None): # Search provided pubkeys. if provided_pubkeys: if type(provided_pubkeys) != list: provided_pubkeys = [provided_pubkeys] for pubkey in provided_pubkeys: if pubkeyhash == script.pubkey_to_pubkeyhash(util.unhexlify(pubkey)): return pubkey # Search blockchain. raw_transactions = searchrawtransactions(pubkeyhash, unconfirmed=True) for tx in raw_transactions: for vin in tx["vin"]: scriptsig = vin["scriptSig"] asm = scriptsig["asm"].split(" ") if len(asm) >= 2: pubkey = asm[1] if pubkeyhash == script.pubkey_to_pubkeyhash(util.unhexlify(pubkey)): return pubkey raise UnknownPubKeyError("Public key was neither provided nor published in blockchain.")
def getblock(block_hash): block_hex = BACKEND().getblock(block_hash) return CBlock.deserialize(util.unhexlify(block_hex))