Core Liquidity Lab Docs
Everything you need to understand, use, and build on top of the Core Liquidity Lab protocol - a non-custodial yield infrastructure on Arbitrum.
What is Core Liquidity Lab?
Core Liquidity Lab is a non-custodial DeFi protocol built on Arbitrum One. It provides two primary products: a USDC yield vault that distributes ARB bonus rewards on top of base lending yield, and a cross-chain token swap aggregator that sources the best rates across all major DEXs.
The protocol is designed around a simple principle: users should never have to trust a third party with their funds. Every deposit, withdrawal, and reward claim is executed directly through audited smart contracts and verifiable on-chain.
Protocol at a Glance
| Parameter | Value |
|---|---|
| Network | Arbitrum One BSC (Swap) |
| Vault deposit token | USDC |
| Vault reward token | ARB |
| Base APY | 3.28% (accrued daily) |
| ARB bonus APY | Variable - distributed weekly |
| Min deposit | 1.00 USDC |
| Custody model | Non-custodial, smart contract |
| Swap networks | Arbitrum One, BNB Smart Chain |
| Swap routing | KyberSwap Aggregator API |
Quick Start
From zero to earning ARB rewards in under 3 minutes. This guide covers the full flow: wallet connection, USDC approval, deposit, and first reward claim.
Prerequisites
Before you start, make sure you have:
- A Web3 wallet (MetaMask, Rabby, or any EIP-6963 compatible wallet)
- USDC on Arbitrum One network
- A small amount of ETH for gas (typically less than $0.05 total)
Depositing into the Vault
Connect your wallet
Go to the Earn page and click Connect Wallet. Select your wallet from the list. The app supports MetaMask, Rabby, OKX Wallet, and all EIP-6963 providers. Make sure your wallet is set to Arbitrum One.
Approve USDC spending
Enter a deposit amount (minimum 1.00 USDC) and click Approve USDC. Your wallet will prompt you to sign an approval transaction. This authorizes the vault contract to pull exactly the amount you specify - nothing more.
Confirm deposit
After approval confirms, click Deposit. A second wallet prompt will appear to execute the deposit transaction. Once confirmed on-chain, your position is active and begins accruing yield immediately.
Claim ARB rewards
ARB bonus rewards accumulate continuously. When you're ready, click Claim ARB from your portfolio dashboard. There is no minimum claim amount. Gas on Arbitrum is typically $0.01-0.05.
Making Your First Swap
Open the Swap page
Navigate to Swap. Select your network (Arbitrum or BSC) from the network selector in the top-right of the swap card.
Select tokens and amount
Click the token selector to choose your FROM and TO tokens. Enter an amount or press MAX to use your full balance. The aggregator automatically finds the best route across all DEXs.
Review and confirm
Check the rate, price impact, and slippage before confirming. The default slippage is 0.5%. For volatile tokens, you may increase it in Settings. Click Swap and confirm in your wallet.
How Swap Works
Core Liquidity Lab Swap finds the best token exchange rate across all major DEXs by splitting and routing your trade through multiple liquidity pools simultaneously.
Aggregation Model
When you initiate a swap, the protocol does not execute directly against a single pool. Instead it queries the KyberSwap Aggregator API, which analyzes hundreds of liquidity sources across the selected chain and returns an optimal route - one that may split your trade across several DEXs to minimize price impact and slippage.
This means that for a single swap of 10,000 USDC to ETH, the aggregator might route 60% through one pool, 30% through another, and 10% through a third - ending up with a better effective rate than any single pool could offer.
Smart route splitting
Trade routes are split across multiple DEX pools to minimize price impact on any single pool.
Real-time pricing
Routes are computed at execution time against live on-chain state - not stale cached quotes.
Supported Networks
| Network | Chain ID | Native token | Status |
|---|---|---|---|
| Arbitrum One | 42161 | ETH | Live |
| BNB Smart Chain | 56 | BNB | Live |
Fees
The swap interface itself charges no additional fee on top of what the DEX pools charge. The rate you see is the rate you get, minus on-chain gas costs. Gas on Arbitrum is negligible - typically under $0.10 for a full swap transaction.
Slippage & Settings
Slippage tolerance defines the maximum price movement you'll accept between quote and execution. Configure it correctly to avoid failed transactions or unexpected losses.
What is Slippage?
Between the moment you request a quote and the moment your transaction is mined, the market moves. Slippage tolerance is the maximum percentage difference you're willing to accept between the quoted output and the actual output. If the final rate deviates beyond your tolerance, the transaction reverts automatically - protecting you from a bad fill.
| Preset | Best for | Risk |
|---|---|---|
| 0.1% | Stablecoin pairs (USDC/USDT) | May fail in volatile conditions |
| 0.5% (default) | Major pairs (ETH, BNB, ARB) | Balanced for most conditions |
| 1.0% | Mid-cap tokens | Higher acceptable deviation |
| Custom | Low-liquidity or high-volatility tokens | Set with care - higher = more MEV risk |
Setting Custom Slippage
Open Settings
Click the gear icon in the top-right corner of the swap card to open the Settings panel.
Select a preset or type a value
Choose 0.1%, 0.5%, or 1% from the quick options. To set a custom value, type a number in the input field (e.g. 2.5 for 2.5%).
Click Apply
Press the Apply button to confirm your custom value. The slippage badge in the swap card header will update to reflect your setting.
Vault Overview
The Core Liquidity Lab vault accepts USDC deposits on Arbitrum and generates two simultaneous yield streams: a base lending rate and ARB token bonus rewards from the Arbitrum DAO incentive program.
Vault Strategy
Deposited USDC is deployed into an on-chain lending strategy on Arbitrum. The vault earns a base supply APY from interest paid by borrowers. On top of that, the Arbitrum DAO distributes ARB tokens as additional incentives to liquidity providers, which the vault claims and passes directly to depositors.
| Yield source | Token | Rate | Frequency |
|---|---|---|---|
| Base supply APY | USDC | 3.28% | Accrued daily |
| ARB incentive program | ARB | Variable | Distributed weekly |
Security Model
The vault smart contract has been audited and all funds are held on-chain at all times. The protocol team has no admin access to user funds - withdrawals can only be initiated by the depositing wallet address. There are no withdrawal delays or lock-up periods.
Non-custodial
Only your wallet can withdraw your funds. No admin keys, no protocol custody.
No lock-up
Withdraw your full USDC position at any time with no penalties or waiting periods.
ARB Rewards
ARB is the native governance token of the Arbitrum network. The Arbitrum DAO distributes ARB tokens to liquidity providers as part of its ecosystem incentive programs. The Core Liquidity Lab vault automatically collects and routes these rewards to depositors.
How ARB Rewards Are Distributed
ARB rewards accrue continuously in proportion to your share of the total vault TVL. They are distributed weekly and become claimable directly from your portfolio dashboard. There is no minimum claim amount and no expiry on unclaimed rewards.
Claiming ARB
Open the Earn page
Connect your wallet on the Earn page. Your pending ARB balance is displayed in the portfolio section.
Click Claim ARB
Press the Claim ARB button. Your wallet will prompt you to confirm the claim transaction. Gas cost on Arbitrum is typically $0.01-0.05.
ARB arrives in your wallet
Once the transaction confirms, ARB tokens appear directly in your wallet. You can hold, swap, or use them however you choose.
Aggregator API
Core Liquidity Lab routes all swaps through the KyberSwap Aggregator API - a high-performance, publicly accessible DEX aggregation layer that scans hundreds of liquidity pools in real time and returns the optimal trade path.
What is the Aggregator API?
Instead of executing swaps against a single pool, the aggregator splits and routes orders across multiple DEXs simultaneously. This means your trade of 10,000 USDC to ETH might be split - 55% through Uniswap V3, 30% through Camelot, 15% through Balancer - achieving a better composite rate than any individual pool could offer.
The API is operated by KyberSwap and is used by Core Liquidity Lab under the identifier coreliquiditylab. All requests are made client-side from the user's browser directly to the aggregator - no proxy, no intermediary server.
x-client-id header is included for analytics attribution.Base URL
https://aggregator-api.kyberswap.com/{chain}/api/v1/
Replace {chain} with the network slug for the target chain:
| Network | Chain slug | Chain ID | Native token |
|---|---|---|---|
| Arbitrum One | arbitrum |
42161 |
ETH |
| BNB Smart Chain | bsc |
56 |
BNB |
Endpoints
The swap flow uses two sequential API calls:
routeSummary object used in the next step. See full reference →routeSummary into a signed, ready-to-submit transaction calldata. Send this directly to the on-chain router. See full reference →Common Headers
coreliquiditylab. Recommended for all integrations.application/jsonNative Token Address
When swapping a native token (ETH on Arbitrum, BNB on BSC), use the universal placeholder address instead of a real ERC-20 address:
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
This convention is shared across all major aggregators (KyberSwap, 1inch, Paraswap). The router interprets this address as a signal to use msg.value instead of an ERC-20 transfer.
Error Codes
| code field | Meaning | Action |
|---|---|---|
0 | Success | Proceed to next step |
4001 | No route found | Token pair may have no liquidity on this network |
4002 | Amount too small | Gas cost exceeds swap value - increase the amount |
5000 | Server error | Retry after 2-3 seconds |
/routes
Queries the aggregator for the optimal swap route between two tokens. Returns a routeSummary that must be passed to POST /route/build to generate the final transaction.
Endpoint
GET https://aggregator-api.kyberswap.com/{chain}/api/v1/routes
Query Parameters
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE."1000000" = 1 USDC. For ETH (18 decimals): "1000000000000000000" = 1 ETH.true to include gas cost in the route optimization score. Recommended for most integrations. Default: false.0 - optimize for best output rate (default). 1 - optimize for lower gas consumption, may sacrifice a small amount of output.50 = 0.5%, 100 = 1.0%. If omitted, slippage is applied at the /route/build step instead.Example Request
Swap 1 ETH to USDC on Arbitrum One:
curl -X GET \ "https://aggregator-api.kyberswap.com/arbitrum/api/v1/routes\ ?tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\ &tokenOut=0xaf88d065e77c8cC2239327C5EDb3A432268e5831\ &amountIn=1000000000000000000\ &gasInclude=true\ &saveGas=0" \ -H "x-client-id: coreliquiditylab"
Response Structure
A successful response returns code: 0 and a data.routeSummary object:
{
"code": 0,
"message": "successfully",
"data": {
"routeSummary": {
"tokenIn": "0xEeee...EEEE",
"tokenOut": "0xaf88...5831",
"amountIn": "1000000000000000000",
"amountOut": "3742180000", // 3742.18 USDC (6 decimals)
"amountOutUsd": "3742.18",
"priceImpact": "-0.04", // percent, negative = cost
"gas": "300000",
"gasUsd": "0.12",
"route": [ // array of hops
[
{
"pool": "0x...",
"tokenIn": "0xEeee...EEEE",
"tokenOut": "0xaf88...5831",
"swapAmount": "1000000000000000000",
"exchange": "uniswapv3"
}
]
]
}
}
}
Key Response Fields
| Field | Type | Description |
|---|---|---|
routeSummary | object | Opaque route object. Must be passed unchanged to POST /route/build. |
amountOut | string (int) | Expected output in the token's smallest unit. |
amountOutUsd | string (float) | USD value of expected output at current market price. |
priceImpact | string (float) | Percentage deviation from mid-market price. Negative values mean cost to the user. |
gas | string (int) | Estimated gas units. Multiply by current gas price to get ETH gas cost. |
route | array | Array of swap hops. Each hop contains pool address, exchange name, and split amounts. |
/route/build
Takes a routeSummary from GET /routes and returns signed, ready-to-submit transaction calldata. This is the second and final API call in the swap flow - after this you send the transaction directly to the blockchain.
Endpoint
POST https://aggregator-api.kyberswap.com/{chain}/api/v1/route/build
Request Body
Send JSON. All fields are required:
routeSummary object returned by GET /routes. Do not modify any fields - pass it through verbatim.msg.sender context.sender. Can differ for aggregator integrations that route output to a vault.50 = 0.5%. This value is encoded into the on-chain calldata - the transaction will revert on-chain if actual slippage exceeds it.Example Request
curl -X POST \ "https://aggregator-api.kyberswap.com/arbitrum/api/v1/route/build" \ -H "Content-Type: application/json" \ -H "x-client-id: coreliquiditylab" \ -d '{ "routeSummary": { ...object from GET /routes... }, "sender": "0xYourWalletAddress", "recipient": "0xYourWalletAddress", "slippageTolerance": 50 }'
Response Structure
{
"code": 0,
"message": "successfully",
"data": {
"amountIn": "1000000000000000000",
"amountInUsd": "3742.18",
"amountOut": "3740950000", // after slippage
"amountOutUsd": "3740.95",
"gas": "285000",
"routerAddress": "0x6131B5f...", // send tx.to here
"transactionValue": "1000000000000000000", // msg.value for ETH swaps
"data": "0x..." // ABI-encoded calldata
}
}
Key Response Fields
| Field | Type | How to use |
|---|---|---|
routerAddress | address | Set as tx.to when sending the transaction. |
data | hex string | Set as tx.data. Contains ABI-encoded swap calldata. |
transactionValue | string (int) | Set as tx.value for native token swaps (ETH). Pass 0 for ERC-20 to ERC-20 swaps. |
gas | string (int) | Estimated gas units. Core Liquidity Lab applies a 1.25x buffer: Math.floor(parseInt(gas) * 1.25). |
amountOut | string (int) | Minimum output amount after slippage deduction. Transaction reverts on-chain if actual output is below this. |
Sending the Transaction
Once you have the build response, construct and send the transaction using ethers.js or any Web3 library:
// buildJson.data is the POST /route/build response const txData = buildJson.data; const tx = await signer.sendTransaction({ to: txData.routerAddress, data: txData.data, value: ethers.BigNumber.from(txData.transactionValue || '0'), gasLimit: ethers.BigNumber.from( Math.floor(parseInt(txData.gas) * 1.25).toString() ), }); await tx.wait(1); // wait for 1 block confirmation
token.approve(routerAddress, amountIn) if the current allowance is less than amountIn. Native token (ETH) swaps do not need approval.Token List
Core Liquidity Lab maintains a curated token list per supported network. These are the tokens available for selection in the swap interface. The list is embedded client-side and does not require an API call.
Arbitrum One Tokens
| Symbol | Name | Decimals | Contract address |
|---|---|---|---|
| ETH | Ether (native) | 18 | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| USDC | USD Coin | 6 | 0xaf88...5831 ↗ |
| USDT | Tether USD | 6 | 0xFd08...bb9 ↗ |
| ARB | Arbitrum | 18 | 0x912C...6548 ↗ |
| WBTC | Wrapped Bitcoin | 8 | 0x2f2a...B0f ↗ |
| DAI | Dai Stablecoin | 18 | 0xDA10...da1 ↗ |
| WETH | Wrapped Ether | 18 | 0x82aF...ab1 ↗ |
BNB Smart Chain Tokens
| Symbol | Name | Decimals | Contract address |
|---|---|---|---|
| BNB | BNB (native) | 18 | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| USDT | Tether USD | 18 | 0x55d3...955 ↗ |
| USDC | USD Coin | 18 | 0x8AC7...80d ↗ |
| WBNB | Wrapped BNB | 18 | 0xbb4C...95c ↗ |
| WETH | Wrapped Ether | 18 | 0x2170...F8 ↗ |
| BTCB | Bitcoin BEP-20 | 18 | 0x7130...9c ↗ |
Amount Encoding Reference
All amounts in the API are expressed as integers in the token's smallest unit. Use the following decimals when converting human-readable amounts:
| Token | Decimals | 1 token = amountIn value |
|---|---|---|
| ETH, ARB, BNB, WETH, WBNB, DAI | 18 | 1000000000000000000 |
| USDC (Arbitrum), USDT (Arbitrum) | 6 | 1000000 |
| WBTC | 8 | 100000000 |
| USDC, USDT, WETH, BTCB (BSC) | 18 | 1000000000000000000 |
Full Integration Flow
Putting it all together - the complete sequence for a swap:
GET /routes with tokenIn, tokenOut, amountIn. Store the full routeSummary object.allowance(user, routerAddress). If insufficient, call approve(routerAddress, amountIn) and wait for confirmation.POST /route/build with routeSummary, sender, recipient, and slippageTolerance. Receive routerAddress, data, and transactionValue.signer.sendTransaction({to, data, value, gasLimit}). Wait for 1 block confirmation.Smart Contracts
All Core Liquidity Lab contracts are deployed on Arbitrum One and verifiable on Arbiscan. There are no admin keys or upgradeable proxies that could alter user fund access.
Contract Addresses
| Contract | Network | Address |
|---|---|---|
| USDC Vault | Arbitrum | 0x794a...14aD ↗ |
| USDC Token | Arbitrum | 0xaf88...5831 ↗ |
| ARB Token | Arbitrum | 0x912C...6548 ↗ |
Key Interactions
| Action | Function | Who can call |
|---|---|---|
| Deposit USDC | deposit(uint256 amount) | Any wallet |
| Withdraw USDC | withdraw(uint256 amount) | Depositor only |
| Claim ARB rewards | claimRewards() | Depositor only |
| Claim referral ARB | claimReferralRewards() | Referrer only |
Security & Audits
Security is the non-negotiable foundation of every design decision in Core Liquidity Lab. All smart contracts have been independently audited before mainnet deployment, and the protocol is built around a zero-trust model where even the team cannot access user funds.
Audit Status
Security Principles
No admin withdrawal access
The protocol team cannot withdraw user funds. Only the depositing wallet address can initiate withdrawals - enforced at contract level.
Immutable core logic
Core vault deposit and withdrawal logic is not upgradeable. Your funds behave exactly as the deployed, audited code specifies.
On-chain verifiable
Every transaction - deposit, withdrawal, reward claim - is publicly verifiable on Arbiscan. No off-chain state.
No lock-up risk
Withdrawals are processed in the same block with no time delays, gates, or withdrawal queues imposed by the protocol.
Risk Disclosures
While the protocol is designed to minimize risk, DeFi always carries inherent risks that users should understand before depositing funds.
Audit Reports
All Core Liquidity Lab smart contracts have been independently audited by leading blockchain security firms before mainnet deployment. Zero critical or high severity vulnerabilities were found.
Audits
Certora - June 2025
| ID | Finding | Severity | Status |
|---|---|---|---|
CLL-01 |
Reward calculation rounding at multi-user epoch boundary | Medium | Fixed |
CLL-02 |
Self-referral not blocked at contract level | Medium | Fixed |
CLL-03 |
Missing event on referral tier upgrade | Low | Fixed |
CLL-04 |
Gas optimization in batch reward distribution loop | Low | Fixed |
CLL-05 |
Redundant zero-check before SafeMath subtraction | Low | Acknowledged |
Oxorio - January 2025
| ID | Finding | Severity | Status |
|---|---|---|---|
HCK-01 |
Swap router approval not revoked after partial-fill edge case | Low | Acknowledged |
MixBytes - February 2024
Contract Scope Coverage
| Contract | LoC | Certora | Oxorio | MixBytes |
|---|---|---|---|---|
| USDCVault.sol | 387 | ✓ | ✓ | - |
| RewardDistributor.sol | 214 | ✓ | ✓ | ✓ |
| ReferralRegistry.sol | 178 | ✓ | ✓ | - |
| SwapRouter.sol | 143 | - | ✓ | - |
Governance
Protocol parameters and major decisions are governed by the community through on-chain voting. Any token holder can create and vote on proposals.
Governance Forum
Proposals begin as discussions in the community before moving to a formal on-chain vote. The governance forum is hosted on Snapshot, where any community member can submit a proposal for discussion.
Visit the governance portal: snapshot.box/#/s:lab.pro
Voting Process
Discussion period
A proposal is posted to the community channel for open discussion. Community members provide feedback and refinements over at least 3 days.
Snapshot vote
A formal vote is posted on Snapshot. Any eligible address can vote FOR, AGAINST, or ABSTAIN. Votes are weighted by token holdings at the snapshot block.
Implementation
Passed proposals are implemented by the core team within the stated timeframe. All implementation transactions are publicly announced before execution.
FAQ
Answers to the most common questions about the Core Liquidity Lab protocol.
Vault
How does the deposit work?
You approve USDC spending for the vault contract, then confirm the deposit transaction. Both steps require wallet signatures and cost a small amount of ETH for gas. Once the deposit confirms on-chain, your position is active and accruing yield immediately.
Where do my funds go?
Funds are held directly in the vault smart contract on Arbitrum and deployed into an on-chain lending strategy. Every transaction is verifiable on Arbiscan using the contract address listed on the Earn page.
How is APY calculated?
The base 3.28% APY is accrued daily based on your deposit amount and time in the pool. ARB bonus rewards are variable and distributed weekly based on your proportional share of total vault TVL.
Can I withdraw at any time?
Yes. There are no lock-up periods, withdrawal queues, or exit fees. You can withdraw your full USDC balance at any time from the Earn page. Pending ARB rewards can be claimed separately at any time.
Swap
How does the swap get the best rate?
The swap uses the KyberSwap Aggregator API which scans all integrated DEX pools on the selected network in real time and constructs an optimal route - splitting your trade across multiple pools when beneficial to minimize price impact.
Why did my swap fail?
The most common cause is slippage tolerance being too low for current market conditions. If the price moved more than your tolerance between quote and execution, the transaction reverts to protect you. Try increasing slippage in Settings and retry.
Referral
How much do I earn from referrals?
You earn 10-25% of your referees' ARB bonus rewards depending on your tier (Bronze: 10%, Silver: 15%, Gold: 20%, Diamond: 25%). This continues for the full lifetime of each referee's deposit with no expiry. See the Referral Program docs for full details.
Glossary
Definitions for protocol-specific and general DeFi terminology used throughout this documentation.
| Term | Definition |
|---|---|
| APY | Annual Percentage Yield. The annualized rate of return including compounding effects. |
| ARB | The native governance token of the Arbitrum network, distributed as bonus rewards to vault depositors. |
| Aggregator | A system that queries multiple DEX pools and combines liquidity sources to find the optimal swap route for a given trade. |
| DEX | Decentralized Exchange. A protocol that facilitates token swaps using on-chain liquidity pools without a central intermediary. |
| Non-custodial | A protocol design where users retain full control of their funds. No third party can move or freeze your assets. |
| Price Impact | The change in market price caused by your trade. Larger trades relative to pool liquidity create higher price impact. |
| Slippage | The difference between the expected trade price and the actual execution price due to market movement between quote and settlement. |
| TVL | Total Value Locked. The total dollar value of assets deposited in the vault at any given time. |
| USDC | USD Coin. A fiat-backed stablecoin pegged to the US Dollar, used as the vault's deposit and base yield token. |
| Vault | A smart contract that accepts USDC deposits, deploys them into a yield strategy, and distributes returns to depositors. |
| Wei | The smallest denomination of ETH (1 ETH = 10^18 wei). Used when specifying token amounts in API calls and contract interactions. |