Look if there're some log messages telling you something. Also I recommend 
to not be shy of debugging into the bitcoinj lib. It's also quite new for 
me but that cleared some things up.

Am Mittwoch, 14. Dezember 2016 04:12:26 UTC+1 schrieb liuwh:
>
> Thanks a lot for your reply, I just want to send transaction by peer to 
> peer, follow your suggestion, I finished the transfer function, but the 
> receive address did not receive bitcoin,  can you help me to find something 
> wrong with my code?
>
> public void transfer(List<SendIn> sendInList, List<SendOut> sendOutList, 
> List<String> privateKeys) {
>   NetworkParameters networkParameters = TestNet3Params.get();
>   Transaction myOwnConstructedTx = new Transaction(networkParameters);
> // List<TransactionOutput> outputsToMyAddr = something(); // where ever 
> you got these from
>   try {
>     for (int i = 0; i < sendInList.size(); i++) {
>       String address = sendInList.get(i).getAddress();
>       String txHash = sendInList.get(i).getTxHash();
>       String txData = getTxData(txHash);
>       byte[] bytes = Utils.HEX.decode(txData);
>       Transaction spentTx = new Transaction(networkParameters, bytes);
>       for (int j = 0; j < spentTx.getOutputs().size(); j++) {
> if 
> (address.equals(spentTx.getOutput(j).getScriptPubKey().getToAddress(networkParameters).toString()))
>  
> {
>   myOwnConstructedTx.addInput(spentTx.getOutput(j));
>   break;
> }
>       }
>     }
>
>     for (int i = 0; i < sendOutList.size(); i++) {
>       String addressJson = sendOutList.get(i).getAddress();
>       String coinJson = sendOutList.get(i).getValue().toString();
>       Address address = new Address(networkParameters, addressJson);
>       Coin coin = Coin.parseCoin(coinJson);
>       myOwnConstructedTx.addOutput(coin, address);
>     }
>   } catch (Exception e) {
>     e.printStackTrace();
>   }
> // myOwnConstructedTx.addInput(outputsToMyAddr.get(0));
>
>   List<ECKey> eckeys = new ArrayList<ECKey>();
>   for (String privateKey : privateKeys) {
>     ECKey key;
>     if (privateKey.length() == 51 || privateKey.length() == 52) {
>       DumpedPrivateKey dumpedPrivateKey = 
> DumpedPrivateKey.fromBase58(networkParameters, privateKey);
>       key = dumpedPrivateKey.getKey();
>     } else {
>       BigInteger privKey = Base58.decodeToBigInteger(privateKey);
>       key = ECKey.fromPrivate(privKey);
>     }
>           
>     eckeys.add(key);
>   }
>   KeyChainGroup group = new KeyChainGroup(networkParameters);
>   group.importKeys(eckeys);
>   KeyBag keys =  new Wallet(networkParameters, group); // or a wallet, or 
> something else with keys that can sign the used UTXO
>
>   TransactionInput input = myOwnConstructedTx.getInput(0);
>   Script scriptPubKey = 
> myOwnConstructedTx.getInput(0).getConnectedOutput().getScriptPubKey();
>   RedeemData redeemData = input.getConnectedRedeemData(keys);
>   
> input.setScriptSig(scriptPubKey.createEmptyInputScript(redeemData.keys.get(0),
>  
> redeemData.redeemScript));
>   TransactionSigner.ProposedTransaction proposal = new 
> TransactionSigner.ProposedTransaction(myOwnConstructedTx);
>   new LocalTransactionSigner().signInputs(proposal, keys);
>
>   PeerGroup peerGroup = new PeerGroup(networkParameters);
>   peerGroup.broadcastTransaction(myOwnConstructedTx);
> }
>
>
>
> 在 2016年12月14日星期三 UTC+8上午5:53:22,Tobias B.写道:
>>
>> What do you mean by not in your wallet? I think you need the UTXO in some 
>> way. But it doesn't have to be contained in a wallet. When you have 
>> information about a transaction that pays to your bitcoin address you can 
>> construct a transaction using this UTXO without a wallet by construction 
>> the transaction yourself.
>> Let's say you have a list of transaction outputs that pay to your address 
>> and are not already spent:
>>
>> List<TransactionOutput> outputsToMyAddr = something(); // where ever you 
>> got these from
>>
>> Transaction myOwnConstructedTx = new 
>> Transaction(myconf.getNetworkParameters());
>>
>> myOwnConstructedTx.addInput(outputsToMyAddr.get(0));
>>
>> KeyBag keys = getSomeKeyChainGroup(); // or a wallet, or something else 
>> with keys that can sign the used UTXO
>>
>> TransactionInput input = myOwnConstructedTx.getInput(0);
>> Script scriptPubKey = 
>> myOwnConstructedTx.getInput(0).getConnectedOutput().getScriptPubKey();
>> RedeemData redeemData = txIn.getConnectedRedeemData(keys);
>> input.setScriptSig(scriptPubKey.createEmptyInputScript(redeemData.keys.get(0),
>>  
>> redeemData.redeemScript));
>> TransactionSigner.ProposedTransaction proposal = new 
>> TransactionSigner.ProposedTransaction(tx);
>> new LocalTransactionSigner().signInputs(proposal, keys);
>>
>> PeerGroup peerGroup = getAPeerGroup();
>> peerGroup.broadcastTransaction(tx);
>>
>> I think something like that should do it.
>>
>> Am Montag, 12. Dezember 2016 08:33:31 UTC+1 schrieb liuwh:
>>>
>>> is it possible send transaction from one bitcoin address (not in wallet) 
>>> to another address by bitcoinj?
>>> I have read some bitcoinj sample about send transaction in bitcoinj, 
>>> almost all of them are realized by Wallet, UTXO's are  in wallet.
>>>
>>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to