メインコンテンツまでスキップ

BDEX V2

BDEX V2 は、BOT Chain にデプロイされた一定積 AMM(x × y = k)であり、実績のある Uniswap V2 アーキテクチャに基づいています。トークン作成者や開発者に対して、シンプルで信頼性の高い DEX インフラを提供します。

取引ペアの作成

BDEX V2 の取引ペアは V2 Factory コントラクトを通じて作成されます。ペアは 2 つのトークンアドレスによって一意に識別され、各トークンペアは 1 つの V2 ペアコントラクトしか持てません。

Factory メソッド:

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

基本ルール:

  • tokenAtokenB は異なるトークンである必要があります。

  • どちらのトークンアドレスもゼロアドレスにはできません。

  • ペアがすでに存在する場合、createPair はリバートします。

  • 作成後、開発者は getPair(tokenA, tokenB) を通じてペアアドレスを読み取るか、PairCreated イベントをリッスンできます。

処理フローの例:

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

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

ほとんどのフロントエンド統合では、開発者が事前に手動でペアを作成する必要はありません。router を通じて初期流動性を追加する際に、必要に応じてペアを作成できます。

流動性の追加 / 削除

BDEX V2 の流動性は V2 Router02 コントラクトを通じて管理されます。流動性プロバイダーは両方のトークンをペアに預け入れ、V2 LP トークンを受け取ります。LP トークンはペアコントラクトの ERC-20 トークンであり、プロバイダーのプール持分を表します。

主なメソッド:

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

統合に関する注意事項:

  • 流動性を追加する前に、ユーザーは両方の ERC-20 トークンの利用について V2 Router02 を承認(approve)する必要があります。

  • 既存のプールでは、流動性は現在のリザーブ比率に従って追加する必要があります。

  • 新規プールでは、最初の流動性プロバイダーが預入比率を選択することで初期価格を定義します。

  • ユーザーをスリッページから保護するため、amountAMinamountBMin を設定する必要があります。

  • 流動性を削除すると LP トークンがバーンされ、ユーザーのプール持分に応じて元のトークンペアが返還されます。

ネイティブ BOT の流動性:

ネイティブ BOT を含むプールでは、addLiquidityETH / removeLiquidityETH などの ETH スタイルの router メソッドを使用してください。内部では、ネイティブ BOT は WBOT としてラップされます。

トークンスワップガイド

BDEX V2 のスワップは Router02 を通じて直接実行できますが、フロントエンドアプリケーションでは公式の Routing API を使用して最適なルートと実行可能な calldata を取得することを推奨します。

推奨される統合パス:

  1. Routing API GET /quote を呼び出します。

  2. レスポンスから methodParameters.tomethodParameters.calldatamethodParameters.value を読み取ります。

  3. これらのフィールドを eth_sendTransaction で送信します。

Routing API の例:

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

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

スワップ手数料:

  • BDEX V2 は固定の 0.30% スワップ手数料を使用します。

  • 手数料は入力トークンの数量から差し引かれます。

  • プールが出力トークンに対して別途課金することはありません。

  • 手数料はプール内に留まり、プールリザーブの増加を通じて LP に分配されます。

トランスファー課税トークン(Fee-on-transfer):

トランスファー課税トークンは V2 ルートのみを使用すべきです。これらの課税トークンに対しては、V3 の流動性およびスワップフローがリバートする可能性があります。Routing API はサポートされる fee-on-transfer のケースを自動的に検出し、必要に応じてルーティングを制限します。