public void sendBroadcastAnnouncement(BroadcastAnnouncement ba, File f, ProofMessage pm, int lockTime) throws InsufficientMoneyException { //build transaction Transaction tx = new Transaction(params); Script s = ba.buildScript(); System.out.println("Script size is " + s.SIG_SIZE); //System.out.println(s.getScriptType()); ECKey psnymKey = new ECKey(); long unixTime = System.currentTimeMillis() / 1000L; //TODO use bitcoin nets median time tx.setLockTime(CLTVScriptPair.currentBitcoinBIP113Time(bc)-1); CLTVScriptPair sp = new CLTVScriptPair(psnymKey, CLTVScriptPair.currentBitcoinBIP113Time(bc)+lockTime); w.importKey(psnymKey); tx.addOutput(new TransactionOutput(params, tx, pm.getLastTransactionOutput().getValue().subtract(estimateBroadcastFee()), sp.getPubKeyScript().getProgram())); tx.addOutput(Coin.ZERO, s); tx.addInput(pm.getLastTransactionOutput()); tx.getInput(0).setSequenceNumber(3); //the concrete value doesn't matter, this is just for cltv tx.getInput(0).setScriptSig(pm.getScriptPair().calculateSigScript(tx, 0, w)); try { w.commitTx(tx); w.saveToFile(f); } catch (IOException e1) { e1.printStackTrace(); } TransactionBroadcast broadcast = pg.broadcastTransaction(tx); pm.addTransaction(tx, 0, sp); pm.writeToFile(); System.out.println("save broadcast announcement to file"); }
public ListenableFuture<Transaction> broadcastTransaction(final Transaction tx) { TransactionBroadcast broadcast = peerGroup.broadcastTransaction(tx); broadcast.setProgressCallback(new TransactionBroadcast.ProgressCallback() { final String txHash = tx.getHashAsString(); @Override public void onBroadcastProgress(double progress) { Log.d(TAG, "Transaction broadcast - tx: "+txHash+", progress: " + progress); } }); return broadcast.future(); }
public TransactionBroadcast broadcastTransaction(Transaction tx) { Log.i(TAG,"sendTransaction " +tx ); TransactionBroadcast transactionBroadcast = peerGroup.broadcastTransaction(tx); walletObservable.setState(WalletObservable.State.PENDING); walletObservable.notifyObservers(); return transactionBroadcast; }
public ListenableFuture<Transaction> broadCastAsync(final Transaction transaction) { // Fake transaction for when testing. // peerGroup.broadcastTransaction would otherwise fail, as it waits for at least 1 connection which will // never happen. if (appConfig.getBitcoinNet().equals(BitcoinNet.UNITTEST)) { SettableFuture<Transaction> future = SettableFuture.create(); future.set(transaction); return TransactionBroadcast.createMockBroadcast(transaction, future).future(); } else { return peerGroup.broadcastTransaction(transaction).future(); } }