# Uniswap Protocols Overview (/docs/protocols/overview)

Navigate the Uniswap protocol documentation, from the core AMM versions to supporting infrastructure contracts.

## Protocols
Uniswap is a suite of onchain protocols. At its core are the automated market maker (AMM) contracts, the pool contracts that hold liquidity and execute swaps. Surrounding them are supporting protocols that handle routing, token approvals, resource locking, smart wallet delegation, and fee distribution.

This page helps you orient within the protocol documentation and find the right starting point for your integration.

## AMM Protocols
The AMM is the heart of Uniswap. Each version introduced architectural changes that improved capital efficiency, composability, and gas costs. **Uniswap v4 is the current and recommended version for new integrations.**

## Uniswap v4
v4 consolidates all pools into a single `PoolManager` contract and introduces [hooks](/docs/get-started/concepts/hooks), external contracts that can customize pool behavior at every stage of its lifecycle (initialization, swaps, liquidity changes, fee logic). It uses [flash accounting](/docs/protocols/v4/concepts/flash-accounting) to defer token transfers until the end of a transaction, enabling significant gas savings for multi-step operations.

v4 is the most flexible and gas-efficient version of the protocol. If you are building a new integration, start here.

| Resource     | Link                                                                                                                                                                                               |
| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Concepts     | [Hooks](/docs/protocols/v4/concepts/hooks), [Flash Accounting](/docs/protocols/v4/concepts/flash-accounting), [Dynamic Fees](/docs/protocols/v4/concepts/dynamic-fees)                             |
| Guides       | [Set Up Environment](/docs/protocols/v4/guides/hooks/getting-started), [Build Your First Hook](/docs/protocols/v4/guides/hooks/your-first-hook), [Security Framework](/docs/protocols/v4/security) |
| SDK          | [Uniswap v4 SDK docs](/docs/sdks/v4/overview)                                                                                                                                                      |
| Deployments  | [Uniswap v4 addresses](/docs/protocols/v4/deployments)                                                                                                                                             |
| Repositories | [v4-core](https://github.com/Uniswap/v4-core), [v4-periphery](https://github.com/Uniswap/v4-periphery)                                                                                             |
| Audits       | [Core audits](https://github.com/Uniswap/v4-core/tree/main/docs/security/audits), [Periphery audits](https://github.com/Uniswap/v4-periphery/tree/main/audits)                                     |

## Other AMM Versions
- **[Uniswap v3](/docs/protocols/v3/overview)** — Concentrated liquidity with NFT positions. Use for existing integrations and v3-specific workflows.

  - **[Uniswap v2](/docs/protocols/v2/overview)** — Original constant-product AMM. Good for fundamentals and legacy integrations.

## Supporting Protocols
Beyond the AMM, Uniswap relies on a set of infrastructure contracts that handle routing, approvals, fee distribution, and more. These protocols are used across multiple AMM versions and are important for production integrations.

## Universal Router
The Universal Router is an unowned, non-upgradeable contract that composes swaps across Uniswap v2, Uniswap v3, and Uniswap v4 in a single transaction. It uses a command-based encoding system and integrates with Permit2 for signature-controlled token approvals.

If you are executing swaps programmatically, the Universal Router is the recommended entry point.

[Universal Router documentation](/docs/protocols/universal-router/overview)

## Permit2
Permit2 unifies signature-based token transfers and time-bound allowances into a single contract. It is used by the Universal Router, the `PositionManager`, and other Uniswap contracts to reduce repeated approval transactions and improve security.

[Permit2 documentation](/docs/protocols/permit2/overview)

## Protocol Fees
[Fees](/docs/get-started/concepts/fees#protocol-fees) from all Uniswap protocol versions flow through Fee Adapter contracts into a per-chain TokenJar. Releaser contracts define how collected fees are accessed, for example, the Firepit Releaser burns UNI in exchange for collected assets.

[Protocol Fees documentation](/docs/protocols/protocol-fee/overview)

## The Compact
The Compact is an ownerless ERC-6909 contract that enables [resource locks](/docs/protocols/the-compact/concepts/resource-locks), tokens that are credibly committed for asynchronous conditions and claimed once those conditions are met. It supports single-chain and multichain flows and is used in cross-chain coordination.

[The Compact documentation](/docs/protocols/the-compact/overview)

## Smart wallet (Calibur)
Uniswap smart wallet features are powered by Calibur, a non-upgradeable contract implementation for EIP-7702 delegation. Users delegate to the implementation while keeping their existing EOA address.

[Smart Wallet documentation](/docs/protocols/smart-wallet/overview)

## Security
Uniswap Labs maintains an active bug bounty program on Cantina for eligible vulnerability disclosures.

[Uniswap Bug Bounty Program](https://cantina.xyz/bounties/f9df94db-c7b1-434b-bb06-d1360abdd1be)

## FAQ
<details>
  <summary>
    Which Uniswap protocol version should I use for a new integration?
  </summary>

    Uniswap v4 is the current and recommended version for new integrations. It consolidates all pools into a single `PoolManager` contract, supports [hooks](/docs/protocols/v4/concepts/hooks) that customize pool behavior across the pool lifecycle, and uses [flash accounting](/docs/protocols/v4/concepts/flash-accounting) to defer token transfers until the end of a transaction, which reduces gas for multi-step operations.

    Use [Uniswap v3](/docs/protocols/v3/overview) for existing concentrated liquidity integrations and [Uniswap v2](/docs/protocols/v2/overview) for legacy constant product workflows.
</details>

<details>
  <summary>
    What is the difference between the Uniswap AMM and its supporting protocols?
  </summary>

    The AMM contracts are the pool contracts that hold liquidity and execute swaps, versioned as Uniswap v2, v3, and v4. The supporting protocols are infrastructure contracts used across versions:

    * [Universal Router](/docs/protocols/universal-router/overview): composes swaps across v2, v3, and v4 in a single transaction.
    * [Permit2](/docs/protocols/permit2/overview): signature-based token transfers and time-bound allowances.
    * [Protocol Fees](/docs/protocols/protocol-fee/overview): Fee Adapter and TokenJar contracts that collect protocol fees.
    * [The Compact](/docs/protocols/the-compact/overview): ERC-6909 resource locks for cross-chain coordination.
    * [Smart wallet (Calibur)](/docs/protocols/smart-wallet/overview): EIP-7702 delegation for smart wallet features.
</details>

<details>
  <summary>
    Which contract should I use to execute Uniswap swaps programmatically?
  </summary>

    The [Universal Router](/docs/protocols/universal-router/overview) is the recommended entry point for executing swaps programmatically. It is an unowned, non-upgradeable contract that composes swaps across Uniswap v2, v3, and v4 in a single transaction using command-based encoding, and it integrates with [Permit2](/docs/protocols/permit2/overview) for signature-controlled token approvals.
</details>

<details>
  <summary>
    Are the Uniswap protocol contracts audited?
  </summary>

    Yes. The Uniswap v4 [core audits](https://github.com/Uniswap/v4-core/tree/main/docs/security/audits) and [periphery audits](https://github.com/Uniswap/v4-periphery/tree/main/audits) are published in their repositories, and Uniswap Labs maintains an active [bug bounty program on Cantina](https://cantina.xyz/bounties/f9df94db-c7b1-434b-bb06-d1360abdd1be) for eligible vulnerability disclosures.
</details>

<details>
  <summary>
    Where do I find Uniswap contract deployment addresses?
  </summary>

    The [unified deployments page](/deployments) lists Uniswap contract addresses across all protocols and chains. Each protocol section of the docs also has its own deployments page; for example, [Uniswap v4 addresses](/docs/protocols/v4/deployments) are on the v4 deployments page, and the [smart wallet deployments page](/docs/protocols/smart-wallet/deployments) lists the Calibur address across supported networks.
</details>
