Refactoring: cleanups

This commit is contained in:
chimp1984 2020-09-21 22:58:13 -05:00
parent fdde4b552c
commit e960e12084
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3
13 changed files with 103 additions and 112 deletions

View file

@ -146,9 +146,13 @@ public class DelayedPayoutTxValidation {
NetworkParameters params = btcWalletService.getParams();
//TODO update to BitcoinJ API changes
Address address = output.getAddressFromP2PKHScript(params);
if (address == null) {
// The donation address can be as well be a multisig address.
//TODO update to BitcoinJ API changes
address = output.getAddressFromP2SH(params);
if (address == null) {
errorMsg = "Donation address cannot be resolved (not of type P2PKHScript or P2SH). Output: " + output;

View file

@ -178,6 +178,7 @@ public class BuyerAsMakerProtocol extends TradeProtocol implements BuyerProtocol
processModel.logTrade(buyerAsMakerTrade);
}
private void handle(PayoutTxPublishedMessage tradeMessage, NodeAddress peerNodeAddress) {
processModel.setTradeMessage(tradeMessage);
processModel.setTempTradingPeerNodeAddress(peerNodeAddress);

View file

@ -45,14 +45,15 @@ public class PublishTradeStatistics extends TradeTask {
protected void run() {
try {
runInterceptHook();
if (trade.getDepositTx() != null) {
checkNotNull(trade.getDepositTx());
Map<String, String> extraDataMap = new HashMap<>();
if (processModel.getReferralIdService().getOptionalReferralId().isPresent()) {
extraDataMap.put(OfferPayload.REFERRAL_ID, processModel.getReferralIdService().getOptionalReferralId().get());
}
NodeAddress mediatorNodeAddress = trade.getMediatorNodeAddress();
if (mediatorNodeAddress != null) {
NodeAddress mediatorNodeAddress = checkNotNull(trade.getMediatorNodeAddress());
// The first 4 chars are sufficient to identify a mediator.
// For testing with regtest/localhost we use the full address as its localhost and would result in
// same values for multiple mediators.
@ -61,19 +62,16 @@ public class PublishTradeStatistics extends TradeTask {
mediatorNodeAddress.getFullAddress().substring(0, 4) :
mediatorNodeAddress.getFullAddress();
extraDataMap.put(TradeStatistics2.MEDIATOR_ADDRESS, address);
}
Offer offer = trade.getOffer();
checkNotNull(offer, "offer must not ne null");
checkNotNull(trade.getTradeAmount(), "trade.getTradeAmount() must not ne null");
Offer offer = checkNotNull(trade.getOffer());
TradeStatistics2 tradeStatistics = new TradeStatistics2(offer.getOfferPayload(),
trade.getTradePrice(),
trade.getTradeAmount(),
checkNotNull(trade.getTradeAmount()),
trade.getDate(),
trade.getDepositTxId(),
extraDataMap);
processModel.getP2PService().addPersistableNetworkPayload(tradeStatistics, true);
}
complete();
} catch (Throwable t) {
failed(t);

View file

@ -40,14 +40,13 @@ public class BuyerProcessDelayedPayoutTxSignatureRequest extends TradeTask {
protected void run() {
try {
runInterceptHook();
DelayedPayoutTxSignatureRequest message = (DelayedPayoutTxSignatureRequest) processModel.getTradeMessage();
checkNotNull(message);
Validator.checkTradeId(processModel.getOfferId(), message);
byte[] delayedPayoutTxAsBytes = checkNotNull(message.getDelayedPayoutTx());
DelayedPayoutTxSignatureRequest request = (DelayedPayoutTxSignatureRequest) processModel.getTradeMessage();
checkNotNull(request);
Validator.checkTradeId(processModel.getOfferId(), request);
byte[] delayedPayoutTxAsBytes = checkNotNull(request.getDelayedPayoutTx());
Transaction preparedDelayedPayoutTx = processModel.getBtcWalletService().getTxFromSerializedTx(delayedPayoutTxAsBytes);
processModel.setPreparedDelayedPayoutTx(preparedDelayedPayoutTx);
// update to the latest peer address of our peer if the message is correct
trade.setTradingPeerNodeAddress(processModel.getTempTradingPeerNodeAddress());
complete();

View file

@ -26,13 +26,12 @@ import bisq.core.trade.protocol.tasks.TradeTask;
import bisq.core.util.Validator;
import bisq.common.taskrunner.TaskRunner;
import bisq.common.util.Utilities;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.wallet.Wallet;
import lombok.extern.slf4j.Slf4j;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
@Slf4j
@ -45,34 +44,36 @@ public class BuyerProcessDepositTxAndDelayedPayoutTxMessage extends TradeTask {
protected void run() {
try {
runInterceptHook();
DepositTxAndDelayedPayoutTxMessage message = (DepositTxAndDelayedPayoutTxMessage) processModel.getTradeMessage();
var message = (DepositTxAndDelayedPayoutTxMessage) processModel.getTradeMessage();
checkNotNull(message);
Validator.checkTradeId(processModel.getOfferId(), message);
checkArgument(message.getDepositTx() != null);
// To access tx confidence we need to add that tx into our wallet.
Transaction depositTx = processModel.getBtcWalletService().getTxFromSerializedTx(message.getDepositTx());
byte[] depositTxBytes = checkNotNull(message.getDepositTx());
Transaction depositTx = processModel.getBtcWalletService().getTxFromSerializedTx(depositTxBytes);
// update with full tx
Transaction committedDepositTx = WalletService.maybeAddSelfTxToWallet(depositTx, processModel.getBtcWalletService().getWallet());
Wallet wallet = processModel.getBtcWalletService().getWallet();
Transaction committedDepositTx = WalletService.maybeAddSelfTxToWallet(depositTx, wallet);
trade.applyDepositTx(committedDepositTx);
BtcWalletService.printTx("depositTx received from peer", committedDepositTx);
// To access tx confidence we need to add that tx into our wallet.
byte[] delayedPayoutTxBytes = message.getDelayedPayoutTx();
byte[] delayedPayoutTxBytes = checkNotNull(message.getDelayedPayoutTx());
trade.applyDelayedPayoutTxBytes(delayedPayoutTxBytes);
BtcWalletService.printTx("delayedPayoutTx received from peer", trade.getDelayedPayoutTx());
log.info("DelayedPayoutTxBytes = {}", Utilities.bytesAsHexString(trade.getDelayedPayoutTxBytes()));
BtcWalletService.printTx("delayedPayoutTx received from peer",
checkNotNull(trade.getDelayedPayoutTx()));
// update to the latest peer address of our peer if the message is correct
trade.setTradingPeerNodeAddress(processModel.getTempTradingPeerNodeAddress());
processModel.removeMailboxMessageAfterProcessing(trade);
// If we got already the confirmation we don't want to apply an earlier state
if (trade.getState().ordinal() < Trade.State.BUYER_SAW_DEPOSIT_TX_IN_NETWORK.ordinal())
if (trade.getState().ordinal() < Trade.State.BUYER_SAW_DEPOSIT_TX_IN_NETWORK.ordinal()) {
trade.setState(Trade.State.BUYER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG);
}
processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.RESERVED_FOR_TRADE);
processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(trade.getId(),
AddressEntry.Context.RESERVED_FOR_TRADE);
complete();
} catch (Throwable t) {

View file

@ -49,8 +49,6 @@ public class BuyerSendsDelayedPayoutTxSignatureResponse extends TradeTask {
processModel.getMyNodeAddress(),
delayedPayoutTxSignature);
// todo trade.setState
NodeAddress peersNodeAddress = trade.getTradingPeerNodeAddress();
log.info("Send {} to peer {}. tradeId={}, uid={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid());
@ -63,7 +61,6 @@ public class BuyerSendsDelayedPayoutTxSignatureResponse extends TradeTask {
public void onArrived() {
log.info("{} arrived at peer {}. tradeId={}, uid={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid());
// todo trade.setState
complete();
}
@ -71,7 +68,6 @@ public class BuyerSendsDelayedPayoutTxSignatureResponse extends TradeTask {
public void onFault(String errorMessage) {
log.error("{} failed: Peer {}. tradeId={}, uid={}, errorMessage={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid(), errorMessage);
// todo trade.setState
appendToErrorMessage("Sending message failed: message=" + message + "\nerrorMessage=" + errorMessage);
failed(errorMessage);
}

View file

@ -56,7 +56,11 @@ public class BuyerSignsDelayedPayoutTx extends TradeTask {
btcWalletService.getOrCreateAddressEntry(id, AddressEntry.Context.MULTI_SIG).getPubKey()),
"buyerMultiSigPubKey from AddressEntry must match the one from the trade data. trade id =" + id);
byte[] sellerMultiSigPubKey = processModel.getTradingPeer().getMultiSigPubKey();
byte[] delayedPayoutTxSignature = processModel.getTradeWalletService().signDelayedPayoutTx(preparedDelayedPayoutTx, myMultiSigKeyPair, buyerMultiSigPubKey, sellerMultiSigPubKey);
byte[] delayedPayoutTxSignature = processModel.getTradeWalletService().signDelayedPayoutTx(
preparedDelayedPayoutTx,
myMultiSigKeyPair,
buyerMultiSigPubKey,
sellerMultiSigPubKey);
processModel.setDelayedPayoutTxSignature(delayedPayoutTxSignature);
complete();

View file

@ -58,7 +58,8 @@ public class SellerFinalizesDelayedPayoutTx extends TradeTask {
byte[] buyerSignature = processModel.getTradingPeer().getDelayedPayoutTxSignature();
byte[] sellerSignature = processModel.getDelayedPayoutTxSignature();
Transaction signedDelayedPayoutTx = processModel.getTradeWalletService().finalizeDelayedPayoutTx(preparedDelayedPayoutTx,
Transaction signedDelayedPayoutTx = processModel.getTradeWalletService().finalizeDelayedPayoutTx(
preparedDelayedPayoutTx,
buyerMultiSigPubKey,
sellerMultiSigPubKey,
buyerSignature,

View file

@ -38,18 +38,15 @@ public class SellerProcessDelayedPayoutTxSignatureResponse extends TradeTask {
protected void run() {
try {
runInterceptHook();
DelayedPayoutTxSignatureResponse delayedPayoutTxSignatureResponse = (DelayedPayoutTxSignatureResponse) processModel.getTradeMessage();
checkNotNull(delayedPayoutTxSignatureResponse);
checkTradeId(processModel.getOfferId(), delayedPayoutTxSignatureResponse);
DelayedPayoutTxSignatureResponse response = (DelayedPayoutTxSignatureResponse) processModel.getTradeMessage();
checkNotNull(response);
checkTradeId(processModel.getOfferId(), response);
byte[] delayedPayoutTxSignature = checkNotNull(delayedPayoutTxSignatureResponse.getDelayedPayoutTxSignature());
processModel.getTradingPeer().setDelayedPayoutTxSignature(delayedPayoutTxSignature);
processModel.getTradingPeer().setDelayedPayoutTxSignature(checkNotNull(response.getDelayedPayoutTxSignature()));
// update to the latest peer address of our peer if the message is correct
trade.setTradingPeerNodeAddress(processModel.getTempTradingPeerNodeAddress());
// todo trade.setState
complete();
} catch (Throwable t) {
failed(t);

View file

@ -20,7 +20,6 @@ package bisq.core.trade.protocol.tasks.seller;
import bisq.core.btc.exceptions.TxBroadcastException;
import bisq.core.btc.model.AddressEntry;
import bisq.core.btc.wallet.TxBroadcaster;
import bisq.core.trade.Contract;
import bisq.core.trade.Trade;
import bisq.core.trade.protocol.tasks.TradeTask;
@ -48,7 +47,8 @@ public class SellerPublishesDepositTx extends TradeTask {
if (!completed) {
trade.setState(Trade.State.SELLER_PUBLISHED_DEPOSIT_TX);
processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(processModel.getOffer().getId(), AddressEntry.Context.RESERVED_FOR_TRADE);
processModel.getBtcWalletService().swapTradeEntryToAvailableEntry(processModel.getOffer().getId(),
AddressEntry.Context.RESERVED_FOR_TRADE);
complete();
} else {
@ -66,9 +66,6 @@ public class SellerPublishesDepositTx extends TradeTask {
}
});
} catch (Throwable t) {
Contract contract = trade.getContract();
if (contract != null)
contract.printDiff(processModel.getTradingPeer().getContractAsJson());
failed(t);
}
}

View file

@ -52,8 +52,6 @@ public class SellerSendDelayedPayoutTxSignatureRequest extends TradeTask {
processModel.getMyNodeAddress(),
preparedDelayedPayoutTx.bitcoinSerialize());
// todo trade.setState
NodeAddress peersNodeAddress = trade.getTradingPeerNodeAddress();
log.info("Send {} to peer {}. tradeId={}, uid={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid());
@ -66,7 +64,6 @@ public class SellerSendDelayedPayoutTxSignatureRequest extends TradeTask {
public void onArrived() {
log.info("{} arrived at peer {}. tradeId={}, uid={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid());
// todo trade.setState
complete();
}
@ -74,7 +71,6 @@ public class SellerSendDelayedPayoutTxSignatureRequest extends TradeTask {
public void onFault(String errorMessage) {
log.error("{} failed: Peer {}. tradeId={}, uid={}, errorMessage={}",
message.getClass().getSimpleName(), peersNodeAddress, message.getTradeId(), message.getUid(), errorMessage);
// todo trade.setState
appendToErrorMessage("Sending message failed: message=" + message + "\nerrorMessage=" + errorMessage);
failed();
}

View file

@ -44,9 +44,9 @@ public class SellerSendsDepositTxAndDelayedPayoutTxMessage extends TradeTask {
protected void run() {
try {
runInterceptHook();
if (trade.getDepositTx() != null) {
Transaction depositTx = checkNotNull(trade.getDepositTx(), "DepositTx must not be null");
Transaction delayedPayoutTx = checkNotNull(trade.getDelayedPayoutTx());
Transaction depositTx = checkNotNull(trade.getDepositTx());
DepositTxAndDelayedPayoutTxMessage message = new DepositTxAndDelayedPayoutTxMessage(UUID.randomUUID().toString(),
processModel.getOfferId(),
processModel.getMyNodeAddress(),
@ -89,10 +89,6 @@ public class SellerSendsDepositTxAndDelayedPayoutTxMessage extends TradeTask {
}
}
);
} else {
log.error("trade.getDepositTx() = " + trade.getDepositTx());
failed("DepositTx is null");
}
} catch (Throwable t) {
failed(t);
}

View file

@ -57,7 +57,8 @@ public class SellerSignsDelayedPayoutTx extends TradeTask {
"sellerMultiSigPubKey from AddressEntry must match the one from the trade data. trade id =" + id);
byte[] buyerMultiSigPubKey = processModel.getTradingPeer().getMultiSigPubKey();
byte[] delayedPayoutTxSignature = processModel.getTradeWalletService().signDelayedPayoutTx(preparedDelayedPayoutTx,
byte[] delayedPayoutTxSignature = processModel.getTradeWalletService().signDelayedPayoutTx(
preparedDelayedPayoutTx,
myMultiSigKeyPair,
buyerMultiSigPubKey,
sellerMultiSigPubKey);