KipuBankV3 es una evolución del contrato KipuBankV2, diseñado para convertirlo en una aplicación DeFi más realista y composable.
Esta nueva versión introduce soporte para depósitos en múltiples tokens ERC20, los cuales son automáticamente intercambiados a USDC mediante el router de Uniswap V2, respetando al mismo tiempo el límite máximo de fondos (bankCap) del banco.
Los usuarios ya no están limitados a depositar solo ETH o USDC.
Cualquier token con par directo en Uniswap V2 contra USDC puede ser depositado, y el contrato realizará el swap automáticamente a USDC.
El contrato usa el enrutador de Uniswap V2 para ejecutar los intercambios dentro del propio smart contract, sin necesidad de intervención externa.
Esto permite:
- Recibir tokens diversos (por ejemplo, DAI, LINK, WBTC).
- Convertirlos automáticamente en USDC.
- Mantener los balances internos en una sola unidad estable (USDC).
Se mantienen todas las funcionalidades del banco:
- Control del
owner - Depósitos y retiros
- Control de límite máximo (
bankCap)
- Uso de
ReentrancyGuardpara prevenir ataques de reentrada. - Validación de valores de entrada.
- Restricciones de acceso mediante
onlyOwner. - Aprobaciones seguras y limpieza de allowance tras swaps.
Al desplegar el contrato en Remix, se debe completar el constructor con los siguientes parámetros:
constructor(
address _usdc,
address _uniswapV2Router,
uint256 _bankCap
)
| Parámetro | Descripción | Ejemplo (Red Sepolia) |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- |
| `_usdc` | Dirección del contrato ERC20 del token USDC (o equivalente de prueba). Es el token estable en el cual se mantienen los balances del banco. | `0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238` |
| `_uniswapV2Router` | Dirección del router de Uniswap V2 (usado para swaps). | `0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3` (Sepolia testnet) |
| `_bankCap` | Monto máximo total en USDC que puede tener el banco. | `1000000000000` (equivale a 1,000,000 USDC si el token tiene 6 decimales) |
Ejemplo: Para deployar este contrato utilice las siguientes direcciones:
router:0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
token usdc de prueba:0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557