Flex Liquidity Pools: Where Capital Efficiency Meets Legal Requirements

By Tigran Bolshoi and Mike Shishko on behalf of Swaps.io

Disclaimer
Development is actively ongoing. Many of the components and features described below are WIP and may be subject to change.

For the latest implementation details, refer to the smart contracts repository:
:link:github.com/swaps-io/flex-pool-contracts


Background

In recent years, the DeFi ecosystem has seen an accelerated shift from
direct on-chain interactions to architectures based on intents –
user-defined desired outcomes executed by a decentralized network of
solvers. Protocols such as UniswapX, 1inch Fusion, CowSwap, Bebop and Velora are
increasingly replacing traditional DEX interfaces by enabling users to
delegate execution logic to professional actors.

One of the key drivers behind this transition has been the need to
abstract away low-level transactional complexity from users, eliminating
the requirement to manually manage routing, bridge and DEX selection,
and transaction execution. Studies of intent-based execution models show
that solver-based competition leads to better price discovery through
price auctions, while mitigating direct MEV extraction.

This trend has also expanded into the cross-chain domain with
intent-based protocols like Across, 1inch Fusion+, Swaps.io, Squid,
Mayan and others. However, despite their growing adoption, the
supporting liquidity infrastructure remains fragmented and
non-standardized.

Operational Bottlenecks for Cross-Chain Solvers

Although the intent paradigm offers clear advantages in execution
efficiency and complexity abstraction, it places a substantial
operational overhead on solvers.

Capital and Liquidity Fragmentation

In most existing cross-chain protocols, solvers must pre-fund liquidity
across multiple chains, manage asset rebalancing, and bear the risks
associated with custody and cross-chain execution. These
responsibilities are not only technically demanding but also
capital-inefficient and economically risky.

Counterparty and Credit Dependencies

To operate efficiently, solvers often seek external credit arrangements
to support their inventory needs, forcing them to operate under the
logic of traditional financial instruments. This effectively places them
in the role of institutional borrowers, taking on the complexity of
credit negotiations and repayment management. These arrangements involve
trusted lenders with fixed-rate terms that are inefficient when capital
is unused.

Regulatory and Legal Exposure

Engaging with trusted and regulated entities, adhering to compliance
procedures significantly increases exposure to legal and financial
regulation. In many cases, it requires broker licenses and may lead to
legal liabilities in case of disputes. Such requirements stand in direct
contrast to the principles of permissionless and decentralized systems.

Need for a Unified Liquidity Layer

What is missing is a unified, permissionless, and programmable liquidity
layer that enables solvers to borrow capital permissionlessly, securely,
and on demand, while allowing liquidity providers to earn additional
yield from solver execution activity in a transparent and risk-isolated
environment. Flex Pools is designed to address this gap.

Flex Pools: Unified Liquidity for the Solver Economy

Flex Pools introduces a unified, cross-chain liquidity layer designed
for intent-based protocols. Instead of relying on fragmented,
self-managed inventories or centralized credit lines, solvers can borrow
and return assets through various providers that access liquidity (i.e.
borrow and return it) in standardized way. Liquidity providers, in turn,
earn additional yield from solver execution flows in a secure,
permissionless environment.

The system aligns the interests of three core participant groups:

  • Solvers gain instant, on-demand access to liquidity with no need
    to manage cross-chain inventory or borrow from external creditors.
    Each interaction follows transparent on-chain contract logic, with the
    solver accessing liquidity only at the moment it is needed and paying
    solely for the duration of use. This eliminates long-term debt, fixed
    interest obligations, and regulatory exposure. The protocol
    abstracts away inventory management, rebalancing, and cross-chain
    verification, allowing solvers to focus purely on execution algorithms
    and routing logic – similar to on-chain solving.

  • Liquidity Providers benefit from a scalable, multi-chain
    investment model with on-chain guarantees replacing legal liabilities.
    Flex Pools offer programmable liquidity and capital efficiency that
    goes beyond what common liquidity pools can offer, enabling LPs to
    earn additional yield from solvers’ activity.

  • Solver-based systems and infrastructures – including
    intent-driven protocols and networks, chain-abstraction smart wallets
    and dapps, fast-fill bridges, and clearing layers – gain access to a
    shared liquidity infrastructure that lowers entry barrier and improves
    execution efficiency. By decoupling liquidity from solvers and clearly
    separating roles, Flex Pools enables greater decentralization and
    composability across the intent-based stack.

