unchecked en rutas críticas de contabilidadSafeERC20.safeTransferFrom() de OpenZeppelin en todas las llamadas.
ANÁLISIS DE 24 PATRONES WEIRD-TOKEN EN TOKENS INTEGRADOS:
| Token | Dirección | Patrones Weird | SafeERC20 | Balance Check | Riesgo |
|---|---|---|---|---|---|
| USDT | 0xdac17f...ec7 | No return Upgradable | NO | NO | CRITICAL |
| USDC | 0xa0b869...b48 | Upgradable Blocklist | NO | NO | HIGH |
| DAI | 0x6b1754...0f | Flash mint | NO | NO | MEDIUM |
| WBTC | 0x2260fa...99 | 8 decimals | NO | SÍ | MEDIUM |
| PAXG | 0x45804...78 | Fee-on-xfer | NO | NO | CRITICAL |
IERC20(token).transfer/transferFrom por SafeERC20.safeTransfer/safeTransferFrom en todo YieldVault.sol. Esto resuelve USDT y todos los tokens sin return value.
balanceAfter - balanceBefore, no como amount. Aplica a PAXG y cualquier token con comisión futura.
TimelockController de OZ con mínimo 48h delay. Anunciar cambios con al menos 24h de antelación pública (governance forum).
require(account != address(yieldVault), "Cannot blacklist vault") en addToBlacklist(), o migrar blacklist a multisig 2/3 con timelock.
@param, @return y @dev. Requerido para auditoría externa y para Slither/echidna property generation.