La liquidez es el punto de entrada de nuestro token ERC-20 o ERC-777 con el resto del ecosistema DeFi. En este video agregamos liquidez desde un smart contract que funciona de la misma manera que la interfaz gráfica pero nos abre la puerta a una infinidad de posibilidades de automatización, decentralización y transparencia.
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.7;
import '@openzeppelin/contracts/token/ERC20/ERC20.sol';
contract Router {
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns(uint amountA, uint amountB, uint liquidity) {}
}
contract Liquidifier
{
Router router = Router(0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff);
ERC20 DAI_token = ERC20(0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063);
ERC20 USDC_token = ERC20(0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174);
function addLiquidityDAIAndUSDC(uint amount_DAI, uint amount_USDC) public
{
IERC20(DAI_token).transferFrom(msg.sender, address(this), amount_DAI);
IERC20(USDC_token).transferFrom(msg.sender, address(this), amount_USDC);
IERC20(DAI_token).approve(address(router), amount_DAI);
IERC20(USDC_token).approve(address(router), amount_USDC);
router.addLiquidity(
address(DAI_token),
address(USDC_token),
amount_DAI,
amount_USDC,
0,
0,
msg.sender,
block.timestamp
);
}
}
2. Aprobar y probar
Una vez lanzado el contrato nos dirigimos al explorador de ambos tokens, en este DAI y USDC. Y utilizamos la función approve
pasando el address del contrato que recién lanzamos y un número grande de tokens.
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 (1)
Hola Ahmed, muy bueno tu contenido. Queria preguntarte si sabes algo de los arbitrajes con flash loan, y de ser asi estaria bueno que hagas alguna publicacion.