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:
-
tokenAetokenBdevem ser tokens diferentes. -
Nenhum endereço de token pode ser o endereço nulo.
-
Se o par já existir,
createPairserá revertido. -
Após a criação, os desenvolvedores podem ler o endereço do par através de
getPair(tokenA, tokenB)ou monitorar o eventoPairCreated.
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.
-
amountAMineamountBMindevem 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:
-
Chame a API de Roteamento
GET /quote. -
Leia
methodParameters.to,methodParameters.calldataemethodParameters.valueda resposta. -
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.