diff --git a/core/src/main/java/bisq/core/account/witness/AccountAgeWitnessService.java b/core/src/main/java/bisq/core/account/witness/AccountAgeWitnessService.java index 379dec6989b..4c74da3b7b9 100644 --- a/core/src/main/java/bisq/core/account/witness/AccountAgeWitnessService.java +++ b/core/src/main/java/bisq/core/account/witness/AccountAgeWitnessService.java @@ -19,6 +19,8 @@ import bisq.core.account.sign.SignedWitness; import bisq.core.account.sign.SignedWitnessService; +import bisq.core.filter.FilterManager; +import bisq.core.filter.PaymentAccountFilter; import bisq.core.locale.CurrencyUtil; import bisq.core.locale.Res; import bisq.core.offer.Offer; @@ -104,13 +106,14 @@ public String getPresentation() { return presentation; } - } + } private final KeyRing keyRing; private final P2PService p2PService; private final User user; private final SignedWitnessService signedWitnessService; private final ChargeBackRisk chargeBackRisk; + private final FilterManager filterManager; private final Map accountAgeWitnessMap = new HashMap<>(); @@ -127,12 +130,14 @@ public AccountAgeWitnessService(KeyRing keyRing, SignedWitnessService signedWitnessService, ChargeBackRisk chargeBackRisk, AccountAgeWitnessStorageService accountAgeWitnessStorageService, - AppendOnlyDataStoreService appendOnlyDataStoreService) { + AppendOnlyDataStoreService appendOnlyDataStoreService, + FilterManager filterManager) { this.keyRing = keyRing; this.p2PService = p2PService; this.user = user; this.signedWitnessService = signedWitnessService; this.chargeBackRisk = chargeBackRisk; + this.filterManager = filterManager; // We need to add that early (before onAllServicesInitialized) as it will be used at startup. appendOnlyDataStoreService.addService(accountAgeWitnessStorageService); @@ -608,6 +613,7 @@ public List getTraderPaymentAccounts(long safeDate, PaymentMetho List disputes) { return disputes.stream() .filter(dispute -> dispute.getContract().getPaymentMethodId().equals(paymentMethod.getId())) + .filter(this::isNotFiltered) .filter(this::hasChargebackRisk) .filter(this::isBuyerWinner) .flatMap(this::getTraderData) @@ -618,6 +624,19 @@ public List getTraderPaymentAccounts(long safeDate, PaymentMetho .collect(Collectors.toList()); } + private boolean isNotFiltered(Dispute dispute) { + boolean isFiltered = filterManager.isNodeAddressBanned(dispute.getContract().getBuyerNodeAddress()) || + filterManager.isNodeAddressBanned(dispute.getContract().getSellerNodeAddress()) || + filterManager.isCurrencyBanned(dispute.getContract().getOfferPayload().getCurrencyCode()) || + filterManager.isPaymentMethodBanned( + PaymentMethod.getPaymentMethodById(dispute.getContract().getPaymentMethodId())) || + filterManager.isPeersPaymentAccountDataAreBanned(dispute.getContract().getBuyerPaymentAccountPayload(), + new PaymentAccountFilter[1]) || + filterManager.isPeersPaymentAccountDataAreBanned(dispute.getContract().getSellerPaymentAccountPayload(), + new PaymentAccountFilter[1]); + return !isFiltered; + } + private boolean hasChargebackRisk(Dispute dispute) { return chargeBackRisk.hasChargebackRisk(dispute.getContract().getPaymentMethodId(), dispute.getContract().getOfferPayload().getCurrencyCode()); diff --git a/core/src/test/java/bisq/core/account/witness/AccountAgeWitnessServiceTest.java b/core/src/test/java/bisq/core/account/witness/AccountAgeWitnessServiceTest.java index 22e7cd16dd6..3b2d90567a0 100644 --- a/core/src/test/java/bisq/core/account/witness/AccountAgeWitnessServiceTest.java +++ b/core/src/test/java/bisq/core/account/witness/AccountAgeWitnessServiceTest.java @@ -55,7 +55,7 @@ public class AccountAgeWitnessServiceTest { public void setup() throws CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, CryptoException { SignedWitnessService signedWitnessService = mock(SignedWitnessService.class); ChargeBackRisk chargeBackRisk = mock(ChargeBackRisk.class); - service = new AccountAgeWitnessService(null, null, null, signedWitnessService, chargeBackRisk, null, null); + service = new AccountAgeWitnessService(null, null, null, signedWitnessService, chargeBackRisk, null, null, null); keypair = Sig.generateKeyPair(); publicKey = keypair.getPublic(); }