如何使用BitcoinJ创建Replace-By-Fee TX

时间:2018-07-25 21:26:08

标签: java bitcoinj

首先在BitcoinJ FrameWork中面临无尽的未决交易

主要文档说它可以由Replace-By-Fee制造。因此,您需要采用旧交易并根据之前的交易创建新交易。

听起来不错,但是如何使用Bitcoinj框架正确地创建另一个框架?

NetworkParameters params = MainNetParams.get();

WalletAppKit wallet = new WalletAppKit(params, new File("."), "_mywallet");
walletKit.startAsync();
walletKit.awaitRunning();

Wallet wallet = walletKit.wallet();

... 有一个待处理

ArrayList<Transaction> pendingList = new ArrayList<>(wallet.getPendingTransactions());
Transaction nextTx = new Transaction(pendingList.get(0));
// → throws Exeption

1 个答案:

答案 0 :(得分:1)

好的,我解决了。

当您有无限个待处理的交易时,首先需要确保将其标记为“按费用替换”,您可以致电:

ArrayList<Transaction> pendingList = new ArrayList<>(wallet.getPendingTransactions());

pendingList.get(0).verify(); // Read console to see transaction info

之后,您需要使用以下代码来实现按费用替换算法:

Transaction transaction = pendingList.get(0);
SendRequest request = SendRequest.forTx(transaction);
request.feePerKb = Transaction.REFERENCE_DEFAULT_MIN_TX_FEE; // Or you can make other highter fee to spped it up

wallet.completeTx(request);
wallet.commitTx(request);

在输出中,您将在此事务详细信息中看到更多的TransactionOutputs。

就这样