如何使用 BitcoinJ 创建 Replace-By-Fee TX
How to create Replace-By-Fee TX with 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
好的,所以我解决了。
当您有无限待处理的交易时,您首先需要做的是确保它被标记为“按费用替换”,您可以通过调用来完成此操作:
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 in this Transaction details。
就是这样
首先在 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
好的,所以我解决了。
当您有无限待处理的交易时,您首先需要做的是确保它被标记为“按费用替换”,您可以通过调用来完成此操作:
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 in this Transaction details。
就是这样