1

首先面临着 BitcoinJ 框架中无休止的待处理交易

主要文档说它可以通过 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
4

1 回答 1

1

好的,所以我解决了。

当您有无限待处理交易时,您需要做的第一件事是确保它标记为«replace-by-fee»,您可以通过调用来做到这一点:

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

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

之后需要使用下面的代码来实现replace-by-fee算法:

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);

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

而已

于 2018-08-02T17:46:56.117 回答