Skip to main content
Multi-chain DEX with concentrated liquidity protocol (KyberSwap Elastic) and a meta-aggregation router that routes across multiple DEXes. Features dynamic fees and anti-sniping protection.

What it offers

  • swap: Exact input single swap via Elastic Router (concentrated liquidity)

Notes

  • Elastic Router naming differs from Uniswap V3: minAmountOut (not amountOutMinimum), limitSqrtP (not sqrtPriceLimitX96)
  • The Elastic Router address is the same on its 6 chains, and the Meta Agg Router address on all 8
  • Meta Aggregation Router routes across multiple DEXes (not just KyberSwap pools)
  • The data field in the Meta Agg Router swap must be pre-encoded from KyberSwap’s API
  • Input token must be ERC20-approved to the Elastic Router for direct swaps
  • For Meta Agg swaps, approve to the approveTarget address returned by the API
  • On Arc (5042) only the Meta Aggregation Router is deployed (no Elastic), and it is a smaller build than Ethereum’s at the same address: 13724 vs 18652 bytes, a different owner, and no swapGeneric/whitelist functions. Its swap has the same selector, struct and outputs (Blockscout-verified MetaAggregationRouterV2), and Kyber’s Arc API builds calldata that decodes under this ABI. Native input uses the 0xEeee…EEeE sentinel with msg.value in Arc’s 18-decimal native USDC; Kyber’s own routes use the ERC-20 0x3600…0000 with 6-decimal amounts

Its names in a program

On Ethereum, Kyberswap is a namespace: its contracts need no import.

Deployments

ABI

KyberSwapElasticRouterABI

import KyberSwapElasticRouterABI from "./protocols/kyberswap/KyberSwapElasticRouterABI.json"; Speaks for: elasticRouter.
  • swapExactInputSingle((address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountIn, uint256 minAmountOut, uint160 limitSqrtP) params) payable returns (uint256 amountOut)

KyberSwapMetaAggregationRouterABI

import KyberSwapMetaAggregationRouterABI from "./protocols/kyberswap/KyberSwapMetaAggregationRouterABI.json"; Speaks for: metaAggregationRouterV2.
  • swap((address callTarget, address approveTarget, bytes targetData, (address srcToken, address dstToken, address[] srcReceivers, uint256[] srcAmounts, address[] feeReceivers, uint256[] feeAmounts, address dstReceiver, uint256 amount, uint256 minReturnAmount, uint256 flags, bytes permit) desc, bytes clientData) execution) payable returns (uint256 returnAmount, uint256 gasUsed)

Next steps