How to create a Uniswap V4 liquidity pool — with real money, start to finish
To create a Uniswap V4 liquidity pool you open the Create Position page, pick your two tokens, choose a fee tier (I used 0.3%), set the starting price, pick a range (full range for a brand-new token), add your tokens, and sign. The pool goes live in one transaction and your position is minted as an NFT. In this guide I do it for real on Arbitrum — a live DFR/USDC pool for the DAOForum DAO, funded with $500 of my own money and 100,000 DFR released by an on-chain vote — then do a real swap so you can watch the price move on-chain.
Everything here is verifiable. No testnet, no fake numbers.
What we're building (and why it's a big deal)
A token with no liquidity pool isn't really tradeable — there's no price and no way to buy or sell without finding a counterparty by hand. A liquidity pool fixes that: you deposit two tokens into a smart contract, and from that moment anyone can swap between them at a price the pool calculates automatically. That's what a decentralized exchange (DEX) like Uniswap actually is — a wall of these pools.
For DAOForum, this is the step where our token, DFR, becomes a real, on-chain, tradeable asset for the first time. Here's the honest shape of it:
- The DFR side (100,000 DFR) did not come from my pocket. It was released from the DAO treasury by an on-chain vote — Proposal #1 — so the community authorized this liquidity, not me. (Full walkthrough of that vote is in the earlier guides.)
- The USDC side ($500) is my own personal money — a founder loan into the pool to give DFR real value from day one, without touching the DAO's funds.
- The liquidity ends up owned by the DAO. The pool position is an NFT, and I later transfer that NFT to the DAO's treasury so the liquidity can only ever be moved by a community vote. That's the anti-rug guarantee, enforced by the contracts themselves. (That transfer is the next guide.)
Before you start (prerequisites)
- A token that exists on-chain with a supply you control. For us that's DFR on Arbitrum — see How to Launch Your Own DAO for Free.
- The tokens you'll actually deposit, sitting in the wallet you'll use. In my case: 100,000 DFR (released via Proposal #1 to the LP wallet) and $500 USDC bridged to Arbitrum.
- A wallet. I signed on my phone with Rabby. Any Arbitrum-capable wallet works.
- A little ETH on Arbitrum for gas. Pool creation on Arbitrum costs roughly a dollar in total — a fraction of what the same thing costs on Ethereum mainnet.
One habit that will save you: type the URL yourself
Before anything else — I always type crypto site names into the browser myself (uniswap.org), never click a link from search ads, DMs, or random posts. Scammers buy look-alike domains and clone the whole interface to drain wallets. This one habit prevents most phishing losses. Do it every time, for every crypto site.
Step-by-step: create a Uniswap V4 pool
- Open the Create Position page. On uniswap.org, go to Pool → New to start a brand-new position.
- Choose the first token. Because our DAO lives on Arbitrum, I select Arbitrum first to filter the list, then pick USDC as one side of the pair. (Why USDC and not ETH — see the section below; it's a deliberate choice.)
- Add your own token by its contract address — safely. DFR won't be in the dropdown, so I paste its contract address:
0x1213ef544a8204af79f416178cede4aaa6bb8ae2. Crucially, I get that address from a source I trust — I open our DAO on OpenBook, go to the Treasury, open it in the block explorer, and copy the token contract from there. Never trust a token address from a random search result — that's how people get tricked into adding liquidity to a fake copy. - Choose the fee tier: 0.3%. This is the cut the pool charges on every swap and pays to whoever owns the liquidity. Since our position NFT will belong to the DAO, the DAO earns 0.3% of every trade. Concretely: a $100 buy of DFR sends about $0.30 to the treasury. Every trade quietly funds the DAO.
- Set the starting price. For a brand-new pool you're literally defining the token's first price. I set 1 DFR = $0.005 (half a cent). Read the "market cap means nothing" section below before you pick yours — this is where people fool themselves.
- Choose the range: full range. Because this is a brand-new pool with no trading history, I use the full range so the liquidity works at any price. (Concentrated ranges are a later optimization once there's real volume.)
- Enter the amounts and review. I add all 100,000 DFR and $500 USDC. Don't panic if the USDC figure shifts by a few cents when you type it — that's just Uniswap snapping your price to the nearest tick on its pricing curve. It's normal.
- Connect your wallet and sign. I connect Rabby on my phone. Both USDC and DFR support signature-based approvals, so instead of sending a separate on-chain "approval" transaction (the way a token like USDT needs), I just sign messages through Permit2 — cleaner and cheaper. The sequence is: sign the DFR permit, sign the USDC permit, sign Uniswap's pool-creation message, then confirm the one real transaction that actually creates the pool on-chain.
- Done — the pool is live. Refresh and your position appears. A position NFT lands in your wallet representing your ownership of that liquidity. For DAOForum this is position NFT
#188048.
The honest part: why a big "market cap" means nothing
When you set the starting price, you control the token's headline "market cap" — and this is exactly where a lot of people lie to themselves.
Technically, I could have set the price at $100,000 per DFR. With 10,000,000 tokens, my "market cap" would read in the hundreds of billions. It would also be completely meaningless. A market cap is just (price you typed) × (number of tokens). It is not money, and it is not value. Nobody has to buy at that number — and nobody would. People are not stupid; they won't buy your token just so you can dump it on their heads.
So let me be blunt, the same way I am in the video: if you came to crypto only for money, the only way that mindset makes money is by scamming people. That's not what we're doing here. We priced DFR at half a cent, which puts DAOForum's market cap at an honest $50,000 (10,000,000 × $0.005). Small, real, and something we can grow by actually being useful.
Why pair with USDC instead of ETH?
DFR is paired with USDC, a dollar stablecoin, on purpose. It gives the token a stable, dollar-denominated price: $0.005 today means $0.005 next month, regardless of where ETH goes. That keeps the price legible for newcomers and keeps every reward figure honest (an accepted forum post ≈ $10 stays ≈ $10). If we'd paired with ETH, the DFR price would wobble with ETH's chart even on days nobody traded DFR at all. There are trade-offs either way — if you want to go deep on USDC vs ETH pairs, come argue it out with us on the forum.
Where the money comes from (the founder loan, recorded honestly)
This is the accounting part people skip. Two different sources funded this pool, and keeping them separate matters:
- 100,000 DFR — from the DAO treasury, via Proposal #1. The community's tokens, released by an on-chain vote. Not mine to give.
- $500 USDC — my personal money, as a loan to the effort. I add the dollar side myself so the DAO doesn't spend its runway just to bootstrap a price. It's recorded as a founder loan, not a gift and not a treasury expense — so if the DAO ever repays it, the books already say so.
Notice what I didn't do: I never put my own 100,000 DFR governance tokens into the pool. Tokens locked inside a Uniswap pool can't vote, and our contracts require 1% (100,000 DFR) to meet quorum — so depositing them would have frozen the DAO's governance. The founder's 1% stays out of the LP, as a permanent governance key.
Verify it yourself, then a live swap
The whole point of doing this on-chain is that you don't have to take my word for it:
- Pool ID (Uniswap V4):
0xb2c76ed39b128ba7a5c39b5ccd727270b0639509e24627ad19853afbd8fdbbe3 - Chart (DexTools): DFR/USDC pair explorer →
- Pool creation tx: 0x3e9a2eb4…6596cbfe on Arbiscan →
- Uniswap token page: DFR on Uniswap →
Note on Uniswap V4: unlike v2/v3, V4 has no separate contract address per pool. Every pool lives inside one shared contract and is identified by its pool ID (above); your liquidity is the position NFT.
To prove it works, I did a real swap — a small USDC → DFR trade (first swap tx →). Watching DexTools on the side, the trade and the new price appeared instantly.
How the price moved by itself: the AMM in one paragraph
The moment that swap landed, the price updated on its own. That's why it's called an Automated Market Maker (AMM): there's no order book and no middleman. The pool holds a balance of both tokens, and a formula keeps their relative value in line — buy DFR and you remove DFR from the pool and add USDC, so DFR gets slightly more expensive; sell and the opposite happens. Just math, balancing the pool on every trade.
Key takeaways
- Creating a Uniswap V4 pool = pick two tokens, choose a fee tier, set the starting price, pick a range, add tokens, sign. One transaction and it's live.
- A new pool sets the token's first price — and a big "market cap" is just a number you typed, not value. Price it honestly.
- Full range is the right default for a brand-new token; 0.3% fees flow to whoever owns the position — for us, the DAO.
- Get token addresses from a trusted source (the block explorer via your DAO), never from search results.
- Uniswap V4 positions are NFTs and approvals go through Permit2 — you sign messages instead of sending extra approval transactions.
- Our pool is real: 100,000 DFR (DAO treasury, via vote) + $500 USDC (founder loan), live on Arbitrum, verifiable on Arbiscan and DexTools.
What's next
Right now the pool's position NFT is in my wallet — which means, technically, I could pull the liquidity. That's not good enough for a DAO. In the next guide I transfer the position NFT to the DAO's treasury, so the liquidity becomes governance-owned and can only be moved by an on-chain vote: How to Transfer a Uniswap LP Position to Your DAO →
DAOForum build-in-public series
- Launch Your Own DAO for Free
- Register a DAO on OpenBook
- Create a DAO Proposal
- Vote on DAO Proposals
- Queue & Execute Proposals
- Record DAO Treasury Transfers
- Create a Uniswap V4 Liquidity Pool (you're here)
- Transfer the LP Position to the DAO
This is a real, on-chain case study of the DAOForum DAO itself. Not financial advice — an honest, verifiable walkthrough of how DeFi tooling actually works. If you're into blockchain and decentralized governance, come build with us at daoforum.org.
Last edited: