Saltar al contenido principal

BDEX V2

BDEX V2 es un AMM de producto constante (x × y = k) desplegado en BOT Chain, basado en la probada arquitectura de Uniswap V2. Proporciona una infraestructura DEX simple y fiable para creadores de tokens y desarrolladores.

Creación de pares de trading

Los pares de trading de BDEX V2 se crean mediante el contrato V2 Factory. Un par se identifica de forma única por dos direcciones de token, y cada par de tokens solo puede tener un contrato de par V2.

Método del Factory:

function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);

Reglas básicas:

  • tokenA y tokenB deben ser tokens diferentes.

  • Ninguna de las direcciones de token puede ser la dirección cero.

  • Si el par ya existe, createPair revertirá.

  • Tras la creación, los desarrolladores pueden leer la dirección del par mediante getPair(tokenA, tokenB) o escuchar el evento PairCreated.

Flujo de ejemplo:

const pair = await factory.getPair(tokenA, tokenB)

if (pair === ZERO_ADDRESS) {
const tx = await factory.createPair(tokenA, tokenB)
await tx.wait()
}

Para la mayoría de las integraciones de frontend, los desarrolladores no necesitan crear primero el par manualmente. Añadir liquidez inicial a través del router puede crear el par cuando sea necesario.

Añadir / Retirar liquidez

La liquidez de BDEX V2 se gestiona mediante el contrato V2 Router02. Los proveedores de liquidez depositan ambos tokens en un par y reciben tokens LP de V2. El token LP es el token ERC-20 del contrato del par y representa la participación del proveedor en el pool.

Métodos comunes:

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);

function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);

Notas de integración:

  • Los usuarios deben aprobar al V2 Router02 para gastar ambos tokens ERC-20 antes de añadir liquidez.

  • Para un pool existente, la liquidez debe añadirse según la proporción de reservas actual.

  • Para un pool nuevo, el primer proveedor de liquidez define el precio inicial al elegir la proporción de depósito.

  • amountAMin y amountBMin deben establecerse para proteger a los usuarios del slippage.

  • Retirar liquidez quema los tokens LP y devuelve el par de tokens subyacente según la participación del usuario en el pool.

Liquidez en BOT nativo:

Para pools que involucran BOT nativo, usa los métodos del router de estilo ETH como addLiquidityETH / removeLiquidityETH. Internamente, el BOT nativo se envuelve como WBOT.

Guía de swap de tokens

Los swaps de BDEX V2 pueden ejecutarse directamente a través de Router02, pero se recomienda que las aplicaciones de frontend usen la Routing API oficial para obtener la mejor ruta y el calldata ejecutable.

Ruta de integración recomendada:

  1. Llama a la Routing API GET /quote.

  2. Lee methodParameters.to, methodParameters.calldata y methodParameters.value de la respuesta.

  3. Envía estos campos con eth_sendTransaction.

Ejemplo de Routing API:

GET /quote?chainId=677
&tokenInAddress=0x...
&tokenOutAddress=0x...
&amount=1000000000000000000
&type=exactIn
&protocols=v2
&recipient=0x...
&slippageTolerance=0.5

Métodos directos de Router02:

function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);

function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);

Comisión de swap:

  • BDEX V2 usa una comisión de swap fija del 0,30%.

  • La comisión se toma del importe del token de entrada.

  • El pool no cobra por separado el token de salida.

  • Las comisiones permanecen en el pool y se distribuyen a los LP mediante el crecimiento de las reservas del pool.

Tokens con comisión por transferencia (fee-on-transfer):

Los tokens con comisión por transferencia solo deben usar rutas V2. Los flujos de liquidez y swap de V3 pueden revertir con tokens con impuestos. La Routing API detecta automáticamente los casos de fee-on-transfer compatibles y restringe el enrutamiento cuando es necesario.