Bitcoinj

BitcoinJ 如何理解接收地址?

  • June 18, 2018

我需要從客戶那裡接收比特幣,然後在他們的虛擬賬戶中添加一些積分。我使用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以確定該輸出所記入的地址。

您應該考慮到可能有多個輸出支付相同的地址,或者多個輸出支付您錢包中的不同地址的可能性。

引用自:https://bitcoin.stackexchange.com/questions/76317