Architecture

Overview

Flex Pools is a modular liquidity protocol designed for intent-based
cross-chain execution. It allows solvers to borrow assets on one chain
and return them on another using standardized borrow-and-return
operations. These operations are carried out through a variety of secure
whitelisted taker adapters to third-party providers.

The system is organized into enclaves – sets of EIP-4626 tokenized
vaults deployed across multiple chains for a single logical asset. Each
vault manages deposits, withdrawals, and share accounting on its
respective chain. The vaults within an enclave are connected through a
common infrastructure that handles cross-chain messaging and
verification, leveraging event verifiers backed by oracles to ensure
execution validity.

The protocol is designed to be composable, enabling integration with
various taker adapters, event verifiers, and tuners defining fee
models.

Infrastructure

The core of the infrastructure is the FlexPool contract, which
maintains a strict whitelist of approved taker adapters. Each taker is
linked to a specific third-party provider and paired with a tuner that
defines execution and rebalancing fees. Together, the taker-tuner pair
governs how liquidity is moved across chains for a given provider and
enclave.

Taker contracts are typically scoped to a specific chain-to-chain
channel for better security. In many cases, the taker relies on a helper
Giver contract deployed on the opposite chain, which emits verifiable
events to prove that liquidity has been locked and committed for return
to the pool. As a result, there may be several instances of one provider
in the router – each deployed with different parameters to serve a
specific enclave chain.

Some providers require validation of events from other chains to confirm
asset return. To support this, the protocol uses an IEventVerifier
abstraction that validates cross-chain proofs and ensures the
correctness of take and related operations.

Enclave Model

An enclave is a set of vaults deployed across multiple chains that
manage liquidity for a single logical asset (e.g., USDC, ETH). Each
chain hosts one vault – a standalone FlexPool contract – which
operates independently but shares accounting logic with other vaults in
the same enclave.

Enclaves are liquidity-isolated by design: assets deposited into a vault
remain on that chain unless explicitly moved via a take operation and
later returned either through a give call in a Giver helper contract
or by direct token transfer back to the pool address.

While enclaves operate independently, they are logically connected
through the protocol’s infrastructure. If liquidity becomes unevenly
distributed – for example, when one chain is drained due to solver
activity – the rebalancing mechanism incentivizes redistribution back
to equilibrium.

Asset Accounting

Each FlexPool vault manages a single ERC-20 token. Across chains, the
same logical asset (e.g., USDC) may have different token contracts, but
must retain equivalent value and fungibility. The protocol supports
varying decimals and optionally wrapped or yield-bearing tokens.

Each pool tracks the following key asset states:

  • Total Assets: The total amount of the asset managed by the pool,
    including all deposits and protocol fees. Represents the full
    obligation to liquidity providers.

  • Current Assets: The amount of the asset currently held in the
    vault on the local chain. Includes both available liquidity and the
    rebalance reserve.

  • Available Assets: The portion of current assets that is not
    reserved and can be used immediately for take or withdraw.

  • Rebalance Assets: A separate reserve held within the vault and
    used to pay solvers for restoring cross-chain balance. Funded from
    take operations that increase imbalance.

  • Equilibrium Assets: The difference between the vault’s current
    asset balance and its ideal share of the total liquidity. A positive
    value means the vault holds excess liquidity; a negative value means
    it is underfunded relative to the enclave total. This metric is used
    by tuners to calculate rebalancing incentives during take.

Together, these values ensure accurate accounting and safe liquidity
usage across chains. They also serve as inputs for protocol fee logic
and share-to-asset conversion formulas.

Operations

Flex Pools implement both standard EIP-4626 vault operations and
cross-chain liquidity transfer mechanics.

Vault operations

