From 01ca7d3e179ec36698b38ca0b7dfd9587f311fe4 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 5 Jul 2014 17:13:22 +0200 Subject: [PATCH] trade protocol fixed states --- README.md | 6 +--- .../offerer/ProtocolForOffererAsBuyer.java | 32 ++++++++--------- .../taker/ProtocolForTakerAsSeller.java | 34 +++++++++---------- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index b82b0bfab4..09e9812f12 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,10 @@ Bitsquare is a P2P Fiat-BTC Exchange, extensible to a generic P2P trading platform (include commodities and cryptocurrencies) -This is just a proof of concept prototype for demonstrating the basic workflow of the trader process. -It is not at all production code style (no tests, verifications missing, very limited use cases,...). - The project use Java 8 and Maven. We use the bitcoinj library and TomP2P for DHT and messaging. -Test net is currently not working with bitcoinj as the DNS seed servers are not setup correctly (See: http://sourceforge.net/p/bitcoin/mailman/message/32349208/). -To use the RegTest mode you need to set regtest=1 in the bitcoin.config file inside the bitcoin data directory (https://en.bitcoin.it/wiki/Running_Bitcoin). +If you want to use the RegTest mode you need to set regtest=1 in the bitcoin.config file inside the bitcoin data directory (https://en.bitcoin.it/wiki/Running_Bitcoin). Then you can generate coins on demand with the Bitcoin qt client with that command in the console: setgenerate true 101 (101 only for the first start because the coin maturity of 100 blocks). See: https://bitcoinj.github.io/testing You can change the network mode in the guice module: BitSquareModule.java diff --git a/src/main/java/io/bitsquare/trade/protocol/offerer/ProtocolForOffererAsBuyer.java b/src/main/java/io/bitsquare/trade/protocol/offerer/ProtocolForOffererAsBuyer.java index 2327bb2d2f..86e5e30375 100644 --- a/src/main/java/io/bitsquare/trade/protocol/offerer/ProtocolForOffererAsBuyer.java +++ b/src/main/java/io/bitsquare/trade/protocol/offerer/ProtocolForOffererAsBuyer.java @@ -98,7 +98,7 @@ public class ProtocolForOffererAsBuyer // state private State state; - private int position = 0; + private int step = 0; /////////////////////////////////////////////////////////////////////////////////////////// @@ -140,14 +140,14 @@ public class ProtocolForOffererAsBuyer public void start() { - log.debug("start called "); + log.debug("start called " + step++); state = State.HandleTakeOfferRequest; HandleTakeOfferRequest.run(this::onResultHandleTakeOfferRequest, this::onFault, peerAddress, messageFacade, trade.getState(), tradeId); } public void onResultHandleTakeOfferRequest(boolean takeOfferRequestAccepted) { - log.debug("onResultHandleTakeOfferRequest called "); + log.debug("onResultHandleTakeOfferRequest called " + step++); if (takeOfferRequestAccepted) { trade.setState(Trade.State.ACCEPTED); @@ -168,7 +168,7 @@ public class ProtocolForOffererAsBuyer public void onTakeOfferFeePayedMessage(@NotNull TakeOfferFeePayedMessage message) { - log.debug("onTakeOfferFeePayedMessage called "); + log.debug("onTakeOfferFeePayedMessage called " + step++); log.debug("state " + state); // validation @@ -192,7 +192,7 @@ public class ProtocolForOffererAsBuyer public void onResultVerifyTakeOfferFeePayment() { - log.debug("onResultVerifyTakeOfferFeePayment called "); + log.debug("onResultVerifyTakeOfferFeePayment called " + step++); BigInteger collateral = trade.getCollateralAmount(); state = State.CreateDepositTx; @@ -202,7 +202,7 @@ public class ProtocolForOffererAsBuyer public void onResultCreateDepositTx(String offererPubKey, String preparedOffererDepositTxAsHex, long offererTxOutIndex) { - log.debug("onResultCreateDepositTx called "); + log.debug("onResultCreateDepositTx called " + step++); this.preparedOffererDepositTxAsHex = preparedOffererDepositTxAsHex; this.offererTxOutIndex = offererTxOutIndex; @@ -221,7 +221,7 @@ public class ProtocolForOffererAsBuyer public void onResultRequestTakerDepositPayment() { - log.debug("onResultRequestTakerDepositPayment called "); + log.debug("onResultRequestTakerDepositPayment called " + step++); listener.onWaitingForPeerResponse(state); } @@ -232,7 +232,7 @@ public class ProtocolForOffererAsBuyer public void onRequestOffererPublishDepositTxMessage(RequestOffererPublishDepositTxMessage message) { - log.debug("onRequestOffererPublishDepositTxMessage called "); + log.debug("onRequestOffererPublishDepositTxMessage called " + step++); log.debug("state " + state); // validation @@ -267,7 +267,7 @@ public class ProtocolForOffererAsBuyer public void onResultVerifyTakerAccount() { - log.debug("onResultVerifyTakerAccount called "); + log.debug("onResultVerifyTakerAccount called " + step++); BigInteger tradeAmount = trade.getTradeAmount(); state = State.VerifyAndSignContract; @@ -289,7 +289,7 @@ public class ProtocolForOffererAsBuyer public void onResultVerifyAndSignContract(Contract contract, String contractAsJson, String signature) { - log.debug("onResultVerifyAndSignContract called "); + log.debug("onResultVerifyAndSignContract called " + step++); trade.setContract(contract); trade.setContractAsJson(contractAsJson); @@ -308,7 +308,7 @@ public class ProtocolForOffererAsBuyer public void onResultSignAndPublishDepositTx(Transaction depositTransaction) { - log.debug("onResultSignAndPublishDepositTx called "); + log.debug("onResultSignAndPublishDepositTx called " + step++); trade.setDepositTransaction(depositTransaction); listener.onDepositTxPublished(depositTransaction.getHashAsString()); @@ -319,7 +319,7 @@ public class ProtocolForOffererAsBuyer public void onResultSendDepositTxIdToTaker() { - log.debug("onResultSendDepositTxIdToTaker called "); + log.debug("onResultSendDepositTxIdToTaker called " + step++); state = State.SetupListenerForBlockChainConfirmation; SetupListenerForBlockChainConfirmation.run(this::onResultSetupListenerForBlockChainConfirmation, this::onFault, trade.getDepositTransaction(), listener); @@ -327,7 +327,7 @@ public class ProtocolForOffererAsBuyer public void onResultSetupListenerForBlockChainConfirmation() { - log.debug("onResultSetupListenerForBlockChainConfirmation called "); + log.debug("onResultSetupListenerForBlockChainConfirmation called " + step++); state = State.onResultSetupListenerForBlockChainConfirmation; listener.onWaitingForUserInteraction(state); @@ -341,7 +341,7 @@ public class ProtocolForOffererAsBuyer // Triggered from UI event: Button click "Bank transfer inited" public void onUIEventBankTransferInited() { - log.debug("onUIEventBankTransferInited called "); + log.debug("onUIEventBankTransferInited called " + step++); log.debug("state " + state); // validation @@ -369,7 +369,7 @@ public class ProtocolForOffererAsBuyer public void onResultSendSignedPayoutTx() { - log.debug("onResultSendSignedPayoutTx called "); + log.debug("onResultSendSignedPayoutTx called " + step++); listener.onWaitingForPeerResponse(state); } @@ -381,7 +381,7 @@ public class ProtocolForOffererAsBuyer public void onPayoutTxPublishedMessage(PayoutTxPublishedMessage message) { - log.debug("onPayoutTxPublishedMessage called "); + log.debug("onPayoutTxPublishedMessage called " + step++); log.debug("state " + state); // validation diff --git a/src/main/java/io/bitsquare/trade/protocol/taker/ProtocolForTakerAsSeller.java b/src/main/java/io/bitsquare/trade/protocol/taker/ProtocolForTakerAsSeller.java index 8bcf1da0d8..7a6718d5b8 100644 --- a/src/main/java/io/bitsquare/trade/protocol/taker/ProtocolForTakerAsSeller.java +++ b/src/main/java/io/bitsquare/trade/protocol/taker/ProtocolForTakerAsSeller.java @@ -94,7 +94,7 @@ public class ProtocolForTakerAsSeller // state private State state; - private int position = 0; + private int step = 0; /////////////////////////////////////////////////////////////////////////////////////////// @@ -136,14 +136,14 @@ public class ProtocolForTakerAsSeller public void start() { - log.debug("start called " + position++); + log.debug("start called " + step++); state = State.GetPeerAddress; GetPeerAddress.run(this::onResultGetPeerAddress, this::onFault, messageFacade, peersMessagePubKey); } public void onResultGetPeerAddress(PeerAddress peerAddress) { - log.debug("onResultGetPeerAddress called " + position++); + log.debug("onResultGetPeerAddress called " + step++); this.peerAddress = peerAddress; state = State.RequestTakeOffer; @@ -152,7 +152,7 @@ public class ProtocolForTakerAsSeller public void onResultRequestTakeOffer() { - log.debug("onResultRequestTakeOffer called " + position++); + log.debug("onResultRequestTakeOffer called " + step++); listener.onWaitingForPeerResponse(state); } @@ -163,7 +163,7 @@ public class ProtocolForTakerAsSeller public void onRespondToTakeOfferRequestMessage(RespondToTakeOfferRequestMessage message) { - log.debug("onRespondToTakeOfferRequestMessage called " + position++); + log.debug("onRespondToTakeOfferRequestMessage called " + step++); log.debug("state " + state); checkState(state == State.RequestTakeOffer); checkArgument(tradeId.equals(message.getTradeId())); @@ -181,7 +181,7 @@ public class ProtocolForTakerAsSeller public void onResultPayTakeOfferFee(String takeOfferFeeTxId) { - log.debug("onResultPayTakeOfferFee called " + position++); + log.debug("onResultPayTakeOfferFee called " + step++); trade.setTakeOfferFeeTxID(takeOfferFeeTxId); state = State.SendTakeOfferFeePayedTxId; @@ -190,7 +190,7 @@ public class ProtocolForTakerAsSeller public void onResultSendTakeOfferFeePayedTxId() { - log.debug("onResultSendTakeOfferFeePayedTxId called " + position++); + log.debug("onResultSendTakeOfferFeePayedTxId called " + step++); listener.onWaitingForPeerResponse(state); } @@ -201,7 +201,7 @@ public class ProtocolForTakerAsSeller public void onRequestTakerDepositPaymentMessage(RequestTakerDepositPaymentMessage message) { - log.debug("onRequestTakerDepositPaymentMessage called " + position++); + log.debug("onRequestTakerDepositPaymentMessage called " + step++); log.debug("state " + state); // validation @@ -228,7 +228,7 @@ public class ProtocolForTakerAsSeller public void onResultVerifyOffererAccount() { - log.debug("onResultVerifyOffererAccount called " + position++); + log.debug("onResultVerifyOffererAccount called " + step++); String takeOfferFeeTxId = trade.getTakeOfferFeeTxId(); state = State.CreateAndSignContract; CreateAndSignContract.run(this::onResultCreateAndSignContract, @@ -248,7 +248,7 @@ public class ProtocolForTakerAsSeller public void onResultCreateAndSignContract(Contract contract, String contractAsJson, String signature) { - log.debug("onResultCreateAndSignContract called " + position++); + log.debug("onResultCreateAndSignContract called " + step++); trade.setContract(contract); trade.setContractAsJson(contractAsJson); @@ -260,7 +260,7 @@ public class ProtocolForTakerAsSeller public void onResultPayDeposit(Transaction signedTakerDepositTx) { - log.debug("onResultPayDeposit called " + position++); + log.debug("onResultPayDeposit called " + step++); String contractAsJson = trade.getContractAsJson(); String takerSignature = trade.getTakerSignature(); @@ -282,7 +282,7 @@ public class ProtocolForTakerAsSeller public void onResultSendSignedTakerDepositTxAsHex() { - log.debug("onResultSendSignedTakerDepositTxAsHex called " + position++); + log.debug("onResultSendSignedTakerDepositTxAsHex called " + step++); listener.onWaitingForPeerResponse(state); } @@ -294,7 +294,7 @@ public class ProtocolForTakerAsSeller // informational, does only trigger UI feedback/update public void onDepositTxPublishedMessage(DepositTxPublishedMessage message) { - log.debug("onDepositTxPublishedMessage called " + position++); + log.debug("onDepositTxPublishedMessage called " + step++); log.debug("state " + state); checkState(state.ordinal() >= State.SendSignedTakerDepositTxAsHex.ordinal()); checkArgument(tradeId.equals(message.getTradeId())); @@ -309,7 +309,7 @@ public class ProtocolForTakerAsSeller // informational, store data for later, does only trigger UI feedback/update public void onBankTransferInitedMessage(BankTransferInitedMessage message) { - log.debug("onBankTransferInitedMessage called " + position++); + log.debug("onBankTransferInitedMessage called " + step++); log.debug("state " + state); // validate checkState(state.ordinal() >= State.SendSignedTakerDepositTxAsHex.ordinal() && state.ordinal() < State.SignAndPublishPayoutTx.ordinal()); @@ -341,7 +341,7 @@ public class ProtocolForTakerAsSeller // User clicked the "bank transfer received" button, so we release the funds for pay out public void onUIEventFiatReceived() { - log.debug("onUIEventFiatReceived called " + position++); + log.debug("onUIEventFiatReceived called " + step++); log.debug("state " + state); checkState(state == State.onBankTransferInitedMessage); @@ -360,7 +360,7 @@ public class ProtocolForTakerAsSeller public void onResultSignAndPublishPayoutTx(String transactionId, String payoutTxAsHex) { - log.debug("onResultSignAndPublishPayoutTx called " + position++); + log.debug("onResultSignAndPublishPayoutTx called " + step++); listener.onPayoutTxPublished(trade, transactionId); state = State.SendPayoutTxToOfferer; @@ -369,7 +369,7 @@ public class ProtocolForTakerAsSeller public void onResultSendPayoutTxToOfferer() { - log.debug("onResultSendPayoutTxToOfferer called " + position++); + log.debug("onResultSendPayoutTxToOfferer called " + step++); listener.onCompleted(state); }