increase penalty fee to security deposit

This commit is contained in:
woodser 2023-03-08 15:06:55 -05:00
parent 8ea556fa4f
commit a16b03bb5c
11 changed files with 82 additions and 55 deletions

View file

@ -1570,12 +1570,12 @@ public abstract class Trade implements Tradable, Model {
public BigInteger getBuyerSecurityDeposit() {
if (getBuyer().getDepositTxHash() == null) return null;
return BigInteger.valueOf(getBuyer().getSecurityDeposit());
return getBuyer().getSecurityDeposit();
}
public BigInteger getSellerSecurityDeposit() {
if (getSeller().getDepositTxHash() == null) return null;
return BigInteger.valueOf(getSeller().getSecurityDeposit());
return getSeller().getSecurityDeposit();
}
@Nullable
@ -1719,11 +1719,11 @@ public abstract class Trade implements Tradable, Model {
getTaker().setDepositTx(makerFirst ? txs.get(1) : txs.get(0));
// set security deposits
if (getBuyer().getSecurityDeposit() == 0) {
if (getBuyer().getSecurityDeposit().longValueExact() == 0) {
BigInteger buyerSecurityDeposit = ((MoneroTxWallet) getBuyer().getDepositTx()).getIncomingAmount();
BigInteger sellerSecurityDeposit = ((MoneroTxWallet) getSeller().getDepositTx()).getIncomingAmount().subtract(getAmount());
getBuyer().setSecurityDeposit(buyerSecurityDeposit.longValueExact());
getSeller().setSecurityDeposit(sellerSecurityDeposit.longValueExact());
getBuyer().setSecurityDeposit(buyerSecurityDeposit);
getSeller().setSecurityDeposit(sellerSecurityDeposit);
}
// set deposits published state

View file

@ -27,6 +27,8 @@ import haveno.core.payment.payload.PaymentAccountPayload;
import haveno.core.proto.CoreProtoResolver;
import haveno.core.xmr.model.RawTransactionInput;
import haveno.network.p2p.NodeAddress;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@ -133,6 +135,14 @@ public final class TradePeer implements PersistablePayload {
public TradePeer() {
}
public BigInteger getSecurityDeposit() {
return BigInteger.valueOf(securityDeposit);
}
public void setSecurityDeposit(BigInteger securityDeposit) {
this.securityDeposit = securityDeposit.longValueExact();
}
@Override
public Message toProtoMessage() {
final protobuf.TradePeer.Builder builder = protobuf.TradePeer.newBuilder()
@ -219,7 +229,7 @@ public final class TradePeer implements PersistablePayload {
tradePeer.setDepositTxHash(ProtoUtil.stringOrNullFromProto(proto.getDepositTxHash()));
tradePeer.setDepositTxHex(ProtoUtil.stringOrNullFromProto(proto.getDepositTxHex()));
tradePeer.setDepositTxKey(ProtoUtil.stringOrNullFromProto(proto.getDepositTxKey()));
tradePeer.setSecurityDeposit(proto.getSecurityDeposit());
tradePeer.setSecurityDeposit(BigInteger.valueOf(proto.getSecurityDeposit()));
tradePeer.setUpdatedMultisigHex(ProtoUtil.stringOrNullFromProto(proto.getUpdatedMultisigHex()));
return tradePeer;
}

View file

@ -90,7 +90,8 @@ public class ArbitratorProcessDepositRequest extends TradeTask {
trader.getDepositTxHash(),
request.getDepositTxHex(),
request.getDepositTxKey(),
null);
null,
false);
} catch (Exception e) {
throw new RuntimeException("Error processing deposit tx from " + (isFromTaker ? "taker " : "maker ") + trader.getNodeAddress() + ", offerId=" + offer.getId() + ": " + e.getMessage());
}

View file

@ -18,6 +18,7 @@
package haveno.core.trade.protocol.tasks;
import haveno.common.taskrunner.TaskRunner;
import haveno.common.util.Tuple2;
import haveno.core.offer.Offer;
import haveno.core.offer.OfferDirection;
import haveno.core.trade.Trade;
@ -26,6 +27,7 @@ import haveno.core.trade.protocol.TradePeer;
import java.math.BigInteger;
import lombok.extern.slf4j.Slf4j;
import monero.daemon.model.MoneroTx;
/**
* Arbitrator verifies reserve tx from maker or taker.
@ -55,8 +57,9 @@ public class ArbitratorProcessReserveTx extends TradeTask {
BigInteger tradeFee = isFromTaker ? trade.getTakerFee() : trade.getMakerFee();
BigInteger sendAmount = isFromBuyer ? BigInteger.valueOf(0) : offer.getAmount();
BigInteger securityDeposit = isFromBuyer ? offer.getBuyerSecurityDeposit() : offer.getSellerSecurityDeposit();
Tuple2<MoneroTx, BigInteger> txResult;
try {
trade.getXmrWalletService().verifyTradeTx(
txResult = trade.getXmrWalletService().verifyTradeTx(
tradeFee,
sendAmount,
securityDeposit,
@ -64,7 +67,8 @@ public class ArbitratorProcessReserveTx extends TradeTask {
request.getReserveTxHash(),
request.getReserveTxHex(),
request.getReserveTxKey(),
null);
null,
true);
} catch (Exception e) {
throw new RuntimeException("Error processing reserve tx from " + (isFromTaker ? "taker " : "maker ") + request.getSenderNodeAddress() + ", offerId=" + offer.getId() + ": " + e.getMessage());
}
@ -74,6 +78,7 @@ public class ArbitratorProcessReserveTx extends TradeTask {
trader.setReserveTxHash(request.getReserveTxHash());
trader.setReserveTxHex(request.getReserveTxHex());
trader.setReserveTxKey(request.getReserveTxKey());
trader.setSecurityDeposit(txResult.second);
// persist trade
processModel.getTradeManager().requestPersistence();