Quemar tokens LP (v2)

Quema tokens de liquidez en STON.fi v2: retira liquidez con mecánica de vault mejorada

Quema todos los tokens de liquidez para liberar los activos subyacentes de un pool.

El enfoque listo para producción es basado en API. Consulta la información del pool a través de @ston-fi/api, deja que la API devuelva los metadatos del router y luego construye los contratos on-chain con dexFactory. Esto mantiene tu integración compatible con futuras actualizaciones del router y evita codificar las direcciones de contrato de forma fija.

Flujo de trabajo en mainnet

  1. Localiza el pool objetivo a través de la API de STON.fi (por ejemplo con getPoolsByAssetPair o getPool).

  2. Obtén los metadatos del router con getRouter(pool.routerAddress).

  3. Construye dinámicamente los contratos del pool y de la wallet LP con dexFactory y TonClient.

  4. Lee el saldo LP y genera los parámetros de la transacción de quema.

import { Client, dexFactory } from "@ston-fi/sdk";
import { StonApiClient } from "@ston-fi/api";

const tonClient = new Client({
  endpoint: "https://toncenter.com/api/v2/jsonRPC",
  apiKey: process.env.TON_API_KEY, // opcional, pero recomendado para límites de tasa más altos
});

const apiClient = new StonApiClient();

// Descubre el pool del que quieres salir (reemplaza las direcciones con tus activos)
const [poolInfo] = await apiClient.getPoolsByAssetPair({
  asset0Address: "<token A address or 'ton'>",
  asset1Address: "<token B address>",
});

if (!poolInfo) {
  throw new Error("No se encontró el pool de liquidez para el par de activos proporcionado");
}

// Carga los metadatos del router e inicializa los contratos
const routerMetadata = await apiClient.getRouter(poolInfo.routerAddress);
const dexContracts = dexFactory(routerMetadata);

const pool = tonClient.open(
  dexContracts.Pool.create(poolInfo.address),
);

// Obtén la wallet LP propiedad del usuario y lee el saldo
const lpWallet = tonClient.open(
  await pool.getJettonWallet({ ownerAddress: "<tu dirección de wallet>" }),
);

const { balance } = await lpWallet.getWalletData();

const burnTxParams = await pool.getBurnTxParams({
  amount: balance,
  userWalletAddress: "<la dirección de tu billetera>",
  queryId: 12345,
});

Envía los parámetros de transacción resultantes usando tu integración de wallet preferida (consulta el guía para enviar transacciones).

Consejo: Si uno de los lados del pool es TON, la API ya expone el routerMetadata.ptonMasterAddress. No necesitas codificar de forma fija el contrato proxy de TON—dexFactory selecciona la implementación correcta por ti.

Quema en testnet (configuración manual)

Solo recurre a testnet cuando sea absolutamente necesario. api.ston.fi sirve exclusivamente para mainnet, así que debes codificar las direcciones de contrato de forma fija, obtener/mintar los jettons de testnet (por ejemplo, TesREED/TestBlue) y proporcionar liquidez antes de poder quemar tokens LP.

Este enfoque manual es estrictamente para pruebas. Vuelve al flujo basado en API para cualquier integración orientada a mainnet.

Última actualización