Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce maximum trade size for unsigned payment accounts #7365

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import bisq.core.account.witness.AccountAgeWitness;
import bisq.core.crypto.LowRSigningKey;
import bisq.core.filter.FilterManager;
import bisq.core.offer.OfferRestrictions;
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
import bisq.core.user.User;

Expand Down Expand Up @@ -69,7 +70,7 @@
public class SignedWitnessService {
public static final long SIGNER_AGE_DAYS = 30;
private static final long SIGNER_AGE = SIGNER_AGE_DAYS * ChronoUnit.DAYS.getDuration().toMillis();
public static final Coin MINIMUM_TRADE_AMOUNT_FOR_SIGNING = Coin.parseCoin("0.0025");
public static final Coin MINIMUM_TRADE_AMOUNT_FOR_SIGNING = OfferRestrictions.TOLERATED_SMALL_TRADE_AMOUNT.divide(4);

private final KeyRing keyRing;
private final P2PService p2PService;
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/bisq/core/btc/wallet/Restrictions.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import java.util.GregorianCalendar;

public class Restrictions {
private static final Date MIN_SECURITY_DEPOSIT_CHANGE_ACTIVATION_DATE = Utilities.getUTCDate(2025, GregorianCalendar.MARCH, 1);
private static final Date MIN_SECURITY_DEPOSIT_CHANGE_ACTIVATION_DATE = Utilities.getUTCDate(2025, GregorianCalendar.FEBRUARY, 17);

private static Coin MIN_TRADE_AMOUNT;
private static Coin MIN_BUYER_SECURITY_DEPOSIT;
Expand Down
6 changes: 5 additions & 1 deletion core/src/main/java/bisq/core/offer/OfferRestrictions.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import java.util.Map;

public class OfferRestrictions {
public static final Date TOLERATED_SMALL_TRADE_AMOUNT_CHANGE_ACTIVATION_DATE = Utilities.getUTCDate(2025, GregorianCalendar.FEBRUARY, 17);

// The date when traders who have not upgraded to a Tor v3 Node Address cannot take offers and their offers become
// invisible.
private static final Date REQUIRE_TOR_NODE_ADDRESS_V3_DATE = Utilities.getUTCDate(2021, GregorianCalendar.AUGUST, 15);
Expand All @@ -39,7 +41,9 @@ public static boolean requiresNodeAddressUpdate() {
return new Date().after(REQUIRE_TOR_NODE_ADDRESS_V3_DATE) && !Config.baseCurrencyNetwork().isRegtest();
}

public static Coin TOLERATED_SMALL_TRADE_AMOUNT = Coin.parseCoin("0.01");
public static Coin TOLERATED_SMALL_TRADE_AMOUNT = new Date().after(TOLERATED_SMALL_TRADE_AMOUNT_CHANGE_ACTIVATION_DATE)
? Coin.parseCoin("0.002")
: Coin.parseCoin("0.01");

static boolean hasOfferMandatoryCapability(Offer offer, Capability mandatoryCapability) {
Map<String, String> extraDataMap = offer.getExtraDataMap();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ public final class TradeStatistics3 implements ProcessOncePersistableNetworkPayl
CapabilityRequiringPayload, DateSortedTruncatablePayload, ComparableExt<TradeStatistics3> {

@JsonExclude
private transient static final ZoneId ZONE_ID = ZoneId.systemDefault();
private static final ZoneId ZONE_ID = ZoneId.systemDefault();
@JsonExclude
private transient static final long STRICT_FILTER_DATE = new GregorianCalendar(2021, Calendar.NOVEMBER, 1).getTime().getTime();
private static final long STRICT_FILTER_DATE = new GregorianCalendar(2021, Calendar.NOVEMBER, 1).getTime().getTime();

public static TradeStatistics3 from(Trade trade,
@Nullable String referralId,
Expand Down
29 changes: 17 additions & 12 deletions core/src/main/resources/i18n/displayStrings.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3855,18 +3855,23 @@ payment.accountType=Account type
payment.checking=Checking
payment.savings=Savings
payment.personalId=Personal ID
payment.makeOfferToUnsignedAccount.warning=With the recent rise in BTC price, beware that selling 0.01 BTC or less incurs higher risk than before.\n\n\
It is highly recommended to either:\n\
- make offers >0.01 BTC, so you only deal with signed/trusted buyers\n\
- keep any offers to sell <0.01 BTC to around ~100 USD in value, as this value has (historically) discouraged scammers\n\n\
Bisq developers are working on better ways to secure the payment account model for such smaller trades. \
Join the discussion here: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].
payment.takeOfferFromUnsignedAccount.warning=With the recent rise in BTC price, beware that selling 0.01 BTC or less incurs higher risk than before.\n\n\
It is highly recommended to either:\n\
- take offers from signed buyers only\n\
- keep trades with unsigned/untrusted buyers to around ~100 USD in value, as this value has (historically) discouraged scammers\n\n\
Bisq developers are working on better ways to secure the payment account model for such smaller trades. \
Join the discussion here: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].

payment.unsignedAccountWarningForSellerAsMaker.warning=Your offer amount allows buyers without a signed payment account to take your offer.\n\n\
Buyers without a signed account are permitted to trade up to {0}. Account signing [HYPERLINK:https://bisq.wiki/Account_limits#Account_signing] is a key fraud protection measure against bank chargebacks.\n\n\
Consider the following options to reduce your risk:\n\
- Increase the trade amount to above {1}, ensuring that only buyers with a signed payment account can take your offer.\n\
- Set the trade amount around 100 USD, as this threshold has historically discouraged scammers, particularly in the USD and EUR markets.\n\
- Use Bisq Easy for small trade amounts up to 600 USD, as an alternative for lower-value trades.\n\n\
Learn more about Bisq Easy at: https://bisq.network/bisq-easy [HYPERLINK:https://bisq.network/bisq-easy].

payment.unsignedAccountWarningForSellerAsTaker.warning=The Bitcoin buyer for this offer has not yet signed their payment account.\n\n\
Buyers without a signed account are permitted to trade up to {0}. Account signing [HYPERLINK:https://bisq.wiki/Account_limits#Account_signing] is a key fraud protection measure against bank chargebacks.\n\n\
Consider the following options to reduce your risk:\n\
- Choose another offer from a buyer with a signed account.\n\
- If trading with an unsigned buyer, keep the trade amount around 100 USD, as this threshold has historically discouraged scammers.\n\
- Use Bisq Easy for small trade amounts up to 600 USD, as an alternative for lower-value trades.\n\n\
Learn more about Bisq Easy at: https://bisq.network/bisq-easy [HYPERLINK:https://bisq.network/bisq-easy].

payment.clearXchange.info=Zelle is a money transfer service that works best *through* another bank.\n\n\
1. Check this page to see if (and how) your bank works with Zelle: [HYPERLINK:https://www.zellepay.com/get-started]\n\n\
2. Take special note of your transfer limits—sending limits vary by bank, and banks often specify separate daily, weekly, and monthly limits.\n\n\
Expand Down
2 changes: 0 additions & 2 deletions core/src/main/resources/i18n/displayStrings_cs.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3073,8 +3073,6 @@ payment.accountType=Typ účtu
payment.checking=Kontrola
payment.savings=Úspory
payment.personalId=Číslo občanského průkazu
payment.makeOfferToUnsignedAccount.warning=Kvůli nedávnému růstu ceny BTC si buďte vědomi, že prodej 0.01 BTC nebo méně s sebou nese vyšší riziko než dříve.\n\nDůrazně doporučujeme jednu z následujících možností:\n- vytvářejte nabídky s objemem >0.01 BTC, abyste tak obchodovali pouze s podepsanými/důvěryhodnými kupci\n- nabídky k prodeji <0.01 BTC omezte na hodnotu zhruba do 100 USD; podvodníci se takovým nabídkám v minulosti spíše vyhýbali\n\nVývojáři Bisq pracují na lepším modelu zabezpečení platebních účtů pro takovéto malé transakce. Připojte se k diskuzi zde: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].
payment.takeOfferFromUnsignedAccount.warning=Kvůli nedávnému růstu ceny BTC si buďte vědomi, že prodej 0.01 BTC nebo méně s sebou nese vyšší riziko než dříve.\n\nDůrazně doporučujeme jednu z následujících možností:\n- akceptujte nabídky pouze od kupců s podepsanými účty\n- hodnotu obchodů s nepodepsanými (méně důvěryhodnými) účty protistrany omezte zhruba do 100 USD; podvodníci se s takto nízkými transakcemi v minulosti spíše nezabývali\n\nVývojáři Bisq pracují na lepším modelu zabezpečení platebních účtů pro takovéto malé transakce. Připojte se k diskuzi zde: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].
payment.clearXchange.info=Zelle je služba převodu peněz, která funguje nejlépe *prostřednictvím* jiné banky.\n\n1. Na této stránce zjistěte, zda (a jak) vaše banka spolupracuje se Zelle:\n[HYPERLINK:https://www.zellepay.com/get-started]\n\n2. Zaznamenejte si zvláštní limity převodů - limity odesílání se liší podle banky a banky často určují samostatné denní, týdenní a měsíční limity.\n\n3. Pokud vaše banka s Zelle nepracuje, můžete ji stále používat prostřednictvím mobilní aplikace Zelle, ale vaše limity převodu budou mnohem nižší.\n\n4. Název uvedený na vašem účtu Bisq MUSÍ odpovídat názvu vašeho účtu Zelle/bankovního účtu.\n\nPokud nemůžete dokončit transakci Zelle, jak je uvedeno ve vaší obchodní smlouvě, můžete ztratit část (nebo vše) ze svého bezpečnostního vkladu.\n\nVzhledem k poněkud vyššímu riziku zpětného zúčtování společnosti Zelle se prodejcům doporučuje kontaktovat nepodepsané kupující prostřednictvím e-mailu nebo SMS, aby ověřili, že kupující skutečně vlastní účet Zelle uvedený v Bisq.
payment.fasterPayments.newRequirements.info=Některé banky začaly ověřovat celé jméno příjemce pro převody Faster Payments. Váš současný účet Faster Payments nepožadoval celé jméno.\n\nZvažte prosím znovu vytvoření svého Faster Payments účtu v Bisqu, abyste mohli budoucím kupujícím {0} poskytnout celé jméno.\n\nPři opětovném vytvoření účtu nezapomeňte zkopírovat přesný kód řazení, číslo účtu a hodnoty soli (salt) pro ověření věku ze starého účtu do nového účtu. Tím zajistíte zachování stáří a stavu vašeho stávajícího účtu.
payment.moneyGram.info=Při používání MoneyGram musí BTC kupující zaslat autorizační číslo a fotografii potvrzení e-mailem prodejci BTC. Potvrzení musí jasně uvádět celé jméno prodejce, zemi, stát a částku. E-mail prodávajícího se kupujícímu zobrazí během procesu obchodování.
Expand Down
6 changes: 2 additions & 4 deletions core/src/main/resources/i18n/displayStrings_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3073,8 +3073,6 @@ payment.accountType=Kontotyp
payment.checking=Überprüfe
payment.savings=Ersparnisse
payment.personalId=Personalausweis
payment.makeOfferToUnsignedAccount.warning=Beachten Sie angesichts des jüngsten Anstiegs des BTC-Preises, dass der Verkauf von 0,01 BTC oder weniger ein höheres Risiko als zuvor birgt.\n\nEs wird dringend empfohlen, entweder:\n- Angebote > 0,01 BTC zu machen, damit Sie nur mit signierten/vertrauenswürdigen Käufern handeln\n- Den Wert aller Angebote zum Verkauf von < 0,01 BTC unter ca. 100 USD zu halten, da dieser Wert (erfahrungsgemäß) Betrüger entmutigt hat\n\nBisq-Entwickler arbeiten an Möglichkeiten um das Zahlungsmodell für solch kleine Händel besser abzusichern. Nehmen Sie hier an der aktuellen Diskussion teil: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].
payment.takeOfferFromUnsignedAccount.warning=Beachten Sie angesichts des jüngsten Anstiegs des BTC-Preises, dass der Verkauf von 0,01 BTC oder weniger ein höheres Risiko als zuvor birgt.\n\nEs wird dringend empfohlen, entweder:\n- Angebote nur von signierten/vertrauenswürdigen Käufern anzunehmen\n- Geschäfte mit nicht signierten/nicht vertrauenswürdigen Käufern bei einem Wert von ca. 100 USD zu halten, da dieser Wert (erfahrungsgemäß) Betrüger entmutigt hat\n\nBisq-Entwickler arbeiten an Möglichkeiten um das Zahlungsmodell für solch kleine Händel besser abzusichern. Nehmen Sie hier an der aktuellen Diskussion teil: [HYPERLINK:https://github.com/bisq-network/bisq/discussions/5339].
payment.clearXchange.info=Zelle ist ein Geldtransferdienst, der am besten *durch* eine andere Bank funktioniert.\n\n1. Sehen Sie auf dieser Seite nach, ob (und wie) Ihre Bank mit Zelle zusammenarbeitet:\nhttps://www.zellepay.com/get-started\n\n2. Achten Sie besonders auf Ihre Überweisungslimits - die Sendelimits variieren je nach Bank, und die Banken geben oft separate Tages-, Wochen- und Monatslimits an.\n\n3. Wenn Ihre Bank nicht mit Zelle zusammenarbeitet, können Sie die Zahlungsmethode trotzdem über die Zelle Mobile App benutzen, aber Ihre Überweisungslimits werden viel niedriger sein.\n\n4. Der auf Ihrem Bisq-Konto angegebene Name MUSS mit dem Namen auf Ihrem Zelle/Bankkonto übereinstimmen. \n\nWenn Sie eine Zelle Transaktion nicht wie in Ihrem Handelsvertrag angegeben durchführen können, verlieren Sie möglicherweise einen Teil (oder die gesamte) Sicherheitskaution.\n\nWegen des etwas höheren Chargeback-Risikos von Zelle wird Verkäufern empfohlen, nicht unterzeichnete Käufer per E-Mail oder SMS zu kontaktieren, um zu überprüfen, ob der Käufer wirklich das in Bisq angegebene Zelle-Konto besitzt.
payment.fasterPayments.newRequirements.info=Einige Banken haben damit begonnen, den vollständigen Namen des Empfängers für Faster Payments Überweisungen zu überprüfen. Ihr aktuelles Faster Payments-Konto gibt keinen vollständigen Namen an.\n\nBitte erwägen Sie, Ihr Faster Payments-Konto in Bisq neu einzurichten, um zukünftigen {0} Käufern einen vollständigen Namen zu geben.\n\nWenn Sie das Konto neu erstellen, stellen Sie sicher, dass Sie die genaue Bankleitzahl, Kontonummer und die "Salt"-Werte für die Altersverifikation von Ihrem alten Konto auf Ihr neues Konto kopieren. Dadurch wird sichergestellt, dass das Alter und der Unterschriftsstatus Ihres bestehenden Kontos erhalten bleiben.
payment.moneyGram.info=Bei der Nutzung von MoneyGram, muss der BTC Käufer die MoneyGram Zulassungsnummer und ein Foto der Quittung per E-Mail an den BTC-Verkäufer senden. Die Quittung muss den vollständigen Namen, das Land, das Bundesland des Verkäufers und den Betrag deutlich zeigen. Der Käufer bekommt die E-Mail-Adresse des Verkäufers im Handelsprozess angezeigt.
Expand Down Expand Up @@ -3190,7 +3188,7 @@ payment.shared.optionalExtra=Freiwillige zusätzliche Informationen
payment.shared.extraInfo=Zusätzliche Informationen
payment.shared.extraInfo.prompt=Define any special terms, conditions, or details you would like to be displayed with your offers for this payment account (users will see this info before accepting offers). This field can NOT be used to provide a way for a peer to contact you outside of Bisq.
payment.cashByMail.extraInfo.prompt=Please state on your offers: \n\nCountry you are located (eg France); \nCountries / regions you would accept trades from (eg France, EU, or any European country); \nAny special terms/conditions; \nAny other details. \nThis field can NOT be used to provide a way for a peer to contact you outside of Bisq.
payment.cashByMail.tradingRestrictions=Überprüfen Sie die Bedingungen und Konditionen des Erstellers.\nWenn Sie die Anforderungen nicht erfüllen, nehmen Sie diesen Handel nicht an.
payment.cashByMail.tradingRestrictions=Überprüfen Sie die Bedingungen und Konditionen des Erstellers.\nWenn Sie die Anforderungen nicht erfüllen, nehmen Sie diesen Handel nicht an.
payment.f2f.info=Persönliche Händel "von Angesicht zu Angesicht" ('Face to Face') haben andere Regeln und andere Risiken als Online-Händel.\n\nDie Hauptunterschiede sind:\n● Die Handelspartner müssen Informationen über den Ort und die Uhrzeit des Treffens unter Verwendung ihrer angegebenen Kontaktdaten austauschen.\n● Die Handelspartner müssen ihre Laptops mitbringen und die Bestätigung "Zahlung gesendet" und "Zahlung erhalten" am Treffpunkt vornehmen.\n● Wenn der Ersteller eines Angebots spezielle "Geschäftsbedingungen" hat, muss er diese in seinem Konto unter dem Textfeld "Zusatzinformationen" angeben.\n● Mit der Annahme eines Angebots erklärt sich der Käufer mit den vom Ersteller angegebenen "Geschäftsbedingungen" einverstanden.\n● Im Konfliktfall kann der Vermittler oder die Schiedsperson nicht viel tun, da es in der Regel schwierig ist herauszubekommen, was bei dem Treffen wirklich passiert ist. In solchen Fällen bleiben die BTC auf unbestimmte Zeit gesperrt, oder bis die Handelspartner zu einer Einigung kommen.\n\nUm sicherzustellen, dass Sie die Besonderheiten der persönlichen "von Angesicht zu Angesicht" ('Face to Face') Händel vollständig verstehen, lesen Sie bitte die Anweisungen und Empfehlungen unter: [HYPERLINK:https://bisq.wiki/Face-to-face_(payment_method)]
payment.f2f.info.openURL=Webseite öffnen
payment.f2f.offerbook.tooltip.countryAndCity=Land und Stadt: {0} / {1}
Expand Down Expand Up @@ -3533,7 +3531,7 @@ validation.numberFormatException=Zahlenformat Ausnahme {0}
validation.mustNotBeNegative=Eingabe darf nicht negativ sein
validation.phone.missingCountryCode=Es wird eine zweistellige Ländervorwahl benötigt, um die Telefonnummer zu bestätigen
validation.phone.invalidCharacters=Telefonnummer {0} enthält ungültige Zeichen
validation.phone.insufficientDigits=Das ist keine gültige Telefonnummer. Sie habe nicht genügend Stellen angegeben.
validation.phone.insufficientDigits=Das ist keine gültige Telefonnummer. Sie habe nicht genügend Stellen angegeben.
validation.phone.tooManyDigits=Es sind zu viele Ziffern in {0} um eine gültige Telefonnummer zu sein.
validation.phone.incorrectLength=The field must contain {0} numbers
validation.phone.invalidDialingCode=Die Ländervorwahl in der Nummer {0} ist für das Land {1} ungültig. Die richtige Vorwahl ist {2}.
Expand Down
Loading
Loading