mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-03-15 10:26:37 -04:00
trade protocol fixed states
This commit is contained in:
parent
16e1267c08
commit
01ca7d3e17
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user