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)