Liquidity providers interact with the pool through familiar functions:

  • deposit / mint: deposit assets in exchange for shares
  • withdraw / redeem: burn shares to receive underlying assets
  • Preview and limit functions (previewDeposit, maxWithdraw, etc.)
    follow the EIP-4626 spec

Shares are ERC-20 tokens representing proportional ownership. Their
value increases over time as protocol fees accumulate from solver
activity.

Cross-chain operations

  • take: transfers assets from the pool to a whitelisted taker
    caller. The taker is responsible for forwarding or locking these
    assets on the current chain and ensuring a corresponding return
    (minGiveAssets) on another chain. Associated fees
    (protocolAssets, rebalanceAssets) are calculated by the assigned
    tuner.
  • give: returns liquidity back into an enclave. In most cases, this is
    implemented as a simple ERC-20 transfer to the vault, optionally
    wrapped in a helper giver contract to emit proof-validatable events.
  • Rebalancing is handled implicitly via the rebalanceAssets value in
    the take operation. Solvers that relieve excess liquidity may
    receive a rebate, while those that increase imbalance may incur an
    additional fee.

These operations form the core lifecycle of liquidity in Flex Pools –
from provisioning and usage to redistribution across chains.

Takers & Givers

Takers are adapter contracts responsible for handling the execution
logic of a take operation. Each taker is linked to a specific
third-party provider or routing system and is approved through the
pool’s internal whitelist. Takers receive the borrowed assets from the
pool and must guarantee that a corresponding repayment occurs on another
chain.

Takers may rely on paired Giver contracts deployed on the opposite
chain. These contracts wrap a give operation, emitting verifiable
events used to confirm that liquidity has been returned. Givers may
enforce additional logic or safety checks required by the taker’s
provider.

Tuner System

Tuners define the economic parameters of each take operation. They are
modular contracts assigned per taker and are responsible for
calculating:

  • Protocol Fee (protocolAssets) – the portion of assets paid to
    the pool, distributed to liquidity providers
  • Rebalance Fee (rebalanceAssets) – the incentive or penalty
    based on how the operation affects cross-chain liquidity balance

Tuners implement a standardized interface:

tune(assets) → (protocolAssets, rebalanceAssets)

The most basic implementation is the current LinearTuner, which
applies:

  • A fixed fee component
  • A percentage-based fee on the requested assets
  • A dynamic rebalance adjustment based on the enclave’s
    equilibriumAssets

More advanced tuner types – such as multi-slope models or tuners with
off-chain inputs (e.g. market data, solver scoring) – can be plugged in
without changing the pool logic.

Tuners ensure that fees are adaptive, fair, and aligned with current
liquidity conditions across chains. They also serve as the mechanism for
redistributing execution cost and maintaining systemic balance.

Verifier Layer

Most taker providers require proof that a give operation has occurred
on another chain before allowing a take. To support this, Flex Pools
use a pluggable IEventVerifier interface – an abstract verification
layer that checks cross-chain proofs that confirm the presence of
specific events, exposing a single function:

verifyEvent(chain, emitter, topics, data, proof)

If the event is valid and final, the call succeeds; otherwise, it
reverts. This mechanism allows takers to safely depend on cross-chain
execution results without introducing trust assumptions or centralized
relayers.

Multiple verifier implementations can coexist, enabling support for
different proof systems and oracles.

Rebalancing Logic

As solvers move liquidity across chains using take and give,
imbalances can occur within an enclave. To correct this, the protocol
includes a built-in rebalancing incentive mechanism, fully integrated
into the take operation. Each take call returns a rebalanceAssets
value from the tuner:

  • Positive – the solver pays an additional fee, increasing the
    enclave’s rebalance reserve

  • Negative – the solver is rewarded with surplus assets from the
    reserve for restoring balance

These incentives are based on the enclave’s equilibriumAssets, which
measure how far the current state deviates from ideal state – where all
total assets on the chain are fully available for take and withdraw
operations.

In addition to solver-driven arbitrage, the protocol is designed to
support native rebalancing via external bridges – like Circle CCTP,
LayerZero, and Everclear, allowing direct movement of assets within
enclaves. Each enclave may be configured with its own set of
rebalancers, enabling flexible strategies per asset and chain.

