Bitcoinj
BitcoinJ 如何理解接收地址?
我需要從客戶那裡接收比特幣,然後在他們的虛擬賬戶中添加一些積分。我使用
BitcoinJ
錢包,我想為每個客戶提供由創建的唯一地址walletAppKit.wallet().freshReceiveAddress()
但是當我收到硬幣時,我無法定義向我發送硬幣的客戶。
walletAppKit.wallet().addCoinsReceivedEventListener((w, tx, prevBalance, newBalance)
包含所有資訊,但我沒有看到任何地址資訊來定義客戶。
可以有許多收件人(在同一事務中),因此您需要迭代正確的收件人。例如對於傳入的交易,你可以做
for (TransactionOutput output : tx.getOutputs()) { try { if (output.isMine(wallet)) { Script script = output.getScriptPubKey(); Address address = script.getToAddress(Constants.NETWORK_PARAMETERS,true); // do something with the address } } catch (final ScriptException x){} }
我對 bitcoinj 不是很熟悉,但在我看來,您需要執行以下操作。
您已通過收到的交易 (
tx
)。呼叫getOutputs
以獲取交易輸出的列表,並且對於每個輸出,呼叫getAddressFromP2PKHScript
以確定該輸出所記入的地址。您應該考慮到可能有多個輸出支付相同的地址,或者多個輸出支付您錢包中的不同地址的可能性。