A Fare pays only for a loss proven from history before the Fare existed, burned once, by the wallet that bought; each known farming strategy hits one of those rules.
The attacks#
| Attack | Why it fails |
|---|---|
| Buy the dead token after the Fare is announced | The snapshot must be in the past when the Fare opens (SnapshotNotPast). Buys after the snapshot are not in the Roll. A dead token bought cheap is also worth about what was paid, so there is no loss. |
| Receive a bag by transfer | Tokens received by transfer cost zero in the Roll. A gifted bag has no proven loss. Moving a bag between your own wallets moves the tokens but not the loss: the sender's cost falls in proportion, the receiver's stays at zero. |
| Sell, then claim | Selling is an outflow: the cost basis falls in proportion to what was sold, and the HYPE received is no longer counted as lost. To cross you must also burn the tokens, so you cannot sell them and burn them. With the Stay clause, selling the payout ends the stream. |
| Claim twice | One crossing per wallet per Fare (AlreadyCrossed). Across Fares on the same token, lossUsedAt lets a loss count again only in a Fare whose snapshot is later than the crossing, and that later Roll already reflects the burn (LossAlreadyUsed). |
| Sniper with a cheap, large bag | Payment is by proven loss, not balance. A sniper who paid 0.3 HYPE for a bag worth 0.42 HYPE has a loss of zero and gets nothing, however large the bag. |
| Wash-trade a fake loss between two wallets | Partly mitigated, not prevented. See below. |
Wash-trading: the honest part#
On a bonding curve, one person controlling two wallets can create a loss on paper. Wallet A pumps the price, wallet B buys high, then A sells into B's demand. B now holds a bag bought at a high price and worth little. B's loss is real on-chain, but the HYPE went to A, so the person lost almost nothing overall.
Three rules reduce this. None eliminates it.
- Snapshot in the past. The fake loss must be built before the Fare's snapshot, so before anyone knows which token a payer will target and when. Farming every dead token in advance costs fees and slippage on every one.
- Per-wallet cap.
maxLossPerWalletlimits what one wallet can claim. Splitting a fake loss across many wallets multiplies the setup cost. - Minimum purchase age. With
minAgein therollURI, buys made shortly before the snapshot cost zero. A wash-trade must be set up well in advance, while the token still trades.
A payer can also look at the Roll before opening: the app and the CLI list every wallet, what it paid and what it holds. A cluster of wallets that bought in the same blocks from the same source is visible.
A patient attacker who wash-trades a token early, waits, and spreads the loss under the cap can still collect from a Fare on that token. The rules make this cost time and HYPE; they do not make it impossible.