When you swap two tokens through a website, the screen, the signature prompt, and the place that actually holds both balances look like one product because they share a logo.
The mix-up starts as soon as the tab closes or the prompt names a contract you never typed. Closing the browser leaves the inventory where it was, and signing a payload is a different action from putting tokens into the pair that prices the trade.
Automated market makers keep those two balances in pool contracts on a chain, and around the pools sit a front-end, a signer, a hosted quote service, and supporting contracts that can compose several pool versions in one transaction.
Uniswap's ecosystem is that surrounding set, and what Uniswap is already names the AMM. The Labs web app, the wallet that signs, the Trading API, Universal Router, Compact, the smart-wallet implementation, and Liquidity Launchpad sit in that set, without ranking those pieces as an app store.
The click hits a router around the pools
When you confirm a swap, the wallet signs a transaction to a router that sits around the pools. The AMM contracts still hold the two balances and execute the swap, and the router is supporting infrastructure that composes the call.
Uniswap docs describe a suite of onchain protocols whose core is the automated market maker contracts, meaning the pool contracts that hold liquidity and execute swaps. Supporting protocols around them handle routing, token approvals, resource locking, smart wallet delegation, and fee distribution (source: Uniswap Docs, Protocols overview). The screen is how you aimed, the pool is where inventory sits, and the router is the call path in between.
| Piece | What you see | What it holds |
|---|---|---|
| Interface | The swap card in a browser | None of your tokens |
| Wallet | The signature prompt | Your keys and balances, if it is self-custody |
| Router | A contract address on the review screen | Tokens only while the call runs |
| Pool | The pair and the fee tier | The inventory that prices the swap |
Suppose you later read "Uniswap" on that review screen and think the pool itself popped the wallet. The prompt is for a router execute (or a similar aggregator path), then the router talks to v2, v3, or v4 as the plan says. If you confirm a 200 USDC swap, that USDC still ends in the other token because a pool's balances moved. The website held none of that USDC as a deposit, and the router kept none of it after the call, so the pool did the pricing.
The generic lesson of how AMMs work is the pool side, and Uniswap still prices from reserves. The production fact is that a live swap is often a composed call. A failed signature spends zero from the pool, while a confirmed swap still needs gas on the chain you selected.
How Ethereum works is the chain picture for that gas, because ETH (or that chain's gas token) pays the call even when the pair is USDC and UNI. An empty gas balance can revert a quote that looked fine on the card, which is the chain refusing a call the router never finished.
You can use a different front-end tomorrow and still hit the same pools, if that front-end encodes a legal call and you can pay gas. The logo on the tab is a software label. The next piece is the tab itself: Labs software, sitting on the AMM.
The Labs interface is a front-end
The Uniswap web app is a front-end Uniswap Labs ships, and you use it to pick a pair, read a quote, and send the wallet a payload. Closing that tab leaves every pool in place, and another interface can still call the same contracts if the chain is live.
The public repository for Uniswap Labs' front-end interfaces includes the Web App, Wallet Mobile App, and Wallet Extension. The Web App is one of those interfaces: code in a browser, pointed at app.uniswap.org in the public README (source: Uniswap Labs, interface repository).
Wikipedia's product line matches that access sketch from the encyclopedia side: a trading API for professional users and a web interface sit beside a self-custodial mobile wallet. Treat that as a list of access products.
Labs builds software on top of the contracts, and the protocol is those contracts. How those two names (plus Foundation and DUNI) stay separate is the later page on Labs versus the protocol. The split here is smaller: you can open Labs' site, or you can open some other site that talks to Uniswap pools, because matching the unicorn is a brand match.
You still have to read the review screen, because an interface can route through UniswapX, a bridge, or several hops, then still show the same brand. The pool version, the pair, and the spender are on the wallet prompt, so if the prompt names a router you have never seen, that is a different contract than the homepage. Custom links that pre-fill app.uniswap.org are still this front-end, and they become a swap only after a wallet signs.
A UNI line on an exchange ledger is a venue balance, and it skips the Labs session. BloFin has listed UNI/USDT on spot since January 15, 2024, 11:00 UTC.
BloFin lists two UNI perpetuals: UNIUSDT at up to 75x, listed January 12, 2023, 10:00 UTC, and UNIUSD, an inverse contract settled in UNI, at up to 20x, listed June 27, 2025, 10:00 UTC. A fill on those books skips Universal Router, Compact, and Calibur, because the interface is optional software around a competing DEX. The next piece is the signer that actually confirms.
The wallet that signs
A wallet holds keys (or a passkey) and signs the payload the interface built, and Uniswap Wallet is Labs' own mobile app and browser extension. Connecting MetaMask, Rabby, or another signer to the web app leaves Uniswap Wallet uninstalled, even though both can swap against the same pools, because they remain two products.
The public interface repo names a mobile app and a browser extension beside the Web App, with wallet.uniswap.org as the wallet entry, which is Labs software again, sitting on the protocol. How crypto wallets work is the generic signer lesson, and here the Uniswap-specific cut is which Labs product you opened.
The web app can also create an in-app wallet, which Labs support describes as a crypto wallet built directly into the Uniswap web app, living in the browser. Support says you can later graduate it to the Uniswap Mobile Wallet or the Uniswap Extension. Solana stays off in-app wallets in that article, which is a product limit.
Self-custody still means you (or your passkey) control the signer, and what self-custody is is the category page. A CEX UNI balance is a venue credit, so it stays off a Uniswap Wallet prompt and stays off a Tally vote until it sits in an address the governor can see. Mixing those two "wallets" is how people think they already signed a pool swap while the tokens never left the exchange.
Treat a Uniswap-branded wallet as a signer: it signs, it may batch, and it may hide gas behind a bundler on some flows, while the pool still has to exist on the chain you selected. A smart-wallet mode that keeps your old address is a later heading. First hold the split: the interface aims, the wallet signs, and the pool prices.
If you want to skip a Labs wallet, you can keep an external signer and only use the web app as a quote card, which is already two products, while a third path skips the browser entirely.
The Trading API returns calldata
The Uniswap Trading API is a hosted service, so an app asks it for a route and encoded transaction data while your tokens stay in your wallet until you sign. The API is a quote and encoding host, even when the payload it returns later calls that router.
Docs walk the flow as check approval, quote, then swap for the encoded call, and they put wallet signing and onchain submission on your application, through your own signer or remote procedure call (RPC) provider. Custom linking is the other low-lift path: a URL that opens the web app with the pair filled in (source: Uniswap Docs, Trading overview).
That is why "Uniswap API" in a marketing screenshot is easy to over-read. A quote can hop v2, v3, v4, and UniswapX in the routing story, while the signed thing is still a transaction you (or your app) broadcast. If the host is down, a builder can still talk to contracts another way, and if the host is up, it still spends your USDC only after a signature that grants a spender.
Ethereum smart contracts is the generic "code on chain" lesson, and the Trading API sits offchain and hands you bytes that later hit onchain routers or reactors. Reading a JSON quote is a plan, because settlement is a transaction hash on the chain you picked.
An SDK path computes more of that locally, and direct contract calls skip the host, which are integrator choices. The holder fact is enough: an API key in some bot is separate from custody of your UNI, and a BloFin fill never waited on that host. The plumbing those payloads often aim at is the Universal Router, with Compact as a different kind of lock beside it.
Universal Router and Compact sit beside the pools
Universal Router is the swap aggregator contract Labs documents as the programmatic entry, and Compact is a separate ownerless contract for resource locks. You can use the first on an ordinary swap and skip the second, because neither contract is the pool that holds the pair.
The UniversalRouter is an ETH and ERC-20 swap router that aggregates trades across Uniswap v2, v3, and v4, and docs describe it as unowned and non-upgradeable. You call execute with a command byte string and a matching inputs array, so commands can wrap ETH, talk to Permit2, hop versions, and check balances in one transaction. New integrations are told to target this router. Addresses differ by chain and version, so a mainnet address pasted onto another chain is the wrong contract (source: Uniswap Docs, Universal Router overview).
Permit2 is the allowance helper that router uses for ERC-20 pulls, so you often approve Permit2 once per token, then sign time-bound permissions for the router, while native ETH skips Permit2. That approve is a spender grant. A scams page in this cluster covers fake Permit2 prompts, and here the ecosystem fact is only that the grant sits beside the swap.
The Compact is an ownerless ERC-6909 contract that facilitates the voluntary formation and mediation of reusable resource locks, which lets tokens be credibly committed, then claimed once conditions are met. Sponsors deposit tokens to create locks, then sign or register compacts that name when those locked tokens can be claimed. A lock is a committed balance waiting on conditions, including cross-chain flows the docs describe.
If you later see "Compact" on a review screen, ask whether you are locking inventory for an intent. UniswapX as a filler auction is a different product and a different page, and Compact can sit under cross-chain settlement while remaining a lock contract. Treat a resource lock as a committed balance.
The two names belong in the same heading because holders mix Uniswap plumbing into one blob: the router composes swaps, Compact commits locked tokens, and pools still hold AMM inventory. The leftover Labs products are a smart-wallet implementation and a launchpad that seeds a pool after an auction, plus four org names that belong on later articles.
Smart wallet, launchpad, and four entity names
Uniswap smart wallet features run on Calibur, an EIP-7702 implementation, and Liquidity Launchpad is a Continuous Clearing Auction that later seeds a Uniswap v4 pool. Labs, the protocol, the Foundation, and DUNI route to later articles, which is a name map.
Uniswap smart wallet features are powered by Calibur as a contract implementation designed for EIP-7702, deployed to the same address across supported networks, non-upgradeable and ownerless. Users delegate through EIP-7702 and keep the same EOA address and onchain history, so batched calls can approve and swap in one flow, and gas abstraction can let a bundler handle fees. That is still your address.
The launchpad has a different purpose: the Uniswap Liquidity Launchpad is a framework for bootstrapping initial liquidity for Uniswap v4 pools through transparent price discovery. A Continuous Clearing Auction sells tokens over a window, then a strategy migrates proceeds into a v4 pool after a migration block, so bidding in that auction is a different action from swapping in a pool that already exists. The pool may stay dark until migrate() runs, which is a heading.
Who built Labs, and what Labs is, sits with who created Uniswap, and DUNI as Wyoming legal wrapper sits with DUNI's legal structure.
Version dates sit in Uniswap history and versions. Terms that keep colliding (hook, UniswapX, Unichain, TokenJar) belong in the Uniswap glossary.
Holders have zero individual or pro-rata claim on Uniswap protocol fees from UNI on an exchange balance, and they have zero such claim from UNI in a wallet either, while fee-switch depth is a later node.
You can keep using the Labs front-end, an external wallet, or neither. The ecosystem is the set of pieces around the pools, which is a map of those pieces.
Frequently asked questions
If I approved Permit2 once, does every later Uniswap swap skip my wallet popup?
Each swap still needs a signature, or a session rule your wallet already granted, that lets the router pull now, because a one-time ERC-20 approve to Permit2 only sets a spender. Closing the Labs tab leaves that onchain approve in place. A hardware wallet can still ask you to confirm the next execute, and an in-app session can expire and ask for the passkey again even when Permit2 already sits on the token. Treat the first approve as plumbing.
If Calibur uses the same contract address on every chain, is my Ethereum history visible on Unichain?
Each chain keeps its own state, and the same deployment address across chains is so the implementation hex matches. An Ethereum explorer entry stays off Unichain because you delegated there, so you can hold UNI on one chain and zero on the other under that same hex. Matching the Calibur address matches bytecode placement, which is why you pick the network in the wallet before you treat a zero as a lost seed. A Unichain tx hash pasted into an Ethereum explorer is the wrong ledger, even if the Calibur hex looks identical.
If my onchain Labs swap reverts, does that undo a UNI/USDT fill I already got on BloFin?
The BloFin fill is a venue book match, and it already credited or debited your exchange ledger. A later router call that reverts spends gas on the chain and leaves pool balances as they were for that failed call, so it leaves BloFin's book untouched. You can hold a successful UNI/USDT line and a failed Labs swap in the same afternoon because they are two products, and support on either side leaves the other fill in place. Withdrawing UNI later to retry the pool swap is a third action.
Can I deposit a Compact ERC-6909 id into a Uniswap v3 position as if it were UNI?
The 6909 id is the lock's own token, and a v3 mint wants the underlying pair tokens the pool lists, so sending the lock id into a UNI/USDC pool is the wrong asset. The mint should fail, or it takes a junk token if someone listed that id as a fake pair. Claiming under compact conditions returns the underlying, which is a later claim step, and until then the lock is committed inventory the AMM prices only if someone listed that id as the pair asset. Treat the 6909 balance as the lock.
After Liquidity Launchpad migrate() runs, can I still cancel my CCA bid?
Canceling a bid is an auction-window action, and after migrate() has initialized the v4 pool from proceeds, those tokens sit in pool positions. You would exit by trading the seeded pool, or by whatever claim path that launch used, because a filled auction record is separate from a v3 NFT you can decreaseLiquidity on. Mixing the two phases is how people think they can still cancel inventory that already prices swaps, so watch whether migrate() has run before you treat remaining tokens as a live bid.
If the Trading API times out after I already broadcast, did the swap undo?
Once you signed and broadcast, the chain has the payload, and the API host going down leaves that transaction in flight, so a later host error on quote only blocks a new request. Watch the tx hash on the explorer, because if the broadcast never left your signer there is nothing to unwind. Mixing host errors with chain settlement is how people double-send, and a second quote after a timeout can encode a second swap if the first already landed.
If I have Uniswap Extension and MetaMask both installed, which one spends ETH when I confirm in MetaMask?
MetaMask does, because that is the signer that received the payload, and installing Uniswap Extension leaves gas accounts unmerged. The web app talks to whichever connector you picked for that session, so ETH for gas comes from the address that signs. You can have UNI in the Extension and still pay gas from MetaMask if that is the connected account. Read the from-address on the prompt, because closing the Extension leaves a MetaMask-signed call already in flight.
Researched and written by the BloFin Academy editorial team with AI-assisted drafting. Updated September 2026. Primary sources include the Uniswap protocols overview, Universal Router and Compact docs, the smart wallet and Trading API overviews, the Liquidity Launchpad overview, the Labs interface repository, Uniswap Labs support on in-app wallets, and BloFin instrument endpoints. All facts independently verified against cited documentation current as of September 2026.
This article is educational and general in nature, not financial or investment advice. Cryptocurrencies like UNI carry real risks, including price volatility, venue risk, smart-contract exploits in ecosystem apps, and the chance of losing funds. Nothing here is a recommendation to buy, sell, hold, or participate in any project. Do your own research, and consider speaking with a licensed professional before making financial decisions. BloFin does not provide investment advice.
