java - Bitcoinj 从钱包发送付款
问题描述
我想从我的钱包中进行发送付款。
public static Transaction send(Wallet wallet,String destinationAddress,long satoshis, NetworkParameters parameters)
throws Exception {
Address dest = Address.fromBase58(parameters, destinationAddress);
SendRequest request = SendRequest.to(dest, Coin.valueOf(satoshis));
Wallet.SendResult result = wallet.sendCoins(request);
Transaction endTransaction = result.broadcastComplete.get();
return endTransaction;
}
或试图使
SendRequest req;
Transaction transaction = new Transaction(parameters);
Coin coinToSpend = Coin.valueOf(600);
//Address addressoSpend = new Address(parameters,"1PSq12YPRBCGwmb2cqqXaGpRrLfotsthPv");
transaction.addOutput(coinToSpend,Address.fromBase58(parameters,"18MQPpjbB5UUwZBT7DALE6Q55pKCtfPCK3"));
req = SendRequest.forTx(transaction);
Wallet.SendResult sendResult = restoredWallet.sendCoins(req);
他们俩都回来了
Exception in thread "main" org.bitcoinj.core.InsufficientMoneyException: Insufficient money, missing 0.0004729 BTC
如何正确发送付款到另一个 BTC 地址?
解决方案
问题实际上在于输入和输出。在新版本的 bitcoinj 中,您应该设置 unput 和 output 以进行交易。不幸的是,它没有在官方页面上更新。下面是我的问题的答案:
Coin value = Coin.valueOf(680l);
Address to = Address.fromBase58(parameters, addressTo);
Transaction transaction = new Transaction(parameters);
transaction.addInput(wallet.getUnspents().get(0));// important to add proper input
transaction.addOutput(value, to);
SendRequest request = SendRequest.forTx(transaction);
request.feePerKb = Coin.valueOf(1000);
Wallet.SendResult sendResult = wallet.sendCoins(peerGroup, request);
推荐阅读
- python - 如何修改我的函数以使用列表理解?
- xcode - Dropbox pod install 错误 - 需要更高的最低部署?
- python - TypeError:'list'和'int'的实例之间不支持'> ='?
- php - 如何在 laravel 中使用 @yield 到 @include 中
- c++ - 这个编译器错误到底要我执行什么?
- file - 限制文件在 gitlab (.gitlab-ci.yml) 中被编辑
- bash - 使用 SED 注释掉 cronjobs(没那么简单)
- c - 内存问题中具有动态数组成员分配位置的C结构
- string - 使用 PowerShell sls (Select-String) vs grep vs findstr
- go - 用于合并任意类型数组的惯用和 DRY 解决方案