mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-09 07:02:24 -04:00
set penalty fee to 25% of security deposit (#1844)
This commit is contained in:
parent
a4d744aa53
commit
3680e1d4ee
7 changed files with 14 additions and 11 deletions
|
@ -1678,17 +1678,17 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
|||
|
||||
// verify penalty fee
|
||||
if (offer.getPenaltyFeePct() != HavenoUtils.PENALTY_FEE_PCT) {
|
||||
errorMessage = "Wrong penalty fee for offer " + request.offerId;
|
||||
errorMessage = "Wrong penalty fee percent for offer " + request.offerId + ". Expected " + HavenoUtils.PENALTY_FEE_PCT + " but got " + offer.getPenaltyFeePct();
|
||||
log.warn(errorMessage);
|
||||
sendAckMessage(request.getClass(), peer, request.getPubKeyRing(), request.getOfferId(), request.getUid(), false, errorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// verify maker's reserve tx (double spend, trade fee, trade amount, mining fee)
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(offer.getAmount(), HavenoUtils.PENALTY_FEE_PCT);
|
||||
BigInteger maxTradeFee = HavenoUtils.multiply(offer.getAmount(), hasBuyerAsTakerWithoutDeposit ? HavenoUtils.MAKER_FEE_FOR_TAKER_WITHOUT_DEPOSIT_PCT : HavenoUtils.MAKER_FEE_PCT);
|
||||
BigInteger sendTradeAmount = offer.getDirection() == OfferDirection.BUY ? BigInteger.ZERO : offer.getAmount();
|
||||
BigInteger securityDeposit = offer.getDirection() == OfferDirection.BUY ? offer.getMaxBuyerSecurityDeposit() : offer.getMaxSellerSecurityDeposit();
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(securityDeposit, HavenoUtils.PENALTY_FEE_PCT);
|
||||
MoneroTx verifiedTx = xmrWalletService.verifyReserveTx(
|
||||
offer.getId(),
|
||||
penaltyFee,
|
||||
|
@ -1712,7 +1712,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
|||
signedOfferPayload.getPubKeyRing().hashCode(), // trader id
|
||||
signedOfferPayload.getId(),
|
||||
offer.getAmount().longValueExact(),
|
||||
maxTradeFee.longValueExact(),
|
||||
penaltyFee.longValueExact(),
|
||||
request.getReserveTxHash(),
|
||||
request.getReserveTxHex(),
|
||||
request.getReserveTxKeyImages(),
|
||||
|
@ -2029,7 +2029,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
|||
originalOfferPayload.getMinAmount(),
|
||||
originalOfferPayload.getMakerFeePct(),
|
||||
originalOfferPayload.getTakerFeePct(),
|
||||
originalOfferPayload.getPenaltyFeePct(),
|
||||
HavenoUtils.PENALTY_FEE_PCT,
|
||||
originalOfferPayload.getBuyerSecurityDepositPct(),
|
||||
originalOfferPayload.getSellerSecurityDepositPct(),
|
||||
originalOffer.getBaseCurrencyCode(),
|
||||
|
|
|
@ -72,10 +72,10 @@ public class MakerReserveOfferFunds extends Task<PlaceOfferModel> {
|
|||
model.getProtocol().startTimeoutTimer();
|
||||
|
||||
// collect relevant info
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(offer.getAmount(), offer.getPenaltyFeePct());
|
||||
BigInteger makerFee = offer.getMaxMakerFee();
|
||||
BigInteger sendAmount = offer.getDirection() == OfferDirection.BUY ? BigInteger.ZERO : offer.getAmount();
|
||||
BigInteger securityDeposit = offer.getDirection() == OfferDirection.BUY ? offer.getMaxBuyerSecurityDeposit() : offer.getMaxSellerSecurityDeposit();
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(securityDeposit, offer.getPenaltyFeePct());
|
||||
String returnAddress = model.getXmrWalletService().getOrCreateAddressEntry(offer.getId(), XmrAddressEntry.Context.TRADE_PAYOUT).getAddressString();
|
||||
XmrAddressEntry fundingEntry = model.getXmrWalletService().getAddressEntry(offer.getId(), XmrAddressEntry.Context.OFFER_FUNDING).orElse(null);
|
||||
Integer preferredSubaddressIndex = fundingEntry == null ? null : fundingEntry.getSubaddressIndex();
|
||||
|
|
|
@ -94,7 +94,7 @@ public class HavenoUtils {
|
|||
|
||||
// configure fees
|
||||
public static final boolean ARBITRATOR_ASSIGNS_TRADE_FEE_ADDRESS = true;
|
||||
public static final double PENALTY_FEE_PCT = 0.02; // 2%
|
||||
public static final double PENALTY_FEE_PCT = 0.25; // percent of security deposit to charge for penalty
|
||||
public static final double MAKER_FEE_PCT = 0.0015; // 0.15%
|
||||
public static final double TAKER_FEE_PCT = 0.0075; // 0.75%
|
||||
public static final double MAKER_FEE_FOR_TAKER_WITHOUT_DEPOSIT_PCT = MAKER_FEE_PCT + TAKER_FEE_PCT; // customize maker's fee when no deposit or fee from taker
|
||||
|
|
|
@ -64,7 +64,7 @@ public class ArbitratorProcessReserveTx extends TradeTask {
|
|||
if (!isFromBuyerAsTakerWithoutDeposit) {
|
||||
|
||||
// process reserve tx with expected values
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(isFromMaker ? offer.getAmount() : trade.getAmount(), offer.getPenaltyFeePct());
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(securityDeposit, offer.getPenaltyFeePct());
|
||||
BigInteger tradeFee = isFromMaker ? offer.getMaxMakerFee() : trade.getTakerFee();
|
||||
BigInteger sendAmount = isFromBuyer ? BigInteger.ZERO : isFromMaker ? offer.getAmount() : trade.getAmount(); // maker reserve tx is for offer amount
|
||||
try {
|
||||
|
|
|
@ -78,10 +78,10 @@ public class MakerRecreateReserveTx extends TradeTask {
|
|||
trade.startProtocolTimeout();
|
||||
|
||||
// collect relevant info
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(offer.getAmount(), offer.getPenaltyFeePct());
|
||||
BigInteger makerFee = offer.getMaxMakerFee();
|
||||
BigInteger sendAmount = offer.getDirection() == OfferDirection.BUY ? BigInteger.ZERO : offer.getAmount();
|
||||
BigInteger securityDeposit = offer.getDirection() == OfferDirection.BUY ? offer.getMaxBuyerSecurityDeposit() : offer.getMaxSellerSecurityDeposit();
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(securityDeposit, offer.getPenaltyFeePct());
|
||||
String returnAddress = model.getXmrWalletService().getAddressEntry(offer.getId(), XmrAddressEntry.Context.TRADE_PAYOUT).get().getAddressString();
|
||||
XmrAddressEntry fundingEntry = model.getXmrWalletService().getAddressEntry(offer.getId(), XmrAddressEntry.Context.OFFER_FUNDING).orElse(null);
|
||||
Integer preferredSubaddressIndex = fundingEntry == null ? null : fundingEntry.getSubaddressIndex();
|
||||
|
|
|
@ -57,10 +57,10 @@ public class TakerReserveTradeFunds extends TradeTask {
|
|||
trade.startProtocolTimeout();
|
||||
|
||||
// collect relevant info
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(trade.getAmount(), trade.getOffer().getPenaltyFeePct());
|
||||
BigInteger takerFee = trade.getTakerFee();
|
||||
BigInteger sendAmount = trade.getOffer().getDirection() == OfferDirection.BUY ? trade.getAmount() : BigInteger.ZERO;
|
||||
BigInteger securityDeposit = trade.getSecurityDepositBeforeMiningFee();
|
||||
BigInteger penaltyFee = HavenoUtils.multiply(securityDeposit, trade.getOffer().getPenaltyFeePct());
|
||||
String returnAddress = trade.getXmrWalletService().getOrCreateAddressEntry(trade.getOffer().getId(), XmrAddressEntry.Context.TRADE_PAYOUT).getAddressString();
|
||||
|
||||
// attempt creating reserve tx
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package haveno.desktop.components.list;
|
||||
|
||||
import haveno.common.UserThread;
|
||||
import haveno.desktop.components.InputTextField;
|
||||
import haveno.desktop.util.filtering.FilterableListItem;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
|
@ -44,8 +45,10 @@ public class FilterBox extends HBox {
|
|||
TableView<? extends FilterableListItem> tableView) {
|
||||
this.filteredList = filteredList;
|
||||
listener = (observable, oldValue, newValue) -> {
|
||||
tableView.getSelectionModel().clearSelection();
|
||||
applyFilteredListPredicate(textField.getText());
|
||||
UserThread.execute(() -> {
|
||||
tableView.getSelectionModel().clearSelection();
|
||||
applyFilteredListPredicate(textField.getText());
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue