DAO:DFR Create a Uniswap V4 Liquidity Pool (Real Money, On-Chain)

Diornov

Mod
Staff member

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.



The DFR token contract on Arbiscan.png

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​


  1. Open the Create Position page. On uniswap.org, go to Pool → New to start a brand-new position.
  2. 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.)
  3. 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.
  4. 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.
    0.3% fee tier selection screen in Uniswap v4
  5. 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.
  6. 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.)
    Token Price And Tange Configuration in Uniswap V4
  7. 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.
  8. 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.
    Permit2 Signature Uniswap V4
  9. 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 live position on Uniswap v4

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​

DexTools Graph

The whole point of doing this on-chain is that you don't have to take my word for it:


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
  1. Launch Your Own DAO for Free
  2. Register a DAO on OpenBook
  3. Create a DAO Proposal
  4. Vote on DAO Proposals
  5. Queue & Execute Proposals
  6. Record DAO Treasury Transfers
  7. Create a Uniswap V4 Liquidity Pool (you're here)
  8. 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:
Back
Top