bitcoinj Подключите входную транзакцию P2SH к выходной транзакции
Я создал P2SH-адрес и отправил монеты по адресу https://www.blocktrail.com/tBTC/address/2N8Xu6rNAwssXtP2XPjSTuT2ViWQoPeHr3r
Далее я хочу отправить монеты с адреса 2N8Xu6rNAwssXtP2XPjSTuT2ViWQoPeHr3r.
Как подготовить P2SH транзакцию и подключить ее к выходному скрипту?
public static void sendFromP2SH(WalletAppKit kit, Address destAdd, Coin coin) throws AddressFormatException, InsufficientMoneyException, ExecutionException, InterruptedException {
Transaction tx = new Transaction(TestNet3Params.get());
tx.addOutput(coin, destAdd); //prepare destination output
Wallet.SendRequest req = Wallet.SendRequest.forTx(tx);
//TODO prepare P2SH input for output //https://www.blocktrail.com/tBTC/address/2N8Xu6rNAwssXtP2XPjSTuT2ViWQoPeHr3r
Script script = P2SHScript(kit); //2N8Xu6rNAwssXtP2XPjSTuT2ViWQoPeHr3r
TransactionOutput t = null;//... HOW TO CONNECT P2SH input transaction to the output ?
tx.addInput(t);
kit.wallet().completeTx(req);
kit.wallet().commitTx(req.tx);
kit.peerGroup().broadcastTransaction(req.tx).get();
}
prepare script for the P2SH address 2N8Xu6rNAwssXtP2XPjSTuT2ViWQoPeHr3r
public static Script P2SHScript(WalletAppKit kit) {
ECKey pubClientKey = kit.wallet().getImportedKeys().get(0);
ECKey pubServerKey = kit.wallet().getImportedKeys().get(1);
return ScriptBuilder.createP2SHOutputScript(1, ImmutableList.of(pubClientKey, pubServerKey));
}
Спасибо.
1 ответ
Как насчет следующего конструктора?
public TransactionOutput(NetworkParameters params, Transaction parent, BigInteger value, Address to)
Внутри кода он размышляет над адресом "to", чтобы проверить, является ли он многозначным, и соответствующим образом создает выходной скрипт.