# 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) · written by 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)

Written by 0xSimao (https://0xsimao.com/) · Sherlock's 2025 Watson of the Year · 21 first places in 57 audit contests.

---

Newer: [View::queryAssetBalances does not account for JIT penalties](https://0xsimao.com/the-contest-academy/ammplify-jit-penalty-balances) · 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/ammplify-parent-node-accounting)
