BOT Chain NewsNews

BDEX V2

BDEX V2

O BDEX V2 é um AMM de Produto Constante (x × y = k) implantado na BOT Chain, baseado na arquitetura testada em batalha do Uniswap V2. Ele fornece uma infraestrutura DEX simples e confiável para criadores de tokens e desenvolvedores.

Criação de Pares de Negociação

Os pares de negociação do BDEX V2 são criados através do contrato V2 Factory. Um par é identificado de forma única por dois endereços de token, e cada par de tokens pode ter apenas um contrato de par V2.

Método Factory:

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

Regras básicas:

  • tokenA e tokenB devem ser tokens diferentes.

  • Nenhum endereço de token pode ser o endereço nulo.

  • Se o par já existir, createPair será revertido.

  • Após a criação, os desenvolvedores podem ler o endereço do par através de getPair(tokenA, tokenB) ou monitorar o evento PairCreated.

Exemplo de fluxo:

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

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

Para a maioria das integrações de frontend, os desenvolvedores não precisam criar o par manualmente primeiro. Adicionar liquidez inicial através do roteador pode criar o par quando necessário.

Adicionar / Remover Liquidez

A liquidez do BDEX V2 é gerenciada através do contrato V2 Router02. Provedores de liquidez depositam ambos os tokens em um par e recebem tokens LP V2. O token LP é o token ERC-20 do contrato de par e representa a participação do provedor no pool.

Métodos comuns:

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 integração:

  • Os usuários devem aprovar o V2 Router02 para gastar ambos os tokens ERC-20 antes de adicionar liquidez.

  • Para um pool existente, a liquidez deve ser adicionada de acordo com a proporção de reserva atual.

  • Para um novo pool, o primeiro provedor de liquidez define o preço inicial escolhendo a proporção de depósito.

  • amountAMin e amountBMin devem ser definidos para proteger os usuários contra slippage.

  • Remover liquidez queima tokens LP e retorna o par de tokens subjacente de acordo com a participação do usuário no pool.

Liquidez nativa de BOT:

Para pools que envolvem BOT nativo, use os métodos de roteador no estilo ETH, como addLiquidityETH / removeLiquidityETH. Internamente, o BOT nativo é empacotado como WBOT.

Guia de Troca de Tokens

As trocas do BDEX V2 podem ser executadas diretamente através do Router02, mas é recomendado que os aplicativos de frontend usem a API de Roteamento oficial para obter a melhor rota e calldata executável.

Caminho de integração recomendado:

  1. Chame a API de Roteamento GET /quote.

  2. Leia methodParameters.to, methodParameters.calldata e methodParameters.value da resposta.

  3. Envie esses campos com eth_sendTransaction.

Exemplo de API de Roteamento:

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

Métodos diretos do 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);

Taxa de troca:

  • O BDEX V2 usa uma taxa de troca fixa de 0,30%.

  • A taxa é retirada do valor do token de entrada.

  • O token de saída não é cobrado separadamente pelo pool.

  • As taxas permanecem no pool e são distribuídas aos LPs através do crescimento da reserva do pool.

Tokens com taxa de transferência:

Tokens com taxa de transferência devem usar apenas rotas V2. A liquidez V3 e os fluxos de troca podem ser revertidos para tokens com imposto. A API de Roteamento detecta automaticamente os casos de taxa de transferência suportados e restringe o roteamento quando necessário.