ycloud001
7 ヶ月 前に投稿  10 Karma
BitcoinのAPIを使って特定のアドレスに対しての送信元アドレス(from_address)を取得することは可能でしょうか?

たとえば、以下のようなアドレスがあり、このアドレスに対して送金してくれたアドレスの一覧を取得したいです。
15gJiApW3G9MN2iTteQwQbq7NundwGWwv6

https://www.blockchain.com/ja/btc/address/15gJiApW3G9MN2iTteQwQbq7NundwGWwv6

また、件数も多いため、目視ではなく、APIなどを用いて自動で取得したいです。
ロジックはこちらで組みますが、そのようなことは可能でしょうか?

bitpayをはじめ、いろんなところがAPIを出しておりますが、
いずれもレスポンス情報の中に、送信元のアドレスまでは入っておりません。

https://insight.bitpay.com/api/addr/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX/utxo

その時のtx id は入っているため、そこから遡って確認できるのかと思い調べているのですが、よくわかりませんでした。

公開台帳なのでできるものかと思っておりましたが、Ethereumなどと違い、送信元がすぐに取得できず困っております。

宜しくお願い致します。

ja
#bitcoin
bitcoin
ycloud001
7 ヶ月 前に投稿  10 Karma
BitcoinのAPIを使って特定のアドレスに対しての送信元アドレス(from_address)を取得することは可能でしょうか?

たとえば、以下のようなアドレスがあり、このアドレスに対して送金してくれたアドレスの一覧を取得したいです。
15gJiApW3G9MN2iTteQwQbq7NundwGWwv6

https://www.blockchain.com/ja/btc/address/15gJiApW3G9MN2iTteQwQbq7NundwGWwv6

また、件数も多いため、目視ではなく、APIなどを用いて自動で取得したいです。
ロジックはこちらで組みますが、そのようなことは可能でしょうか?

bitpayをはじめ、いろんなところがAPIを出しておりますが、
いずれもレスポンス情報の中に、送信元のアドレスまでは入っておりません。

https://insight.bitpay.com/api/addr/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX/utxo

その時のtx id は入っているため、そこから遡って確認できるのかと思い調べているのですが、よくわかりませんでした。

公開台帳なのでできるものかと思っておりましたが、Ethereumなどと違い、送信元がすぐに取得できず困っております。

宜しくお願い致します。

ja
#bitcoin
bitcoin

1回答
nakajo
7 ヶ月 前に回答 100 Karma

結論を先に述べると、txinに指定されたprev txのtxinに含まれるunlock scriptを調べることで、送信元のアドレスを取得できます。

bitcoinではtxinに入力値としてのtx hashとそのtxの中のtxoutのindex番号が指定されております。
そのため、とあるtxへの送信元アドレスを知りたい場合は、txinで指定されたtx hashからprev txのデータを取得し、そのtxのなかのtxinに記述されているunlock scriptを読むことで送信元のpublic keyが取得できます。
あとはこのpublic keyからbitcoin addressを復元すればよいです。
ただし、これは対象のtxのscript形式がP2PKHの場合であり、そのほかにもP2SHの場合があり、P2SHであらわされるスクリプトは一般的に、Multisigの場合とP2WPKHの場合があります。
それぞれの場合で送信元のpublic keyを取得する方法が若干違いますがいずれもtxinに含まれるunlock scriptから取得できます。
詳しくは以下の記事を参考にしてみてください。

https://bitcoincore.org/ja/segwit_wallet_dev/
https://qiita.com/dai197x/items/03336490aeee452988da
https://qiita.com/shibataka000/items/b9378cd866ada750ecbc

結論を先に述べると、txinに指定されたprev txのtxinに含まれるunlock scriptを調べることで、送信元のアドレスを取得できます。

bitcoinではtxinに入力値としてのtx hashとそのtxの中のtxoutのindex番号が指定されております。
そのため、とあるtxへの送信元アドレスを知りたい場合は、txinで指定されたtx hashからprev txのデータを取得し、そのtxのなかのtxinに記述されているunlock scriptを読むことで送信元のpublic keyが取得できます。
あとはこのpublic keyからbitcoin addressを復元すればよいです。
ただし、これは対象のtxのscript形式がP2PKHの場合であり、そのほかにもP2SHの場合があり、P2SHであらわされるスクリプトは一般的に、Multisigの場合とP2WPKHの場合があります。
それぞれの場合で送信元のpublic keyを取得する方法が若干違いますがいずれもtxinに含まれるunlock scriptから取得できます。
詳しくは以下の記事を参考にしてみてください。

https://bitcoincore.org/ja/segwit_wallet_dev/
https://qiita.com/dai197x/items/03336490aeee452988da
https://qiita.com/shibataka000/items/b9378cd866ada750ecbc

Earn tokens by posting and answering questions about blockchain!
Karma to eth
あなたの回答