Cuando lanzamos un contrato en DeFi no queremos que sea una isla. Al contrario, queremos que sea parte de un ecosistema. Nosotros mismos podemos lograr esto gracias a la decentralización del blockchain. En este tutorial vamos a lanzar un contrato que se comunica con un DEX. En este caso usaremos Quickswap de Polygon Mainnet Layer 2 de Ethereum pero este código aplica para Ethereum Mainnet, Binance Smart Chain o cualquier otra red que desees siempre y cuando actualices los Smart Contracts que detallo a continuación.
1. Lanzamos el contrato
Nota que debes seleccionar el address del contrato Router dependiendo de dónde deseas lanzar el contrato:
- Polygon Quickswap: 
0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff - Ethereum Uniswap V2: 
0x10ED43C718714eb63d5aA57B78B54704E256024E - BSC Mainnet Pancake: 
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D - BSC Testnet Pancake: 
0xD99D1c33F9fC3444f8101754aBC46c52416550D1 
En este ejemplo usamos los addresses 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063 y 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 para DAI y USDC respectivamente. Modifícalos con los tokens que desees.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;
import '@openzeppelin/contracts/token/ERC20/ERC20.sol';
contract Router {
  function swapExactTokensForTokens(
    uint amountIn,
    uint amountOutMin,
    address[] calldata path,
    address to,
    uint deadline
  ) external returns (uint[] memory amounts)  {}
}
contract Swapper
{
  Router router = Router(0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff);
  ERC20 DAI_token  = ERC20(0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063);
  ERC20 USDC_token = ERC20(0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174);
  function swapDAIToUSDC(uint amount) public
  {
    DAI_token.transferFrom(
      msg.sender,
      address(this),
      amount
    );
    address[] memory path = new address[](2);
    path[0] = address(DAI_token);
    path[1] = address(USDC_token);
    DAI_token.approve(address(router), amount);
    router.swapExactTokensForTokens(
      amount,
      0,
      path,
      msg.sender,
      block.timestamp
    );
  }
}
2. Aprobar y probar
Una vez lanzado el contrato nos dirigimos al explorador del primer token, en este caso DAI. Y utilizamos la función approve pasando el address del contrato que recién lanzamos y un número grande de tokens.
Ahora estamos listos para usar nuestro contrato y swapear fondos.
Gracias por ver este tutorial!
Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.
              
    
Top comments (0)