mirror of
https://github.com/Qortal/qortal.git
synced 2025-04-29 06:17:51 +00:00
Including unconfirmed transactions for wallet balances while spending foreign coin. This is for sends and for responding to trade sell orders. This is not for any other stages in the trading process after the initial response.
This commit is contained in:
parent
211fc0d5a4
commit
da889f2905
@ -157,7 +157,7 @@ public class CrossChainHtlcResource {
|
|||||||
htlcStatus.bitcoinP2shAddress = p2shAddress;
|
htlcStatus.bitcoinP2shAddress = p2shAddress;
|
||||||
htlcStatus.bitcoinP2shBalance = BigDecimal.valueOf(p2shBalance, 8);
|
htlcStatus.bitcoinP2shBalance = BigDecimal.valueOf(p2shBalance, 8);
|
||||||
|
|
||||||
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddress.toString());
|
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddress.toString(), false);
|
||||||
|
|
||||||
if (p2shBalance > 0L && !fundingOutputs.isEmpty()) {
|
if (p2shBalance > 0L && !fundingOutputs.isEmpty()) {
|
||||||
htlcStatus.canRedeem = now >= medianBlockTime * 1000L;
|
htlcStatus.canRedeem = now >= medianBlockTime * 1000L;
|
||||||
@ -401,7 +401,7 @@ public class CrossChainHtlcResource {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(decodedTradePrivateKey);
|
ECKey redeemKey = ECKey.fromPrivate(decodedTradePrivateKey);
|
||||||
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoiny.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoiny.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, decodedSecret, foreignBlockchainReceivingAccountInfo);
|
fundingOutputs, redeemScriptA, decodedSecret, foreignBlockchainReceivingAccountInfo);
|
||||||
@ -664,7 +664,7 @@ public class CrossChainHtlcResource {
|
|||||||
// ElectrumX coins
|
// ElectrumX coins
|
||||||
|
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoiny.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Validate the destination foreign blockchain address
|
// Validate the destination foreign blockchain address
|
||||||
Address receiving = Address.fromString(bitcoiny.getNetworkParameters(), receiveAddress);
|
Address receiving = Address.fromString(bitcoiny.getNetworkParameters(), receiveAddress);
|
||||||
|
@ -894,7 +894,7 @@ public class BitcoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
// Redeem P2SH-B using secret-B
|
// Redeem P2SH-B using secret-B
|
||||||
Coin redeemAmount = Coin.valueOf(P2SH_B_OUTPUT_AMOUNT); // An actual amount to avoid dust filter, remaining used as fees. The real funds are in P2SH-A.
|
Coin redeemAmount = Coin.valueOf(P2SH_B_OUTPUT_AMOUNT); // An actual amount to avoid dust filter, remaining used as fees. The real funds are in P2SH-A.
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressB);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressB, false);
|
||||||
byte[] receivingAccountInfo = tradeBotData.getReceivingAccountInfo();
|
byte[] receivingAccountInfo = tradeBotData.getReceivingAccountInfo();
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
@ -1064,7 +1064,7 @@ public class BitcoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount - P2SH_B_OUTPUT_AMOUNT);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount - P2SH_B_OUTPUT_AMOUNT);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -1136,7 +1136,7 @@ public class BitcoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(P2SH_B_OUTPUT_AMOUNT); // An actual amount to avoid dust filter, remaining used as fees.
|
Coin refundAmount = Coin.valueOf(P2SH_B_OUTPUT_AMOUNT); // An actual amount to avoid dust filter, remaining used as fees.
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressB);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressB, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
@ -1202,7 +1202,7 @@ public class BitcoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount - P2SH_B_OUTPUT_AMOUNT);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount - P2SH_B_OUTPUT_AMOUNT);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -752,7 +752,7 @@ public class BitcoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(bitcoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -816,7 +816,7 @@ public class BitcoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = bitcoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = bitcoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -753,7 +753,7 @@ public class DigibyteACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = digibyte.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = digibyte.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(digibyte.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(digibyte.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -817,7 +817,7 @@ public class DigibyteACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = digibyte.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = digibyte.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = digibyte.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = digibyte.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -794,7 +794,7 @@ public class DogecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(dogecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(dogecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -858,7 +858,7 @@ public class DogecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = dogecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = dogecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -753,7 +753,7 @@ public class DogecoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(dogecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(dogecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -817,7 +817,7 @@ public class DogecoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = dogecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = dogecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = dogecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -757,7 +757,7 @@ public class LitecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(litecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(litecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -821,7 +821,7 @@ public class LitecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = litecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = litecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -752,7 +752,7 @@ public class LitecoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(litecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(litecoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -816,7 +816,7 @@ public class LitecoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = litecoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = litecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = litecoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -753,7 +753,7 @@ public class RavencoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED: {
|
case FUNDED: {
|
||||||
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin redeemAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey redeemKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = ravencoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = ravencoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(ravencoin.getNetworkParameters(), redeemAmount, redeemKey,
|
Transaction p2shRedeemTransaction = BitcoinyHTLC.buildRedeemTransaction(ravencoin.getNetworkParameters(), redeemAmount, redeemKey,
|
||||||
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
fundingOutputs, redeemScriptA, secretA, receivingAccountInfo);
|
||||||
@ -817,7 +817,7 @@ public class RavencoinACCTv3TradeBot implements AcctTradeBot {
|
|||||||
case FUNDED:{
|
case FUNDED:{
|
||||||
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
Coin refundAmount = Coin.valueOf(crossChainTradeData.expectedForeignAmount);
|
||||||
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
ECKey refundKey = ECKey.fromPrivate(tradeBotData.getTradePrivateKey());
|
||||||
List<TransactionOutput> fundingOutputs = ravencoin.getUnspentOutputs(p2shAddressA);
|
List<TransactionOutput> fundingOutputs = ravencoin.getUnspentOutputs(p2shAddressA, false);
|
||||||
|
|
||||||
// Determine receive address for refund
|
// Determine receive address for refund
|
||||||
String receiveAddress = ravencoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
String receiveAddress = ravencoin.getUnusedReceiveAddress(tradeBotData.getForeignKey());
|
||||||
|
@ -208,8 +208,8 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
* @throws ForeignBlockchainException if there was an error.
|
* @throws ForeignBlockchainException if there was an error.
|
||||||
*/
|
*/
|
||||||
// TODO: don't return bitcoinj-based objects like TransactionOutput, use BitcoinyTransaction.Output instead
|
// TODO: don't return bitcoinj-based objects like TransactionOutput, use BitcoinyTransaction.Output instead
|
||||||
public List<TransactionOutput> getUnspentOutputs(String base58Address) throws ForeignBlockchainException {
|
public List<TransactionOutput> getUnspentOutputs(String base58Address, boolean includeUnconfirmed) throws ForeignBlockchainException {
|
||||||
List<UnspentOutput> unspentOutputs = this.blockchainProvider.getUnspentOutputs(addressToScriptPubKey(base58Address), false);
|
List<UnspentOutput> unspentOutputs = this.blockchainProvider.getUnspentOutputs(addressToScriptPubKey(base58Address), includeUnconfirmed);
|
||||||
|
|
||||||
List<TransactionOutput> unspentTransactionOutputs = new ArrayList<>();
|
List<TransactionOutput> unspentTransactionOutputs = new ArrayList<>();
|
||||||
for (UnspentOutput unspentOutput : unspentOutputs) {
|
for (UnspentOutput unspentOutput : unspentOutputs) {
|
||||||
@ -430,7 +430,7 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
List<TransactionOutput> allUnspentOutputs = new ArrayList<>();
|
List<TransactionOutput> allUnspentOutputs = new ArrayList<>();
|
||||||
Set<String> walletAddresses = this.getWalletAddresses(key58);
|
Set<String> walletAddresses = this.getWalletAddresses(key58);
|
||||||
for (String address : walletAddresses) {
|
for (String address : walletAddresses) {
|
||||||
allUnspentOutputs.addAll(this.getUnspentOutputs(address));
|
allUnspentOutputs.addAll(this.getUnspentOutputs(address, true));
|
||||||
}
|
}
|
||||||
for (TransactionOutput output : allUnspentOutputs) {
|
for (TransactionOutput output : allUnspentOutputs) {
|
||||||
if (!output.isAvailableForSpending()) {
|
if (!output.isAvailableForSpending()) {
|
||||||
@ -504,7 +504,7 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
||||||
|
|
||||||
// Ask for transaction history - if it's empty then key has never been used
|
// Ask for transaction history - if it's empty then key has never been used
|
||||||
List<TransactionHash> historicTransactionHashes = this.getAddressTransactions(script, false);
|
List<TransactionHash> historicTransactionHashes = this.getAddressTransactions(script, true);
|
||||||
|
|
||||||
if (!historicTransactionHashes.isEmpty()) {
|
if (!historicTransactionHashes.isEmpty()) {
|
||||||
areAllKeysUnused = false;
|
areAllKeysUnused = false;
|
||||||
@ -608,7 +608,7 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
||||||
|
|
||||||
// Ask for transaction history - if it's empty then key has never been used
|
// Ask for transaction history - if it's empty then key has never been used
|
||||||
List<TransactionHash> historicTransactionHashes = this.getAddressTransactions(script, false);
|
List<TransactionHash> historicTransactionHashes = this.getAddressTransactions(script, true);
|
||||||
|
|
||||||
if (!historicTransactionHashes.isEmpty()) {
|
if (!historicTransactionHashes.isEmpty()) {
|
||||||
areAllKeysUnused = false;
|
areAllKeysUnused = false;
|
||||||
@ -842,7 +842,7 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
|
|
||||||
List<UnspentOutput> unspentOutputs;
|
List<UnspentOutput> unspentOutputs;
|
||||||
try {
|
try {
|
||||||
unspentOutputs = this.bitcoiny.blockchainProvider.getUnspentOutputs(script, false);
|
unspentOutputs = this.bitcoiny.blockchainProvider.getUnspentOutputs(script, true);
|
||||||
} catch (ForeignBlockchainException e) {
|
} catch (ForeignBlockchainException e) {
|
||||||
throw new UTXOProviderException(String.format("Unable to fetch unspent outputs for %s", address));
|
throw new UTXOProviderException(String.format("Unable to fetch unspent outputs for %s", address));
|
||||||
}
|
}
|
||||||
@ -932,7 +932,7 @@ public abstract class Bitcoiny implements ForeignBlockchain {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Long summingUnspentOutputs(String walletAddress) throws ForeignBlockchainException {
|
private Long summingUnspentOutputs(String walletAddress) throws ForeignBlockchainException {
|
||||||
return this.getUnspentOutputs(walletAddress).stream()
|
return this.getUnspentOutputs(walletAddress, true).stream()
|
||||||
.map(TransactionOutput::getValue)
|
.map(TransactionOutput::getValue)
|
||||||
.mapToLong(Coin::longValue)
|
.mapToLong(Coin::longValue)
|
||||||
.sum();
|
.sum();
|
||||||
|
@ -30,7 +30,7 @@ public class BitcoinyUTXOProvider implements UTXOProvider {
|
|||||||
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
byte[] script = ScriptBuilder.createOutputScript(address).getProgram();
|
||||||
|
|
||||||
// collection UTXO's for all confirmed unspent outputs
|
// collection UTXO's for all confirmed unspent outputs
|
||||||
for (UnspentOutput output : this.bitcoiny.blockchainProvider.getUnspentOutputs(script, false)) {
|
for (UnspentOutput output : this.bitcoiny.blockchainProvider.getUnspentOutputs(script, true)) {
|
||||||
utxos.add(toUTXO(output));
|
utxos.add(toUTXO(output));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ public abstract class Common {
|
|||||||
List<TransactionOutput> unspentOutputs = Collections.emptyList();
|
List<TransactionOutput> unspentOutputs = Collections.emptyList();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
unspentOutputs = bitcoiny.getUnspentOutputs(address58);
|
unspentOutputs = bitcoiny.getUnspentOutputs(address58, false);
|
||||||
} catch (ForeignBlockchainException e) {
|
} catch (ForeignBlockchainException e) {
|
||||||
System.err.println(String.format("Can't find unspent outputs for %s: %s", address58, e.getMessage()));
|
System.err.println(String.format("Can't find unspent outputs for %s: %s", address58, e.getMessage()));
|
||||||
return unspentOutputs;
|
return unspentOutputs;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user