Both transfer paths assign the result of the external call to a bool and assert it, which requires the token to return a boolean.
USDT and several other major tokens do not return a value from transfer/transferFrom. With the strict IERC20 ABI, Vyper's ABI decoder reverts when the return data is empty, so any deposit or redeem of such a token reverts.
Likelihood:
Low. Depends on a non-compliant token (USDT/BNB-era) being chosen as one of the two collaterals; the constructor allows it.
Impact:
Medium. Collateral that uses a no-return ERC20 cannot be deposited or withdrawn at all — funds already in the contract (if seeded) would be permanently locked, and the collateral type is unusable. It is a denial-of-service rather than a direct theft.
Register a USDT-like mock (no return value) and attempt a deposit.
Use a safe-transfer helper that tolerates missing return data (snekmate safe_transfer / safe_transfer_from).
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.