Update types for walletService

This commit is contained in:
Manfred Karrer 2015-03-14 22:23:37 +01:00
parent ae058f37c8
commit c553f77335
11 changed files with 48 additions and 83 deletions

View File

@ -59,8 +59,6 @@ import com.google.common.util.concurrent.Service;
import java.io.File;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
@ -909,13 +907,11 @@ public class WalletService {
}
// 5. step payout tx: Offerer creates payout tx and signs it
public Pair<ECKey.ECDSASignature, Transaction> offererCreatesAndSignsPayoutTx(String depositTxID,
Coin offererPaybackAmount,
Coin takerPaybackAmount,
String takerAddress,
String tradeID)
throws AddressFormatException {
Coin offererPaybackAmount,
Coin takerPaybackAmount,
String takerAddress,
String tradeID) throws AddressFormatException {
log.debug("offererCreatesAndSignsPayoutTx");
log.trace("inputs: ");
log.trace("depositTxID=" + depositTxID);
@ -925,7 +921,7 @@ public class WalletService {
// Offerer has published depositTx earlier, so he has it in his wallet
Transaction depositTx = wallet.getTransaction(new Sha256Hash(depositTxID));
// String depositTxAsHex = Utils.HEX.encode(depositTx.bitcoinSerialize());
// String depositTxAsHex = Utils.HEX.encode(depositTx.bitcoinSerialize());
// We create the payout tx
Transaction tx = createPayoutTx(depositTx, offererPaybackAmount, takerPaybackAmount,
@ -947,8 +943,7 @@ public class WalletService {
// 6. step payout tx: Taker signs and publish tx
public void takerSignsAndSendsTx(Transaction depositTx,
String offererSignatureR,
String offererSignatureS,
ECKey.ECDSASignature offererSignature,
Coin offererPaybackAmount,
Coin takerPaybackAmount,
String offererAddress,
@ -957,16 +952,14 @@ public class WalletService {
log.debug("takerSignsAndSendsTx");
log.trace("inputs: ");
log.trace("depositTx=" + depositTx);
log.trace("offererSignatureR=" + offererSignatureR);
log.trace("offererSignatureS=" + offererSignatureS);
log.trace("offererSignature=" + offererSignature);
log.trace("offererPaybackAmount=" + offererPaybackAmount.toFriendlyString());
log.trace("takerPaybackAmount=" + takerPaybackAmount.toFriendlyString());
log.trace("offererAddress=" + offererAddress);
log.trace("callback=" + callback);
// We create the payout tx
Transaction tx = createPayoutTx(depositTx, offererPaybackAmount, takerPaybackAmount, offererAddress,
getAddressInfo(tradeID).getAddressString());
Transaction tx = createPayoutTx(depositTx, offererPaybackAmount, takerPaybackAmount, offererAddress, getAddressInfo(tradeID).getAddressString());
// We sign that tx with our key and apply the signature form the offerer
TransactionOutput multiSigOutput = tx.getInput(0).getConnectedOutput();
@ -977,8 +970,6 @@ public class WalletService {
ECKey.ECDSASignature takerSignature = getAddressInfo(tradeID).getKey().sign(sigHash);
TransactionSignature takerTxSig = new TransactionSignature(takerSignature, Transaction.SigHash.ALL, false);
ECKey.ECDSASignature offererSignature =
new ECKey.ECDSASignature(new BigInteger(offererSignatureR), new BigInteger(offererSignatureS));
TransactionSignature offererTxSig = new TransactionSignature(offererSignature, Transaction.SigHash.ALL, false);
Script inputScript = ScriptBuilder.createMultiSigInputScript(ImmutableList.of(offererTxSig, takerTxSig));
@ -1036,7 +1027,7 @@ public class WalletService {
log.trace("offererAddress=" + offererAddress);
log.trace("takerAddress=" + takerAddress);
// Transaction depositTx = new Transaction(params, Utils.parseAsHexOrBase58(depositTx));
// Transaction depositTx = new Transaction(params, Utils.parseAsHexOrBase58(depositTx));
TransactionOutput multiSigOutput = depositTx.getOutput(0);
Transaction tx = new Transaction(params);
tx.addInput(multiSigOutput);

View File

@ -32,7 +32,7 @@ import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestOffererPubl
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestTakeOfferMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessTakeOfferFeePayedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RespondToTakeOfferRequest;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferInitedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxIdToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SetupListenerForBlockChainConfirmation;
@ -45,7 +45,7 @@ import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerProtocol;
import io.bitsquare.trade.protocol.trade.taker.tasks.CreateAndSignContract;
import io.bitsquare.trade.protocol.trade.taker.tasks.PayDeposit;
import io.bitsquare.trade.protocol.trade.taker.tasks.PayTakeOfferFee;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessBankTransferInitedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessDepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRespondToTakeOfferRequestMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestDepositPaymentMessage;
@ -122,7 +122,7 @@ public class DebugView extends InitializableView {
SignPayoutTx.class,
VerifyTakeOfferFeePayment.class,
SendBankTransferInitedMessage.class,
SendBankTransferStartedMessage.class,
ProcessPayoutTxPublishedMessage.class,
Boolean.class, /* used as seperator*/
@ -146,7 +146,7 @@ public class DebugView extends InitializableView {
ProcessDepositTxPublishedMessage.class,
TakerCommitDepositTx.class,
ProcessBankTransferInitedMessage.class,
ProcessBankTransferStartedMessage.class,
SignAndPublishPayoutTx.class,
VerifyOfferFeePayment.class,

View File

@ -29,6 +29,7 @@ import io.bitsquare.trade.protocol.trade.OfferSharedModel;
import io.bitsquare.user.User;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Transaction;
import java.security.PublicKey;
@ -71,8 +72,7 @@ public class BuyerAsOffererModel extends OfferSharedModel {
private long offererTxOutIndex;
private byte[] offererPubKey;
private String offererSignatureR;
private String offererSignatureS;
private ECKey.ECDSASignature offererSignature;
private Coin offererPaybackAmount;
@ -226,20 +226,12 @@ public class BuyerAsOffererModel extends OfferSharedModel {
this.depositTx = depositTx;
}
public String getOffererSignatureR() {
return offererSignatureR;
public ECKey.ECDSASignature getOffererSignature() {
return offererSignature;
}
public void setOffererSignatureR(String offererSignatureR) {
this.offererSignatureR = offererSignatureR;
}
public String getOffererSignatureS() {
return offererSignatureS;
}
public void setOffererSignatureS(String offererSignatureS) {
this.offererSignatureS = offererSignatureS;
public void setOffererSignature(ECKey.ECDSASignature offererSignature) {
this.offererSignature = offererSignature;
}
public Coin getOffererPaybackAmount() {

View File

@ -28,7 +28,7 @@ import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestTakeOfferMe
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessTakeOfferFeePayedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RespondToTakeOfferRequest;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferInitedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxIdToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SetupListenerForBlockChainConfirmation;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SignAndPublishDepositTx;
@ -156,7 +156,7 @@ public class BuyerAsOffererProtocol {
taskRunner.addTasks(
SignPayoutTx.class,
VerifyTakeOfferFeePayment.class,
SendBankTransferInitedMessage.class
SendBankTransferStartedMessage.class
);
taskRunner.run();
}

View File

@ -29,23 +29,20 @@ public class BankTransferStartedMessage implements Serializable, TradeMessage {
private final String tradeId;
private final Transaction depositTx;
private final String offererSignatureR;
private final String offererSignatureS;
private final byte[] offererSignature;
private final Coin offererPaybackAmount;
private final Coin takerPaybackAmount;
private final String offererPayoutAddress;
public BankTransferStartedMessage(String tradeId,
Transaction depositTx,
String offererSignatureR,
String offererSignatureS,
byte[] offererSignature,
Coin offererPaybackAmount,
Coin takerPaybackAmount,
String offererPayoutAddress) {
this.tradeId = tradeId;
this.depositTx = depositTx;
this.offererSignatureR = offererSignatureR;
this.offererSignatureS = offererSignatureS;
this.offererSignature = offererSignature;
this.offererPaybackAmount = offererPaybackAmount;
this.takerPaybackAmount = takerPaybackAmount;
this.offererPayoutAddress = offererPayoutAddress;
@ -64,10 +61,6 @@ public class BankTransferStartedMessage implements Serializable, TradeMessage {
return offererPayoutAddress;
}
public String getOffererSignatureS() {
return offererSignatureS;
}
public Coin getOffererPaybackAmount() {
return offererPaybackAmount;
}
@ -76,7 +69,7 @@ public class BankTransferStartedMessage implements Serializable, TradeMessage {
return takerPaybackAmount;
}
public String getOffererSignatureR() {
return offererSignatureR;
public byte[] getOffererSignature() {
return offererSignature;
}
}

View File

@ -26,10 +26,10 @@ import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendBankTransferInitedMessage extends Task<BuyerAsOffererModel> {
private static final Logger log = LoggerFactory.getLogger(SendBankTransferInitedMessage.class);
public class SendBankTransferStartedMessage extends Task<BuyerAsOffererModel> {
private static final Logger log = LoggerFactory.getLogger(SendBankTransferStartedMessage.class);
public SendBankTransferInitedMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
public SendBankTransferStartedMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
super(taskHandler, model);
}
@ -38,8 +38,7 @@ public class SendBankTransferInitedMessage extends Task<BuyerAsOffererModel> {
BankTransferStartedMessage tradeMessage = new BankTransferStartedMessage(
model.getTrade().getId(),
model.getDepositTx(),
model.getOffererSignatureR(),
model.getOffererSignatureS(),
model.getOffererSignature().encodeToDER(),
model.getOffererPaybackAmount(),
model.getTakerPaybackAmount(),
model.getOffererPaybackAddress());

View File

@ -54,9 +54,7 @@ public class SignPayoutTx extends Task<BuyerAsOffererModel> {
model.getTrade().getId());
model.setDepositTx(result.getValue());
ECKey.ECDSASignature offererSignature = result.getKey();
model.setOffererSignatureR(offererSignature.r.toString());
model.setOffererSignatureS(offererSignature.s.toString());
model.setOffererSignature(result.getKey());
model.setOffererPaybackAmount(offererPaybackAmount);
model.setTakerPaybackAmount(takerPaybackAmount);

View File

@ -27,6 +27,7 @@ import io.bitsquare.trade.protocol.trade.OfferSharedModel;
import io.bitsquare.user.User;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Transaction;
import org.slf4j.Logger;
@ -48,8 +49,7 @@ public class SellerAsTakerModel extends OfferSharedModel {
private Coin takerPaybackAmount;
private byte[] offererPubKey;
private long offererTxOutIndex;
private String offererSignatureR;
private String offererSignatureS;
private ECKey.ECDSASignature offererSignature;
private Coin offererPaybackAmount;
private String offererPayoutAddress;
@ -131,20 +131,12 @@ public class SellerAsTakerModel extends OfferSharedModel {
this.depositTx = depositTx;
}
public String getOffererSignatureR() {
return offererSignatureR;
public ECKey.ECDSASignature getOffererSignature() {
return offererSignature;
}
public void setOffererSignatureR(String offererSignatureR) {
this.offererSignatureR = offererSignatureR;
}
public String getOffererSignatureS() {
return offererSignatureS;
}
public void setOffererSignatureS(String offererSignatureS) {
this.offererSignatureS = offererSignatureS;
public void setOffererSignature(ECKey.ECDSASignature offererSignature) {
this.offererSignature = offererSignature;
}
public Coin getOffererPaybackAmount() {

View File

@ -30,7 +30,7 @@ import io.bitsquare.trade.protocol.trade.taker.tasks.CreateAndSignContract;
import io.bitsquare.trade.protocol.trade.taker.tasks.GetPeerAddress;
import io.bitsquare.trade.protocol.trade.taker.tasks.PayDeposit;
import io.bitsquare.trade.protocol.trade.taker.tasks.PayTakeOfferFee;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessBankTransferInitedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessDepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRespondToTakeOfferRequestMessage;
@ -153,7 +153,7 @@ public class SellerAsTakerProtocol {
taskRunner.run();
}
private void handleBankTransferInitedMessage(BankTransferStartedMessage tradeMessage) {
private void handleBankTransferStartedMessage(BankTransferStartedMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
SellerAsTakerTaskRunner<SellerAsTakerModel> taskRunner = new SellerAsTakerTaskRunner<>(model,
@ -165,7 +165,7 @@ public class SellerAsTakerProtocol {
log.error(errorMessage);
}
);
taskRunner.addTasks(ProcessBankTransferInitedMessage.class);
taskRunner.addTasks(ProcessBankTransferStartedMessage.class);
taskRunner.run();
}
@ -213,7 +213,7 @@ public class SellerAsTakerProtocol {
handleDepositTxPublishedMessage((DepositTxPublishedMessage) tradeMessage);
}
else if (tradeMessage instanceof BankTransferStartedMessage) {
handleBankTransferInitedMessage((BankTransferStartedMessage) tradeMessage);
handleBankTransferStartedMessage((BankTransferStartedMessage) tradeMessage);
}
else {
log.error("Incoming message not supported. " + tradeMessage);

View File

@ -22,16 +22,18 @@ import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
import io.bitsquare.util.taskrunner.Task;
import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.ECKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
import static io.bitsquare.util.Validator.*;
public class ProcessBankTransferInitedMessage extends Task<SellerAsTakerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessBankTransferInitedMessage.class);
public class ProcessBankTransferStartedMessage extends Task<SellerAsTakerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessBankTransferStartedMessage.class);
public ProcessBankTransferInitedMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
public ProcessBankTransferStartedMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
super(taskHandler, model);
}
@ -42,8 +44,7 @@ public class ProcessBankTransferInitedMessage extends Task<SellerAsTakerModel> {
BankTransferStartedMessage message = (BankTransferStartedMessage) model.getTradeMessage();
model.setDepositTx(checkNotNull(message.getDepositTx()));
model.setOffererSignatureR(nonEmptyStringOf(message.getOffererSignatureR()));
model.setOffererSignatureS(nonEmptyStringOf(message.getOffererSignatureS()));
model.setOffererSignature(checkNotNull(ECKey.ECDSASignature.decodeFromDER(message.getOffererSignature())));
model.setOffererPaybackAmount(positiveCoinOf(nonZeroCoinOf(message.getOffererPaybackAmount())));
model.setTakerPaybackAmount(positiveCoinOf(nonZeroCoinOf(message.getTakerPaybackAmount())));
model.setOffererPayoutAddress(nonEmptyStringOf(message.getOffererPayoutAddress()));

View File

@ -44,8 +44,7 @@ public class SignAndPublishPayoutTx extends Task<SellerAsTakerModel> {
protected void doRun() {
try {
model.getWalletService().takerSignsAndSendsTx(model.getDepositTx(),
model.getOffererSignatureR(),
model.getOffererSignatureS(),
model.getOffererSignature(),
model.getOffererPaybackAmount(),
model.getTakerPaybackAmount(),
model.getOffererPayoutAddress(),