Trade-Rate Limiting for New Buyers #4164
Replies: 4 comments
-
Open Issue: Using Account Age for Trade Rate LimitsThere is an unresolved issue with using account age as a factor in trade rate limits. 1. Current Account Hash DesignThe account hash is derived from three components:
The public key and salt are newly created for every account. This means that even if a user reuses the same payment data, each account will produce:
2. Impact on Trade LimitsTrade Amount LimitsIf a user creates multiple accounts with identical payment data, the accounts will have roughly the same creation time and therefore similar age. As a result, trade amount limits remain consistent across those accounts. This does not introduce a significant problem. Trade Rate Limits (Problem)The issue arises when account age is used to increase trade rate limits. A user could:
This undermines the intended protection mechanism. 3. Possible SolutionsOption 1: Use the Account Fingerprint DirectlyInstead of using the combined hash, rate limits could be tied directly to the account fingerprint. Advantage
Disadvantage
In practice:
The additional privacy risk mainly concerns entities that already possess payment data (e.g., a bank) and actively scan the P2P network for correlations. While this may not be highly realistic, minimizing linkability remains preferable. Option 2: Let the Oracle Detect Duplicate FingerprintsThe oracle node could:
Additionally, the UI could prevent creating multiple accounts with the same fingerprint. If duplicate account creation is rejected at the UI level, the oracle can safely reject repeated timestamp requests. Impact
Option 3: Oracle-Derived Secondary Fingerprint (Recommended Variant)Introduce an oracle-side secret, shared among oracle nodes. The oracle would:
Advantages
Tradeoff
This approach avoids blocking legitimate cases, such as:
Option 4: Remove Account Age from Rate LimitsAnother alternative is to stop using account age as a factor for increasing trade rate limits altogether. This eliminates the bypass vector but also removes the intended benefit of rewarding long-standing accounts with higher trade frequency. SummaryThe core problem is that account age is currently tied to an account hash that can be regenerated arbitrarily. This allows users to bypass rate limits by creating multiple accounts with identical payment data. The most balanced solution appears to be introducing an oracle-derived secondary fingerprint based on a shared secret. This preserves privacy better than exposing the raw fingerprint while preventing rate-limit abuse. |
Beta Was this translation helpful? Give feedback.
-
|
After more thought about the above I tried another approach. Still open issues but here the preliminary state: TradeRateAttestation Model ProposalOverviewIf a Bitcoin buyer has not yet reached the unlimited trade rate, they must provide proof that they have not exceeded their trade limit. This proof is obtained from oracle nodes via a The seller is responsible for validating the request and sending the request to the oracle nodes. Protocol Flow1. Buyer → Seller: TradeRateAttestationRequestWhen initiating a trade, the buyer sends a TradeRateAttestationRequest
TradeRateAttestationPayload
2. Seller-Side ValidationThe seller performs initial validation before contacting the oracle:
If any check fails, the trade is rejected. 3. Seller → Oracle: Verification RequestThe seller send the The seller performs this step (not the buyer) to prevent:
The seller has no incentive to manipulate this step. 4. Oracle ValidationEach oracle independently verifies:
Because oracles may have slightly different views of network data, tolerance windows are applied to avoid unnecessary rejections. 5. Rate Limit CheckIf validation succeeds, the oracle evaluates the trade rate limit based on:
The oracle:fingerprintHash
Example:
If valid, the oracle stores the 6. Oracle → SellerThe oracle responds with:
7. Oracle Availability HandlingThe seller queries all available oracle nodes.
Impact on Trade ProtocolOracle requests may be delayed due to Tor routing. To avoid delaying the trade protocol:
Risk AnalysisPrivacy ImplicationsThe oracle learns:
Data is stored only as long as required (e.g., 24 hours). Security RisksMalicious OracleA malicious oracle could:
Invalid rejections are easily detectable by users reporting the problem and may result in bond loss. DDoS AttacksA scammer may attempt to DDoS oracle nodes to bypass rate limit checks. However:
An alternative mitigation would be to pause trades until oracle availability is restored, though this creates a trade availability risk. Availability Risks
This preserves liveness at the cost of temporarily weakened protection. Inconsistency RisksClock DriftOracles rely on time-based checks:
To mitigate clock drift:
As long as oracle clocks do not drift more than ±2 hours, inconsistencies should not occur. Oracle State DivergenceIf one oracle was offline and missed entries:
This ensures safety at the cost of possible conservative rejection. Attack Scenarios1. Multiple Accounts Using Same Payment DataA buyer may attempt to bypass limits by creating multiple profiles and multiple accounts using the same payment account data. Mitigation:
Legitimate use of multiple profiles is supported (e.g. if user switches to a new computer with a new installation, or after data loss due a hard disc crash), but the rate limit still applies globally per fingerprintHash. 2. DDoS to Bypass Rate LimitAn attacker may attempt to disable oracle nodes. Impact:
This primarily affects availability rather than core trade security. 3. Malicious Peer Blocking a BuyerA malicious user may attempt to block a legitimate buyer by:
A malicious user who knows another user’s fingerprint could attempt to consume rate-limit slots using that fingerprint. Using the fingerprintHash as the rate-limit key enables:
This problem remains unresolved in the current design. ConclusionThe Attestation model introduces an oracle-based rate limiting mechanism that:
However, the fingerprintHash-based rate limiting approach introduces a potential griefing vector that is not yet fully mitigated and requires further design refinement. |
Beta Was this translation helpful? Give feedback.
-
Addendum: Resolution Strategy for "Malicious Peer Blocking a Buyer" and Fingerprint ResetSummary of the Core IssueUsing
This means:
Security InvariantA In other words:
This is required to prevent repeated reset/race griefing attacks. Practical ModelNormal Case (No Reset Needed)For the multiple-account / same-install use case, the UI can reuse the same local salt/key material so the same payment account data results in the same hash / identity continuity. This avoids duplicate-claim issues in the common case. Exceptional Case (HD Crash / Migration Without Backup)If the user lost local data and cannot continue using the existing fingerprint entry, recovery requires a moderator-based reset flow. Why a moderator-based solution is requiredBecause
Therefore, a human-verified ownership process is required for the no-backup recovery case. Moderator-Based Reset Flow (Proposed)Roles
Evidence / Verification (Out-of-Band)The user provides proof of ownership of the payment account (e.g. guided screen-sharing / video proof under defined moderation rules). The moderator verifies the evidence and approves recovery. Oracle AuthorizationAfter approval, the Security Manager sends a special signed reset authorization message to oracle nodes. Oracle nodes must only apply a reset / ownership update if:
Oracle Reset SemanticsTo avoid introducing a bypass or new attack vector, a reset should be modeled as an ownership update, not deletion. Recommended behavior
Why a Secret- or Password-Based Recovery Approach Is Not AppliedAs an alternative to the moderator + Security Manager recovery path, a secret- or password-based recovery mechanism was considered. Reasons
ResultFor the no-backup recovery case, a moderator-mediated recovery flow with Security Manager authorization is preferred as the primary exception path. Resulting Design DirectionThis proposal should treat the no-backup recovery case as a moderator-mediated recovery path:
This closes the repeated reset/race lockout attack while preserving a usable recovery path. |
Beta Was this translation helpful? Give feedback.
-
Technical specification1) Account timestamp authorization (user → oracle)AuthorizeAccountTimestampRequestPayload
AuthorizeAccountTimestampRequest
Oracle stateOracle maintains:
Oracle adds the Oracle publishes
2) Trade protocol (buyer → seller)At trade protocol start, the buyer creates TradeRateAttestationData
TradeRateAttestationPayload
3) Seller validationSeller verifies:
Seller creates the trade rate limit using:
If the buyer has already reached the unlimited trade rate tier, no oracle request is required and the protocol continues without trade-rate attestation. 4) Seller → oracle nodesSeller sends
TradeRateAttestationRequest
5) Oracle validationOracle verifies:
Oracle creates the trade rate limit using:
6) Oracle rate-limit state and decisionOracle maintains
The map is pruned hourly by removing entries older than 24 hours. TradeRateAttestation
Replay handling:
Decision:
TradeRateAttestationResponse
7) Seller handling of oracle responsesSeller verifies:
Seller waits until:
Decision:
Fingerprint ownership update requestIn the rare case that the user has lost access to their account data and sets up a new account with a new salt and key pair, but with the same payment account data, the user can request a fingerprint ownership update via a moderator. The user creates an FingerprintOwnershipUpdateRequest
Oracle validation and updateOracle verifies:
Oracle then:
Rate-limit implicationsNo explicit action is required for
Repeated ownership updatesOracle can detect prior updates via the backup map and may reject repeated update requests. This is an exceptional case and legitimate users are not expected to require it more than once. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Trade-Rate Limiting for New Buyers
Overview
This proposal introduces a rate-limiting mechanism for new or low-reputation buyers to mitigate fraud involving stolen bank accounts. The system allows sellers to anonymously signal that a buyer has recently completed a trade, enabling other sellers to enforce time-based limits on how many trades the buyer may execute.
The mechanism is privacy-preserving, leverages P2P messages validated by an oracle, and prevents abuse by requiring seller signatures and enforcing oracle-level penalties for misuse.
Only buyers below a certain trust threshold are affected by that system. E.g. after account age is > 30 days, this restriction is lifted; buyers with reputation > 20 000 don't require that.
Goals
Core Mechanism
1. Blinded Account Hash
For each trade, the seller receives the buyer’s payment account hash + a secret.
This composite hash functions as an anonymous buyer-identifier for time-limited rate-control.
2. Seller Initialize-Trade Announcement
At initializing a trade, the seller submits the following to the oracle:
blindedAccountHashdatesellersPubKeysellerSignaturesellerReputationScoreThe seller does not include any personal payment details.
3. Oracle Validation Process
To prevent abuse, the oracle:
Oracle maps and blurs seller reputation to a sellerTrustScore to a value between 0-1. This is to avoid linkage to seller identity as well as to add weight to how much the data can be trusted.
After validation, the oracle publishes the announcement to the P2P network (authorized data).
This contains:
blindedAccountHashdatesellerTrustScoreThis data has a short TTL (e.g. 2-5 days).
4. P2P Data Available to Sellers
When a seller receives a new incoming trade request, they can query:
5. Rule Set for Buyer Trade Limits
Each buyer receives a dynamic trade limit based on their safety characteristics:
Baseline for New Buyers
Buyers Boosts Options
This adds flexibility for honest buyers who are willing to show they have skin in the game.
Fraud Mitigation Rationale
1. Stolen Bank Account Scammers Typically Need Speed
They must:
Rate-limiting blocks high-speed exploitation, forcing fraudsters into a slow, inefficient process where their risk of detection skyrockets.
2. Incentives Are Misaligned for Fraudsters
Since new buyers start with very low limits, a scammer cannot:
3. Deposits Make Abuse Expensive
To lift limits, the scammer must post larger deposits, which can be slashed if trade ends up in arbitration.
This sharply raises the cost of attacking.
4. Oracle Prevents Fake Seller Announcements
Without validation, malicious sellers could block legitimate buyers.
With the oracle verifying:
Abuse becomes detectable and punishable. Sellers without reputation (nothing to lose) will have less weight in the system and the oracle nodes can apply more strict rate limits for those.
5. Privacy-Friendly
Even though trade frequency is tracked, the system reveals no bank details and no identity—only hashed values and time windows. Only sellers trading with the buyer would see that there have been other trades in the given time frame. But data have short TTL and will vanish from the network.
Data Lifecycle
This avoids long-term storage and minimizes data footprint.
Pros & Cons
Advantages
Limitations
Conclusion
This proposal introduces a practical, privacy-preserving mechanism to limit the damage from stolen bank accounts by:
It is incremental, compatible with Bisq’s decentralized architecture, and fits naturally into the account age, security deposit and reputation models.
Note: This is an AI generated summary
Beta Was this translation helpful? Give feedback.
All reactions