我一直在尝试使用一些 python 代码从 Namecoin 交易中提取输入地址。此代码适用于常规交易(其中一些名称币从一个地址转移到另一个地址);但是,这不适用于具有名称操作的事务,例如 name_new。这是一些代码:
raw = namecoind.getrawtransaction(tx_hash)
data = namecoind.decoderawtransaction(raw)
if 'vin' in data:
inputs = data['vin']
for input in inputs:
input_value = input.get('value')
if 'scriptSig' in input:
script_sig_asm = str(input['scriptSig'].get('asm'))
script_sig_parts = script_sig_asm.split(' ')
if len(script_sig_parts) > 1 and (len(script_sig_parts[-1]) == 130
or len(script_sig_parts[-1]) == 66):
public_key_string = script_sig_parts[-1]
try:
recipient_address = NamecoinPublicKey(public_key_string, verify=False).address()
print recipient_address
except Exception, e:
print str(e)
return
elif len(script_sig_parts) == 1:
print "coinbase transaction input"
return
#print "Inputs:"
在常规交易上运行此代码是可行的,即我们获得了收件人地址。但是为这样的名称操作运行此代码表明它是一个 coinbase 交易,即
len(script_sig_parts) == 1
为 True,因此接收者地址为空。
谁能指出我如何在涉及名称操作的 Namecoin 交易中获取收件人地址(在上述交易中,它是:NCAzVGKq8JrsETxAkgw3MsDPinAEPwsTfn)?