Provider Integration

The system supports integration with multiple execution providers, each
with their own Taker and optional Giver contracts. These adapters
implement strict on-chain validation flows, often relying on event
proofs or deterministic conditions to ensure solvency and delivery
guarantees. Currently, native support exists for direct asset transfers,
1inch Fusion+, and Across. Future integrations are planned for protocols
like Swaps.io, Debridge, Squid, Mayan and others.

The system may also support universal, provider-agnostic collateral
models, where solvers lock collateral once and access multiple taker
routes across chains and providers.

Liquidity Extensions

To improve capital efficiency and reduce idle funds, Flex Pools are
designed to support advanced liquidity sources beyond static ERC-20
balances. Planned extensions include:

Yield-bearing asset support

Pools may accept deposits in wrapped or interest-generating tokens such
as aTokens (AAVE), cTokens (Compound), LST/LRT, ERC-4626 vault
shares and others. These assets can be automatically unwrapped when used
for take operations, allowing the pool to earn passive yield while
maintaining on-chain availability.

Dynamic buffer management

A background allocator adjusts the ratio between yield-bearing tokens
and native assets based on on-chain and off-chain signals (e.g.,
utilization, volatility, rebalance demand). This ensures that each
enclave always holds an accessible buffer of base liquidity for
immediate solver usage.

Execution Coordination

In high-load or adversarial environments, coordinating access to shared
liquidity becomes critical. Flex Pools are designed to optionally
support external coordination layers that manage the timing and fairness
of take and give operations.

Take Sequencer

An optional mechanism to queue or rate-limit take operations across
solvers. This can help avoid race conditions, overlapping intents, or
liquidity exhaustion in highly contested environments. It can operate
off-chain and coordinate access based on fairness or solver priority
rules.

Give Pre-Approver

A validation mechanism for inbound give operations ensures that
returned assets match expectations and align with prior take activity.
When combined with take coordination, it can help prevent liquidity
shortfalls caused by competing solvers by maintaining an ordered queue
of give and take operations based on actual availability.

Multi-Token Support

A transition to a single pool per chain with multi-token support –
replacing multiple isolated enclaves – is being considered for future
implementation. This would enable more efficient liquidity management
and unified accounting across assets with shared valuation logic, such
as stablecoins.

Risk Management

Flex Pools incorporate multiple mechanisms to reduce operational and
protocol-level risks across chains and integrations:

Event Validation and Finality Thresholds

All events are verified through the abstract IEventVerifier interface,
which delegates proof checking to the underlying oracle. The finality
threshold – the number of confirmations required before accepting a
proof – should be configured at the oracle level, allowing flexibility
per chain without modifying the verifier itself. This setting must
balance fast solver execution with protection against chain reorgs.

Event verifiers provide common event verification logic, which is
agnostic from taker implementation specifics. The verifier interface
requires a taker to provide basic components of an expected event:
emitter contract and chain, event topics and data, as well as a
proof (usually forwarded from call params). Event verifiers can be
upgraded, audited, or replaced independently, subject to governance via
a DAO voting or multisig. All changes may include time delays or staging
mechanisms to prevent sudden trust shifts and allow monitoring before
activation.

Liquidity Provider Scoping

In future versions, liquidity providers may define the set of takers or
providers they trust when depositing into a pool. For example, a
provider may choose to support only 1inch Fusion+, only Swaps.io, or
both. This trust scope is enforced during take operations, ensuring
that a provider’s capital is only used within approved execution flows.

Liquidity Buffers and Withdraw Queue

To protect solvency, each enclave maintains a buffer of available
liquidity. Withdrawals are placed into a queue when instant fulfillment
is not possible. This mechanism ensures that solver operations and
withdraw requests do not exhaust funds simultaneously.

Emergency Controls

Core contracts include pausability features for emergency response. In
case of unexpected behavior, security threats, or verifier failures, the
protocol can:

  • Pause take flows per enclave
  • Disable specific takers or verifiers
  • Temporarily restrict withdrawals

