mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 09:52:23 +01:00
update to bitcoinJ master: trade process working, signing and contract open to fix
This commit is contained in:
parent
0f04d3c483
commit
ff7aa52d39
@ -120,17 +120,17 @@ class AddressBasedCoinSelector extends DefaultCoinSelector
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public CoinSelection select(Coin biTarget, LinkedList<TransactionOutput> candidates)
|
||||
@Override
|
||||
public CoinSelection select(Coin target, List<TransactionOutput> candidates)
|
||||
{
|
||||
long target = biTarget.longValue();
|
||||
long targetAsLong = target.longValue();
|
||||
HashSet<TransactionOutput> selected = new HashSet<>();
|
||||
// Sort the inputs by age*value so we get the highest "coindays" spent.
|
||||
// TODO: Consider changing the wallets internal format to track just outputs and keep them ordered.
|
||||
ArrayList<TransactionOutput> sortedOutputs = new ArrayList<>(candidates);
|
||||
// When calculating the wallet balance, we may be asked to select all possible coins, if so, avoid sorting
|
||||
// them in order to improve performance.
|
||||
if (!biTarget.equals(NetworkParameters.MAX_MONEY))
|
||||
if (!target.equals(NetworkParameters.MAX_MONEY))
|
||||
{
|
||||
sortOutputs(sortedOutputs);
|
||||
}
|
||||
@ -139,7 +139,7 @@ class AddressBasedCoinSelector extends DefaultCoinSelector
|
||||
long total = 0;
|
||||
for (TransactionOutput output : sortedOutputs)
|
||||
{
|
||||
if (total >= target)
|
||||
if (total >= targetAsLong)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -614,6 +614,7 @@ public class WalletFacade
|
||||
tx.addOutput(fee, feePolicy.getAddressForRegistrationFee());
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
// we don't allow spending of unconfirmed tx as with fake registrations we would open up doors for spam and market manipulation with fake offers
|
||||
// so set includePending to false
|
||||
sendRequest.coinSelector = new AddressBasedCoinSelector(params, getRegistrationAddressInfo(), false);
|
||||
@ -647,6 +648,7 @@ public class WalletFacade
|
||||
tx.addOutput(fee, feePolicy.getAddressForCreateOfferFee());
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
// we allow spending of unconfirmed tx (double spend risk is low and usability would suffer if we need to wait for 1 confirmation)
|
||||
sendRequest.coinSelector = new AddressBasedCoinSelector(params, getAddressInfoByTradeID(offerId), true);
|
||||
sendRequest.changeAddress = getAddressInfoByTradeID(offerId).getAddress();
|
||||
@ -668,6 +670,7 @@ public class WalletFacade
|
||||
tx.addOutput(fee, feePolicy.getAddressForTakeOfferFee());
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
// we allow spending of unconfirmed tx (double spend risk is low and usability would suffer if we need to wait for 1 confirmation)
|
||||
sendRequest.coinSelector = new AddressBasedCoinSelector(params, getAddressInfoByTradeID(offerId), true);
|
||||
sendRequest.changeAddress = getAddressInfoByTradeID(offerId).getAddress();
|
||||
@ -696,6 +699,7 @@ public class WalletFacade
|
||||
tx.addOutput(amount.subtract(FeePolicy.TX_FEE), new Address(params, withdrawToAddress));
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
// we allow spending of unconfirmed tx (double spend risk is low and usability would suffer if we need to wait for 1 confirmation)
|
||||
|
||||
|
||||
@ -749,6 +753,7 @@ public class WalletFacade
|
||||
tx.addOutput(amountToPay, multiSigOutputScript);
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
AddressEntry addressEntry = getAddressInfoByTradeID(tradeId);
|
||||
addressEntry.setTradeId(tradeId);
|
||||
// we allow spending of unconfirmed tx (double spend risk is low and usability would suffer if we need to wait for 1 confirmation)
|
||||
@ -808,6 +813,7 @@ public class WalletFacade
|
||||
tempTx.addOutput(takerInputAmount, multiSigOutputScript);
|
||||
|
||||
Wallet.SendRequest sendRequest = Wallet.SendRequest.forTx(tempTx);
|
||||
sendRequest.shuffleOutputs = false;
|
||||
AddressEntry addressEntry = getAddressInfoByTradeID(tradeId);
|
||||
addressEntry.setTradeId(tradeId);
|
||||
// we allow spending of unconfirmed tx (double spend risk is low and usability would suffer if we need to wait for 1 confirmation)
|
||||
@ -1165,7 +1171,7 @@ public class WalletFacade
|
||||
//TODO
|
||||
private Script getMultiSigScript(String offererPubKey, String takerPubKey, String arbitratorPubKey)
|
||||
{
|
||||
ECKey offererKey = wallet.findKeyFromPubKey(Utils.parseAsHexOrBase58(offererPubKey));
|
||||
ECKey offererKey = ECKey.fromPublicOnly(Utils.parseAsHexOrBase58(offererPubKey));
|
||||
ECKey takerKey = ECKey.fromPublicOnly(Utils.parseAsHexOrBase58(takerPubKey));
|
||||
ECKey arbitratorKey = ECKey.fromPublicOnly(Utils.parseAsHexOrBase58(arbitratorPubKey));
|
||||
|
||||
|
@ -38,14 +38,17 @@ public class VerifyAndSignContract
|
||||
// log.trace("Offerer contract created: " + contract);
|
||||
// log.trace("Offerers contractAsJson: " + contractAsJson);
|
||||
// log.trace("Takers contractAsJson: " + sharedModel.peersContractAsJson);
|
||||
if (contractAsJson.equals(peersContractAsJson))
|
||||
{
|
||||
log.trace("The 2 contracts as json does match");
|
||||
String signature = cryptoFacade.signContract(registrationKey, contractAsJson);
|
||||
//log.trace("signature: " + signature);
|
||||
|
||||
resultHandler.onResult(contract, contractAsJson, signature);
|
||||
}
|
||||
//TODO not matching yet due refactoring...
|
||||
/* if (contractAsJson.equals(peersContractAsJson))
|
||||
{ */
|
||||
log.trace("The 2 contracts as json does match");
|
||||
//String signature = cryptoFacade.signContract(registrationKey, contractAsJson);
|
||||
String signature = "TODO";
|
||||
//log.trace("signature: " + signature);
|
||||
|
||||
resultHandler.onResult(contract, contractAsJson, signature);
|
||||
/* }
|
||||
else
|
||||
{
|
||||
// TODO use diff output as feedback ?
|
||||
@ -54,7 +57,7 @@ public class VerifyAndSignContract
|
||||
log.error("Takers contractAsJson: " + peersContractAsJson);
|
||||
|
||||
faultHandler.onFault(new Exception("Contracts are not matching"));
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
public interface ResultHandler
|
||||
|
@ -26,7 +26,7 @@
|
||||
<logger name="com.google.bitcoin" level="WARN"/>
|
||||
|
||||
|
||||
<logger name="net.tomp2p" level="DEBUG"/>
|
||||
<logger name="net.tomp2p" level="WARN"/>
|
||||
|
||||
<logger name="io.netty.util" level="WARN"/>
|
||||
<logger name="io.netty.channel" level="WARN"/>
|
||||
|
Loading…
Reference in New Issue
Block a user