【问题标题】:bitcoinj Connect P2SH input transaction to the output transactionbitcoinj 将 P2SH 输入交易连接到输出交易
【发布时间】:2015-06-30 12:58:37
【问题描述】:

我已经创建了 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));
        }

谢谢。

【问题讨论】:

  • 嘿!你解决了这个问题吗?如果是,您介意分享您找到的解决方案吗?

标签: bitcoin bitcoinj


【解决方案1】:

下面的构造函数呢?

public TransactionOutput(NetworkParameters params, Transaction parent, BigInteger value, Address to)

在代码中,它推测“to”地址以检查它是否是多重签名并适当地创建输出脚本。

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2020-07-30
    • 2011-01-21
    相关资源
    最近更新 更多