From 91761ade14646615e0eeeefb5ceb26c5bb256d36 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 31 Dec 2015 00:10:27 +0100 Subject: [PATCH] ignore locktime if 0 --- .../main/java/io/bitsquare/btc/TradeWalletService.java | 9 ++++++--- .../main/java/io/bitsquare/payment/PaymentMethod.java | 2 +- core/src/main/java/io/bitsquare/trade/Trade.java | 1 - .../trade/protocol/trade/SellerAsOffererProtocol.java | 6 +----- .../trade/protocol/trade/SellerAsTakerProtocol.java | 1 - .../trade/tasks/{shared => seller}/SignPayoutTx.java | 10 ++++++++-- .../shared/SetupPayoutTxLockTimeReachedListener.java | 2 +- gui/src/main/java/io/bitsquare/app/BitsquareApp.java | 2 +- .../java/io/bitsquare/gui/main/debug/DebugView.java | 1 - package/windows/create_app.bat | 4 ++-- 10 files changed, 20 insertions(+), 18 deletions(-) rename core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/{shared => seller}/SignPayoutTx.java (79%) diff --git a/core/src/main/java/io/bitsquare/btc/TradeWalletService.java b/core/src/main/java/io/bitsquare/btc/TradeWalletService.java index 214c861f3c..f35c657d9e 100644 --- a/core/src/main/java/io/bitsquare/btc/TradeWalletService.java +++ b/core/src/main/java/io/bitsquare/btc/TradeWalletService.java @@ -944,9 +944,12 @@ public class TradeWalletService { transaction.addInput(p2SHMultiSigOutput); transaction.addOutput(buyerPayoutAmount, new Address(params, buyerAddressString)); transaction.addOutput(sellerPayoutAmount, new Address(params, sellerAddressString)); - // When using lockTime we need to set sequenceNumber to 0 - transaction.getInputs().stream().forEach(i -> i.setSequenceNumber(0)); - transaction.setLockTime(lockTime); + if (lockTime != 0) { + log.info("We use a locktime of " + lockTime); + // When using lockTime we need to set sequenceNumber to 0 + transaction.getInputs().stream().forEach(i -> i.setSequenceNumber(0)); + transaction.setLockTime(lockTime); + } return transaction; } diff --git a/core/src/main/java/io/bitsquare/payment/PaymentMethod.java b/core/src/main/java/io/bitsquare/payment/PaymentMethod.java index 72e5022adf..e065ab6b82 100644 --- a/core/src/main/java/io/bitsquare/payment/PaymentMethod.java +++ b/core/src/main/java/io/bitsquare/payment/PaymentMethod.java @@ -59,7 +59,7 @@ public class PaymentMethod implements Serializable, Comparable { public static PaymentMethod BLOCK_CHAINS; public static final List ALL_VALUES = new ArrayList<>(Arrays.asList( - OK_PAY = new PaymentMethod(OK_PAY_ID, 0, DAY), // tx instant so min. wait time + OK_PAY = new PaymentMethod(OK_PAY_ID, HOUR, DAY), // tx instant so min. wait time PERFECT_MONEY = new PaymentMethod(PERFECT_MONEY_ID, 0, DAY), SEPA = new PaymentMethod(SEPA_ID, 0, 8 * DAY), // sepa takes 1-3 business days. We use 8 days to include safety for holidays SWISH = new PaymentMethod(SWISH_ID, 0, DAY), diff --git a/core/src/main/java/io/bitsquare/trade/Trade.java b/core/src/main/java/io/bitsquare/trade/Trade.java index 16a427c0c2..31c82ac14d 100644 --- a/core/src/main/java/io/bitsquare/trade/Trade.java +++ b/core/src/main/java/io/bitsquare/trade/Trade.java @@ -165,7 +165,6 @@ abstract public class Trade implements Tradable, Model, Serializable { private long lockTimeAsBlockHeight; private int openDisputeTimeAsBlockHeight; private int checkPaymentTimeAsBlockHeight; - private String arbitratorId; private Address arbitratorAddress; private String takerPaymentAccountId; private boolean halfTradePeriodReachedWarningDisplayed; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java index 5413edf25d..da16773101 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java @@ -25,14 +25,10 @@ import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.messages.*; import io.bitsquare.trade.protocol.trade.tasks.offerer.*; -import io.bitsquare.trade.protocol.trade.tasks.seller.CreateAndSignDepositTxAsSeller; -import io.bitsquare.trade.protocol.trade.tasks.seller.ProcessFiatTransferStartedMessage; -import io.bitsquare.trade.protocol.trade.tasks.seller.ProcessPayoutTxFinalizedMessage; -import io.bitsquare.trade.protocol.trade.tasks.seller.SendFinalizePayoutTxRequest; +import io.bitsquare.trade.protocol.trade.tasks.seller.*; import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx; import io.bitsquare.trade.protocol.trade.tasks.shared.InitWaitPeriodForOpenDispute; import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener; -import io.bitsquare.trade.protocol.trade.tasks.shared.SignPayoutTx; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java index a2393519b6..20da4001c9 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java @@ -30,7 +30,6 @@ import io.bitsquare.trade.protocol.trade.messages.TradeMessage; import io.bitsquare.trade.protocol.trade.tasks.seller.*; import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx; import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener; -import io.bitsquare.trade.protocol.trade.tasks.shared.SignPayoutTx; import io.bitsquare.trade.protocol.trade.tasks.taker.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SignPayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignPayoutTx.java similarity index 79% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SignPayoutTx.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignPayoutTx.java index bf283907f4..fbcf05479d 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SignPayoutTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignPayoutTx.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.tasks.shared; +package io.bitsquare.trade.protocol.trade.tasks.seller; import io.bitsquare.btc.FeePolicy; import io.bitsquare.common.taskrunner.TaskRunner; @@ -42,7 +42,13 @@ public class SignPayoutTx extends TradeTask { Coin sellerPayoutAmount = FeePolicy.SECURITY_DEPOSIT; Coin buyerPayoutAmount = sellerPayoutAmount.add(trade.getTradeAmount()); - long lockTimeAsBlockHeight = processModel.getTradeWalletService().getLastBlockSeenHeight() + trade.getOffer().getPaymentMethod().getLockTime(); + // We use the sellers LastBlockSeenHeight, which might be different to the buyers one. + // If lock time is 0 we set lockTimeAsBlockHeight to -1 to mark it as "not set". + // In the tradewallet we apply the locktime only if it is set, otherwise we use the default sequence number + long lockTime = trade.getOffer().getPaymentMethod().getLockTime(); + long lockTimeAsBlockHeight = 0; + if (lockTime > 0) + lockTimeAsBlockHeight = processModel.getTradeWalletService().getLastBlockSeenHeight() + lockTime; trade.setLockTimeAsBlockHeight(lockTimeAsBlockHeight); byte[] payoutTxSignature = processModel.getTradeWalletService().sellerSignsPayoutTx( diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SetupPayoutTxLockTimeReachedListener.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SetupPayoutTxLockTimeReachedListener.java index fe1b03b83d..c89562675a 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SetupPayoutTxLockTimeReachedListener.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/shared/SetupPayoutTxLockTimeReachedListener.java @@ -43,7 +43,7 @@ public class SetupPayoutTxLockTimeReachedListener extends TradeTask { try { runInterceptHook(); log.debug("ChainHeight/LockTime: {} / {}", processModel.getTradeWalletService().getBestChainHeight(), trade.getLockTimeAsBlockHeight()); - if (processModel.getTradeWalletService().getBestChainHeight() >= trade.getLockTimeAsBlockHeight()) { + if (trade.getLockTimeAsBlockHeight() == 0 || processModel.getTradeWalletService().getBestChainHeight() >= trade.getLockTimeAsBlockHeight()) { broadcastTx(); } else { ListenableFuture blockHeightFuture = processModel.getTradeWalletService().getBlockHeightFuture(trade.getPayoutTx()); diff --git a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java index 9232e30832..5a7a889770 100644 --- a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java +++ b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java @@ -73,7 +73,7 @@ import static io.bitsquare.app.BitsquareEnvironment.APP_NAME_KEY; public class BitsquareApp extends Application { private static final Logger log = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(BitsquareApp.class); - public static final boolean DEV_MODE = false; + public static final boolean DEV_MODE = true; public static final boolean IS_RELEASE_VERSION = !DEV_MODE && true; private static Environment env; diff --git a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java index c96b9911d0..171fc5e4a4 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java @@ -39,7 +39,6 @@ import io.bitsquare.trade.protocol.trade.tasks.seller.*; import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx; import io.bitsquare.trade.protocol.trade.tasks.shared.InitWaitPeriodForOpenDispute; import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener; -import io.bitsquare.trade.protocol.trade.tasks.shared.SignPayoutTx; import io.bitsquare.trade.protocol.trade.tasks.taker.*; import javafx.collections.FXCollections; import javafx.collections.ObservableList; diff --git a/package/windows/create_app.bat b/package/windows/create_app.bat index 567be6362c..9b864bf52a 100644 --- a/package/windows/create_app.bat +++ b/package/windows/create_app.bat @@ -8,6 +8,6 @@ mkdir gui\deploy :: 64 bit build :: Needs Inno Setup 5 or later (http://www.jrsoftware.org/isdl.php) -call "C:\Program Files\Java\jdk1.8.0_66\bin\javapackager.exe" -srcfiles "gui/deploy/Bitsquare-0.3.2.3.jar" -outfile Bitsquare -BappVersion=0.3.2.3 -Bruntime="C:\Program Files\Java\jdk1.8.0_66\jre -BjvmProperties=-Djava.net.preferIPv4Stack=true -deploy -native exe -name Bitsquare -title Bitsquare -vendor Bitsquare -outdir gui\deploy -appclass io.bitsquare.app.BitsquareAppMain" - +call "C:\Program Files\Java\jdk1.8.0_66\bin\javapackager.exe" -deploy -BappVersion=0.3.2.3 -native exe -name Bitsquare -title Bitsquare -vendor Bitsquare -outdir "\\VBOXSVR\vm_shared_windows" -appclass io.bitsquare.app.BitsquareAppMain -srcfiles "\\VBOXSVR\vm_shared_windows\Bitsquare-0.3.2.3.jar" -outfile Bitsquare -Bruntime="C:\Program Files\Java\jdk1.8.0_66\jre" -BjvmProperties=-Djava.net.preferIPv4Stack=true + cd package\windows \ No newline at end of file