Precision Liquidity Protocol v2.4

Sovereign yield, engineered.

Meridian is a non-custodial liquidity protocol enabling autonomous yield optimization across concentrated positions. Capital efficiency, maximized. Risk, parametrized.

Explore Pools Read Docs
Total Value Locked $2.84B +3.2% 24h
24h Volume $847M +11.4% 24h
Active Pools 127 +4 this week
Active Pools

Top yield
opportunities

Showing 5 of 127 active pools · Updated 12s ago

ETH / USDC
Stable Range MRD Boost
$284.7M
+2.1% 24h
$112.4M
+8.3% 24h
0.05%
8.42%
APY
WBTC / ETH
Volatile
$198.3M
-0.8% 24h
$89.2M
+4.1% 24h
0.30%
12.87%
APY
stETH / ETH
Correlated
$512.1M
+1.4% 24h
$47.8M
-2.1% 24h
0.01%
5.21%
APY
ARB / USDC
Volatile MRD Boost
$87.4M
+6.7% 24h
$134.6M
+22.4% 24h
0.30%
22.14%
APY
LINK / ETH
Volatile
$62.8M
+4.2% 24h
$48.1M
+7.6% 24h
0.30%
17.63%
APY
Browse all 127 pools
Built on conviction. Audited for permanence.
$12.4M
Fees distributed
99.98%
Protocol uptime
4
Security audits
18.2K
Active wallets
Documentation

The protocol,
explained precisely.

Overview

Meridian is a non-custodial concentrated liquidity protocol deployed on Ethereum mainnet, Arbitrum, and Optimism. It enables liquidity providers to deploy capital within custom price ranges, maximizing fee generation per unit of capital relative to traditional AMM designs.

The protocol introduces autonomous position management — an on-chain keeper network that rebalances LP positions in response to price drift, ensuring liquidity remains in-range and generating fees continuously. LPs receive an ERC-1155 receipt token representing their position, tradeable and composable across DeFi.

Non-custodial by design: At no point does Meridian hold user funds. All positions are held in AMM core contracts and accessible solely by the position owner's private key or a delegated operator contract.
Key Design Principles

Capital Efficiency. Concentrated liquidity allows LPs to provide depth within specific price ranges, achieving up to 4,000× the capital efficiency of constant-product AMMs for stable pairs, and 100–500× for volatile pairs with reasonable range selection.

Composability. Every position mints a portable ERC-1155 token. These receipts can be used as collateral in lending markets, transferred between wallets, or managed by smart contract operators through the operator delegation system.

Permissionless Pool Creation. Any address may create a liquidity pool for any ERC-20 pair at any of the three supported fee tiers: 0.01%, 0.05%, or 0.30%. Pool creation requires no governance vote and takes effect in a single transaction.

Architecture

The Meridian protocol is composed of three distinct contract layers: the Core, the Router, and the Keeper Network. This separation ensures that critical invariant logic is isolated from peripheral routing and automation concerns.

Protocol Architecture · Ethereum Mainnet
User Wallet
dApp Interface
Keeper Bot
MeridianRouter v2
PoolFactory
MeridianCore
PositionManager
Oracle (TWAP)
FeeCollector
MRD Rewards
Core Contracts

The MeridianCore contract implements the AMM invariant and manages tick-indexed liquidity positions. It is intentionally minimal — containing no upgradeability, no admin keys, and no protocol fee switches that require governance approval to activate. The design philosophy is immutability-first: if it can't be changed, it can't be exploited by governance capture.

The PoolFactory deploys new pool instances via CREATE2, enabling deterministic pool address computation. Pool addresses can be derived off-chain from the two token addresses and fee tier alone, allowing efficient transaction batching.

Liquidity Engine

The PositionManager wraps core pool interactions into the ERC-1155 receipt token system. Each position token encodes the pool address, price tick range, and liquidity amount in its token ID, enabling fully off-chain position decoding without requiring on-chain state reads.

Security

Security is a first-order concern at Meridian. The core contracts have been reviewed by four independent audit firms — Trail of Bits, Spearbit, Sherlock, and Code4rena — with a combined total of eleven senior auditors across twelve weeks of engagement. All critical findings have been remediated; no high-severity issues remain open.

Bug bounty active: Meridian maintains an ongoing program on Immunefi with a maximum payout of $500,000 for critical vulnerabilities. All severity levels are rewarded. Responsible disclosure is always honored.
Audit Reports

