# The protocol doesnt support weird tokens like Tether Gold (that return false on every operation)

Bug Deep Dive #22 · 18 December 2025

Bug Deep Dives · [The Contest Academy](https://0xsimao.com/the-contest-academy) · 0xSimao

---

| Title | The protocol doesnt support weird tokens like Tether Gold (that return false on every operation) |
| Reward | $886, Unique |
| Contest | Ammplify - 2 Sep 2025 on Sherlock |
| Author | anonymousjoe |
| Context | Weird Token |

The protocol uses `TransferHelper.safeTransferFrom` for its token transfers. That does not work for a token which returns false from every operation.

Tokens like Tether Gold make the transfer revert every time, so they are not supported by the protocol.

```solidity
if (change > 0) {
    // Pull tokens from the original caller and send to MAKER_FACET
    TransferHelper.safeTransferFrom(token, _currentTokenRequester, msg.sender, uint256(change));
} else if (change < 0) {
    // Send tokens from our balance to MAKER_FACET (for fee collection, etc.)
    TransferHelper.safeTransfer(token, msg.sender, uint256(-change));
}

// After primary transfer, sweep any dust the contract may still hold for this token
uint256 residual = IERC20(token).balanceOf(address(this));
if (residual > 0) {
    TransferHelper.safeTransfer(token, msg.sender, residual);
}
```

**Alpha:** the protocol intended to tolerate odd return values, but Tether Gold is special: it returns false on success.

**Conclusion**

This finding would earn you **\$886**. Read the README and the sponsor's messages so you know exactly which behaviours are in scope, and keep a list of weird tokens to hand — [this one](https://github.com/d-xo/weird-erc20), for instance.

[**Full Report**](https://audits.sherlock.xyz/contests/1054/report)\
[**Codebase**](https://github.com/itos-finance/AmmplifyPublic/tree/beb942cfbd54990fc9434fbfa99a1fc251d73689)

---

Newer: [View::queryAssetBalances does not account for JIT penalties](https://0xsimao.com/the-contest-academy/bug-deep-dive-23) · Older: [Liquidity borrowed from or repaid to parent nodes is not always minted or burned in the uniswap pool](https://0xsimao.com/the-contest-academy/bug-deep-dive-21)
