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.