2

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) を取得する方法を教えてもらえますか?

4

1 に答える 1