A dedicated emergency role may be authorized to execute critical pauses
instantly, enabling rapid response to active threats or ongoing attacks.

Fair Frontrunning-Resistant Rewards

The initial implementation is built on the ERC-4626 standard, which
inherently carries a frontrunning issue – where large deposits can
manipulate the share price to their advantage. To address this, our
roadmap includes the introduction of a time-based reward distribution
mechanism, based on insights from the 1inch team and their farming
contracts
design.

This mechanism will ensure that rewards are allocated continuously and
proportionally, based not only on the staked amount but also on the
duration of each deposit. By incorporating time-weighted distribution,
we aim to eliminate frontrunning incentives while preserving the core
mechanics of ERC-4626.

Fee Model

Each take operation incurs a fee calculated by the assigned tuner.
This fee can include:

  • Protocol fee, directed to the pool as retained value
  • Rebalance fee, if applicable. Used to incentivize rebalancers
    and maintain cross-chain liquidity balance
  • Solver reward, if applicable.

The exact structure is defined by the tuner assigned to the taker and
may be fixed, percentage-based, or dynamically calculated.

Liquidity providers earn returns through:

  • Accumulation of protocol fees within the pool
  • Optional yield from yield-bearing tokens or integrated LP positions
  • Potential partner incentives from integrated protocols

As the pool grows and is used more actively, the value of LP shares
increases, reflecting both base asset accumulation and system-level
integrations.

Ecosystem Growth

Flex Pools are designed as foundational infrastructure for the growing
ecosystem of intent-based protocols, enabling scalable cross-chain
execution with shared liquidity. The protocol is positioned to evolve
along multiple strategic directions:

Intent Protocol Integration

Flex Pools provide a universal liquidity infrastructure for different
protocols like Fusion+, Swaps.io, Across, Squid and others. Any project
can plug into the give/take model without managing its own inventory.

As user demand for intent-based execution grows across domains like
swaps, bridging, and automation, more protocols emerge to support these
flows, and more solvers enter the market seeking efficient access to
capital. Flex Pools serve as a shared liquidity layer for this expanding
ecosystem – the more protocols integrate, the more demand for solver
liquidity rises – driving organic growth of the pools themselves as LPs
respond to yield opportunities linked to real liquidity demand.

Project Bootstrapping

Projects can deploy native Flex Pools to bootstrap cross-chain liquidity
for their tokens, enabling seamless use across networks and protocols.
These pools allow solvers to access project tokens for execution,
supporting permissionless trading and automated rebalancing.

Flex Pools supports major standards – including OFT (LayerZero),
NTT (Wormhole), Warp (Hyperlane), CCT (Chainlink), ITS (Axelar),
xERC20, and more – enabling compatibility with external DeFi and
bridge infrastructure.

This approach lets projects make their tokens natively available across
chains, enabling seamless access and flexible exchange for users –
without relying on centralized market makers or delayed bridging
solutions.

Partner Pools

Flex Pools can integrate with partner liquidity pools, which can offer
users the option to auto-deposit their yield-bearing tokens into
existing Flex Pools that support those assets, enabling additional yield
from solver activity.

This creates a win-win dynamic:

  • Flex Pools attract liquidity from partner ecosystems
  • Partners enhance yield returns for their LPs
  • Providers earn dual yield with minimal setup

OpenIntents (ERC-7683) Support

Flex Pools are designed with forward compatibility for OpenIntents-based
protocols via an abstract IEventVerifier that validates standardized
Open events emitted as part of the OpenIntents specification. This
design allows solvers to interact with Flex Pools across any
OpenIntents-compliant protocol through a unified interface –
simplifying integration, enabling shared liquidity access, and reducing
the cost of supporting new protocols.

Beyond EVM

Flex Pools are designed to operate on any network with a programmable
VM. While initial deployments focus on EVM-compatible chains, expansion
to high-performance environments like Solana is a priority.


Source
Disclaimer: The content above is only the author's opinion which does not represent any position of Followin, and is not intended as, and shall not be understood or construed as, investment advice from Followin.
Like
Add to Favorites
Comments