Swap / Intercambiar tokens desde Solidity
Ahmed Castro
Posted on August 10, 2021
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.
Posted on August 10, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.