buds

Ethereum · Uniswap v4 · goodbuds.club

better with a bud.

Two wallets pair up on chain. While you’re paired you both buy at a lower cut — and you both earn from either one’s trading.

Nothing is live yet. No contract · no pool · no sale. The address will be published here when there is one.

Fig. 1 — illustration, not live data
  • unpaired
  • paired
  • value moving

In one breath

A

Every buy pays a small cut. Pair up and yours gets smaller — and the cut everyone else pays comes back to you.

$BUDS takes a cut of the ETH going into every buy. If you are paired with another wallet, your buys pay the lower buddy rate instead of the standard one. Selling pays nothing, whether you’re paired or not.

Everything the pool collects is periodically spent on a real market buy of $BUDS, and those tokens are set aside for the wallets that were paired when the cut was taken — split evenly between the two buddies, whichever one actually did the trading.

Unpaired buys book nothing for anybody. Their cut still goes into the pot, so the people trading on their own are funding the people who bothered to pair up. That is the whole incentive: find someone, agree, and stop paying full price.

How pairing actually works →

Three steps

B
  1. Find a bud.

    One wallet proposes, the other accepts. A proposal on its own binds nobody — nothing happens until both sides have spoken, and you can pull your offer back at any point before it is taken. One bud at a time.

  2. Buy cheaper, together.

    From then on your buys pay the buddy rate. Both of you do — it is not a referral, there is no upline, and neither of you has to trade for the other to keep the discount. The rate is fixed when the contract is deployed and cannot be changed afterwards.

  3. Split what the club collects.

    Every paired buy books an entitlement for both of you — half each, regardless of who pressed the button. When the pot is spent on $BUDS, your share lands in an escrow you pull from whenever you want.

Where the money actually moves

C
01 / The cut

Held, not pushed

A slice of the ETH on every buy is kept by the hook as a claim against Uniswap’s PoolManager rather than transferred anywhere. A buy can therefore never fail on the fee. Sells contribute nothing.

02 / The lever

Anyone can pull it

splitPot() is permissionless and rate-limited by a cooldown. It spends a capped, slippage-bounded amount of that ETH on a market buy of $BUDS and pays whoever called it a small tip out of the tokens it bought.

03 / The book

Only pairs count

A paired buy books entitlement for both buddies, half and half. An unpaired buy books none at all, though its cut still went into the pot. Entitlement only ever grows — nothing in the contract takes it away.

04 / The escrow

You pull yours

The bought $BUDS sits in a separate contract and waits. Nothing is ever pushed at you, which is exactly why a bud who goes quiet, or whose wallet can no longer receive, can never hold up your claim.

The token

D
Supply
1,000,000,000 BUDS

Minted once, in the constructor, and that is the only mint in the contract. Standard ERC-20 with permit, 18 decimals.

Venue
One ETH / BUDS pool on Uniswap v4

Tick spacing 100, dynamic fee. The pool is created and seeded in a single transaction, so it never exists in an empty, mispriceable state.

What you pay
A cut of the ETH leg of a buy

Sells pay nothing. The contract caps the cut at 5% and will not deploy at all unless the buddy rate is above zero and strictly below the standard rate — the discount is structural, not a promise.

What you earn
$BUDS, bought on the open market

The pot is not distributed as ETH. It is spent buying $BUDS through the same pool everybody else trades in, and those tokens are escrowed for paired wallets.

Why anyone would want it
Because being paired pays while others trade

Holding $BUDS on its own earns nothing. Being one half of a pair earns from every buy the pool sees, including the buys of people who never pair. There is no yield from anywhere outside that fee, and nobody is promising a price.

Not chosen yet
Every rate and every cooldown

The standard rate, the buddy rate, the caller’s tip, the slippage bound, the per-split ETH cap, the split cooldown and the pairing cooldown are all constructor arguments, and none of them have been decided. They will be on this page before the pool opens.

Read this part

E
Limit 01

Your wallet has to be the wallet that signs.

A Uniswap v4 pool tells a hook which router is calling it, not who is behind the router. $BUDS therefore identifies you by tx.origin — the account that actually signed the transaction.

If you trade from a smart-contract wallet, or through an ERC-4337 bundler, the hook sees your bundler or relayer instead of you. You will pay the standard rate and book no entitlement, even if your account is correctly paired. There is no workaround in this version — covering account abstraction needs a signed-intent path through the swap data, which is a redesign, not a patch. Trade from a plain EOA.

Limit 02

Either of you can walk, and then you both sit out.

Unpairing is one call and either buddy can make it. It does not need the other one’s agreement, and it puts both wallets into the pairing cooldown — so the buddy who didn’t leave is locked out of pairing again for just as long.

That is deliberate: cooling both sides is what stops people churning through partners to farm the discount. Pick someone you would actually stay paired with. What you have already earned is never taken back — walking away stops new entitlement accruing, it does not confiscate the old.

Where this stands

F

$BUDS has not launched. There is no contract address, no pool, no liquidity, no presale and nothing to buy. Any address, group or sale claiming to be $BUDS today is not this.

The contracts are written and carry a suite of 108 passing tests, including stateful invariants over the pairing graph and the escrow book. That is internal work by the people who wrote it. No independent external audit has been carried out.

When it does launch, the address will appear on this page and on this domain only. Nothing here quotes a live number, because there is no chain state to quote.

Read the pairing mechanics in full →