Im currently trying to make transactions from a p2sh Wallet.
I ran the TransactionInput.verify() and it didnt throw any exceptions.
When i try to run the completeTx() method on the SendRequest it thorws  a 
NullPointerException.
When i inspected the debugged the code execution i discovered that the 
Wallet.findRedeemDataFromScriptHash() returns null.

Why does this method returns null and what is its purpose how can i fix or 
get around this problem?

Here is the code, thanks for the help:

        Transaction clientTx = new Transaction(params);
        clientTx.addOutput(value, testWallet.wallet().getWatchingKey());
        TransactionInput input = clientTx.addInput(multisigOutput);
        Sha256Hash sighashClient = clientTx.hashForSignature(0, redeem, 
Transaction.SigHash.ALL, false);
        ECKey.ECDSASignature mySignature = 
client.wallet().getWatchingKey().sign(sighashClient);

        TransactionSignature clientTxSig = new 
TransactionSignature(mySignature, Transaction.SigHash.ALL, false);
        TransactionSignature serverTxSig = new TransactionSignature(signature, 
Transaction.SigHash.ALL, false);

        Script inputScript = 
ScriptBuilder.createP2SHMultiSigInputScript(ImmutableList.of(serverTxSig, 
clientTxSig),redeem);


        byte[] sigHashByte = sighashClient.getBytes();
        byte[] clientWatchingKey = client.wallet().getWatchingKey().getPubKey();
        byte[] serverWatchingKey = server.wallet().getWatchingKey().getPubKey();

        
System.out.println(ECKey.verify(sigHashByte,mySignature,clientWatchingKey));
        
System.out.println(ECKey.verify(sigHashByte,signature,serverWatchingKey));

        input.setScriptSig(inputScript);
        input.verify(multisigOutput);


        BlockChain chain = multisig.chain();
        BlockStore bs = chain.getBlockStore();
        Peer peer = multisig.peerGroup().getDownloadPeer();
        Block b = peer.getBlock(bs.getChainHead().getHeader().getHash()).get();

//        System.out.println(testWallet.wallet().getTransactions(true));
        SendRequest request = SendRequest.forTx(clientTx);
        PeerGroup peerGroup = multisig.peerGroup();
        peerGroup.setMinBroadcastConnections(2);
        System.out.println(clientTx.getOutput(0));
        multisig.wallet().completeTx(request);



And here is the exception:


Exception in thread "main" java.lang.NullPointerException
        at 
org.bitcoinj.wallet.DecryptingKeyBag.maybeDecrypt(DecryptingKeyBag.java:58)
        at 
org.bitcoinj.wallet.DecryptingKeyBag.findRedeemDataFromScriptHash(DecryptingKeyBag.java:79)
        at 
org.bitcoinj.core.TransactionOutPoint.getConnectedRedeemData(TransactionOutPoint.java:175)
        at 
org.bitcoinj.core.TransactionInput.getConnectedRedeemData(TransactionInput.java:298)
        at org.bitcoinj.wallet.Wallet.signTransaction(Wallet.java:4061)
        at org.bitcoinj.wallet.Wallet.completeTx(Wallet.java:3998)
        at kesem.sdk.Testing.BitcoinJ.createP2SHAccount(BitcoinJ.java:166)
        at kesem.sdk.Testing.BitcoinJ.main(BitcoinJ.java:252)


-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to bitcoinj+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to