Python コードを使用して Namecoin トランザクションから入力アドレスを抽出しようとしています。このコードは、通常のトランザクション (一部のネームコインが 1 つのアドレスから別のアドレスに転送される場合) で機能します。ただし、これは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:"
このコードを通常のトランザクションで実行すると、受信者のアドレスが取得されます。しかし、このような名前操作のためにこのコードを実行すると、それがコインベースのトランザクションであることがわかります。つまり、
レン (script_sig_parts) == 1
は True であるため、recipient_address は空です。
名前操作を伴う Namecoin トランザクションで受信者アドレス (上記のトランザクションでは、NCAzVGKq8JrsETxAkgw3MsDPinAEPwsTfn) を取得する方法を教えてもらえますか?