All audit reports are publicly available in the meridian-protocol/audits repository on GitHub. Findings are tracked with their severity classification, remediation commit hash, and auditor sign-off confirmation. The repository is maintained by the security committee and updated with each new engagement.

Fees & Revenue

Meridian collects a protocol fee of 10–20% of swap fees generated by each pool, configurable by governance within this range. The default is 15%. Protocol fees accrue to the FeeCollector contract and are claimable by MRD token stakers proportional to their staking weight.

LP fees — the remaining 80–90% of swap fees — accrue in-range to all active liquidity positions and are claimable at any time without closing the position. Unclaimed fees compound automatically when a position is rebalanced by the keeper network, improving effective yield for passive LPs.

Governance

The Meridian protocol is governed by MRD token holders through an on-chain governance system based on Governor Bravo. Proposals require a minimum of 100,000 MRD to submit and a quorum of 4% of circulating supply to pass.

A 48-hour timelock separates proposal passage from execution, giving the community time to respond to any proposal deemed adversarial. The timelock admin key is held by a 5-of-9 multisig composed of publicly-identified contributors with disclosed identities and reputational stakes.

Developer Integration

Build with
Meridian.

Full-stack developer tooling. TypeScript SDK, REST API, and direct contract ABIs — integrate in minutes, deploy to production.

TypeScript SDK
Full-featured client library for Node.js and browser. Type-safe, tree-shakeable, zero runtime dependencies beyond viem.
SDK Reference
REST API
HTTP API for pool data, position analytics, and yield history. 300 req/min on free tier. WebSocket streams available.
API Docs
Contract ABIs
Verified ABI exports for all core contracts. Compatible with ethers.js v5/v6, viem, and web3.js out of the box.
ABI Registry
Terminal
# Install the Meridian SDK
npm install @meridian/sdk

# or with yarn
yarn add @meridian/sdk
TypeScript
import { Meridian } from '@meridian/sdk'
import { parseEther, parseUnits } from 'viem'

// Initialize the client
const client = new Meridian({
  apiKey: process.env.MERIDIAN_API_KEY,
  network: 'mainnet',
  rpcUrl: process.env.ETH_RPC_URL
})

// Fetch top pools sorted by APY
const pools = await client.pools.list({
  sortBy: 'apy',
  order: 'desc',
  limit: 10,
  minTvl: 1_000_000
})

// Open a concentrated liquidity position
const position = await client.positions.create({
  pool: 'ETH/USDC',
  amount0: parseEther('1.0'),
  amount1: parseUnits('2800', 6),
  rangeLower: 2600,  // Lower price bound (USDC per ETH)
  rangeUpper: 3200,  // Upper price bound (USDC per ETH)
  autoRebalance: true
})

console.log(`Position minted: tokenId #${position.tokenId}`)
cURL
# Fetch pools sorted by APY
curl https://api.meridian.finance/v2/pools \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -G \
  --data-urlencode "sortBy=apy&limit=5"
JSON Response
{
  "data": [
    {
      "address": "0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8",
      "pair": "ARB/USDC",
      "feeTier": 3000,
      "tvl": "87421048.32",
      "volume24h": "134621893.18",
      "apy": "22.14",
      "apyBase": "14.82",
      "apyReward": "7.32",
      "sqrtPriceX96": "1429280024900000000000000000000"
    }
  ],
  "meta": {
    "total": 127,
    "page": 1,
    "updatedAt": "2026-03-22T14:08:31Z"
  }
}
Solidity
// SPDX-License-Identifier: MIT
// Meridian Protocol — Direct Contract Integration Example
pragma solidity ^0.8.20;

import "@meridian/contracts/interfaces/IMeridianCore.sol";
import "@meridian/contracts/interfaces/IPositionManager.sol";

contract MyDeFiIntegration {
  IMeridianCore     public immutable core;
  IPositionManager  public immutable pm;

  constructor(address _core, address _pm) {
    core = IMeridianCore(_core);
    pm   = IPositionManager(_pm);
  }

  function openPosition(
    address token0, address token1,
    uint24  fee,
    int24   tickLower,  int24 tickUpper,
    uint256 amount0,    uint256 amount1
  ) external returns (uint256 tokenId) {
    tokenId = pm.mint(
      IPositionManager.MintParams({
        token0:          token0,
        token1:          token1,
        fee:             fee,
        tickLower:       tickLower,
        tickUpper:       tickUpper,
        amount0Desired:  amount0,
        amount1Desired:  amount1,
        recipient:       msg.sender
      })
    );
  }
}