Address
transactioninput.getFromAddress() 和 transactioninput.getConnectedOutput().getAddressFromP2SH(networkparameter)) 有什麼區別?
我期待,在 getFromAddress() 返回地址的情況下, transactioninput.getConnectedOutput().getAddressFromP2SH(networkparameter)) 應該返回相同的地址。但是,有時 transactioninput.getConnectedOutput() 返回一個空值,儘管 getFromAddress() 返回一個正確的地址。是什麼原因?
如果這兩種方法不同,我如何在不使用blockchain.info-api的情況下返回JSON對像中數組“input”中項目的對象“prev_out”的欄位“addr”的值?(例如,對於這個<https://blockchain.info/address/1LoD9DeUeCfnZueSVPzFaFkfFcx8mG1Add?format=json>)。
在瀏覽了有關您詢問的方法的bitcoinj API 文件後,您使第二種方法工作的方式,您應該連接輸入事務以從該特定 tx 獲取輸出。您可以瀏覽我上面給出的連結,並在需要時進行報告。
Shabahat 的回答很好,但以下是每種獲取地址的方法的工作原理:
getFromAddress()
獲取 scriptSig 的最後一個元素,並對其進行散列以找到 P2SH 地址。如果交易有效且 P2SH,這將始終是正確的。你可以為 P2PKH 做類似的事情,但你不能為 P2PK 做這件事。(P2PK 不包括 scriptSig 中的公鑰。)transactioninput.getConnectedOutput().getAddressFromP2SH()
查看之前交易中的 scriptPubKey,並嘗試將其轉換為地址。並非所有有效的 scriptPubKey 都可以用標準地址格式表示,因此這並不總是有效。(不過,它適用於 P2PKH、P2SH 和 P2PK 的常見情況。)關於我的目的,我已經瀏覽了該連結,並且我認為我已經連接了輸入事務以從該特定 tx 中獲取輸出以及顯示的程式碼。
你在檢查 的返回值
connect
嗎?