尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Trench — B20 launchpad on Base. ETH or stock-paired launches.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Instant B20 launchpad on Base.
One transaction creates an admin-less B20 (1,000,000,000 supply) and seeds a locked Uniswap v4 pool against ETH or a Base stock B20.
Every swap pays 1% of the quote asset (ETH, or the stock you paired against):
No referrer → the 20% goes to the platform. For the first 20 seconds the total fee starts at 99% and decays to 1%; the extra above 1% is anti-snipe and goes to the platform.
Launch is free — Base gas only. No protocol creation fee.
Claim from Profile → Claim fees. Balances sit in TrenchEscrow until claimed.查看完整 README ↗Instant B20 launchpad on Base.
One transaction creates an admin-less B20 (1,000,000,000 supply) and seeds a locked Uniswap v4 pool against ETH or a Base stock B20.
Every swap pays 1% of the quote asset (ETH, or the stock you paired against):
| Recipient | Share of the 1% |
|---|---|
| Creator | 50% |
| Platform wallet | 30% |
| Referrer | 20% |
No referrer → the 20% goes to the platform. For the first 20 seconds the total fee starts at 99% and decays to 1%; the extra above 1% is anti-snipe and goes to the platform.
Launch is free — Base gas only. No protocol creation fee.
Claim from Profile → Claim fees. Balances sit in TrenchEscrow until claimed.
| Contract | Role |
|---|---|
TrenchFactory | create B20, seed pool, token profiles |
TrenchLocker | owns the v4 position forever (no withdraw) |
TrenchRouter | buy/sell, 1% fee, referral, anti-snipe |
TrenchEscrow | claimable quote (ETH or stock) for creator / platform / referrer |
TrenchProfiles | user identity + first-write-wins global referrer |
Platform wallet (30% of swap fees):
0x8564d4849A520D9373f3FB3BCC91c7400E3089B6
cd contracts
export RPC_URL=https://mainnet.base.org
export PRIVATE_KEY=0x...
export PLATFORM=0x8564d4849A520D9373f3FB3BCC91c7400E3089B6
forge script script/Deploy.s.sol --rpc-url $RPC_URL --broadcast --verify
Live on Base (chain 8453), ETH + stock pairs:
Factory tx: 0xec4e1b5b…6f4a
On a stock pair, buyers spend that stock B20 (approve + transfer), not ETH. ETH is still required for gas. The deployer private key lives only in gitignored contracts/.env and is never sent to Vercel.
Login is Privy (wallet, Google, or Farcaster). Create an app at dashboard.privy.io, allow localhost:3000, and set NEXT_PUBLIC_PRIVY_APP_ID.
cd web
cp .env.example .env.local
npm install
npm run dev
/ board — live fill tape, spotlight token, stat strip, sortable tile grid/dashboard full board — grid or table, search, sort and pair filters/launch create/token/[address] chart, market stats, live fills, trade panel, referral link/profile/[address] identity, fee claim, global referral, launches/mini Farcaster mini app (no extra login — uses the in-app wallet)Farcaster Mini App lives at /mini. It auto-uses the in-client wallet (no Privy login). Preview in Warpcast developer tools after deploying, then sign /.well-known/farcaster.json for the live domain.
Sort by New, Top volume or Most traded; filter by ETH or stock pairs. Volume on a tile is denominated in that pool's own quote asset, so an AAPL-paired token reads in AAPL and never gets added to an ETH total.
The site is browsable without NEXT_PUBLIC_PRIVY_APP_ID — the board, charts
and contract reads all work from Base, and only login is disabled. Set the key
to enable wallet, Google and Farcaster login.
Next.js route handlers under web/app/api. Base is the source of truth; the
database is an index in front of it.
Every write is proved against the chain first. A client posts a tx hash and
nothing else that counts — the server pulls the receipt, finds the Launched
event from our factory or the Trade event from our router, and stores what
those say. Amounts, side, trader and quote asset are never taken from the
request body, so the volume on the board cannot be inflated by anyone holding
the anon key (it ships in the bundle — it always was public).
| Route | Does |
|---|---|
GET /api/tokens | board, with ?q=, ?creator=, paging |
POST /api/tokens | index a launch from { tx_hash } |
GET /api/tokens/[address] | one token + its rolled-up stats |
GET /api/trades | fills, by ?token= or ?trader= |
POST /api/trades | index a fill from { tx_hash } |
GET /api/stats | totals + top tokens, aggregated in Postgres |
GET /api/profiles/[address] | cached profile, falls back to a live read |
POST /api/profiles/[address] | refresh that cache from TrenchProfiles |
POST /api/upload | launch logo, type-sniffed, service-role write |
GET /api/health | which env vars actually landed on this deploy |
Stock pairs count now. The old client hardcoded amount_eth: 0 for
anything not paired against ETH, so every AAPL- or TSLA-paired fill recorded as
zero volume. Trades carry quote and amount_quote scaled by that asset's own
decimals (8 for a stock B20, 18 for ETH); amount_eth stays populated only for
ETH pairs, so "volume in ETH" never sums Apple shares into it.
Setup:
supabase/schema.sql. Upgrading an existing
database instead: run supabase/migrations/0001_backend.sql first, then
schema.sql (it is idempotent).SUPABASE_SERVICE_ROLE_KEY in Vercel. Server-side only — the
NEXT_PUBLIC_ prefix would publish it, and it bypasses RLS./api/health after deploying. ready: true means the keys, the RPC and
the database all answered.RLS is now read-only for the anon key; writes happen with the service role
behind the API. npm test in web/ covers the decode and the amount scaling.
Do not commit .env, .env.local, or .env.production. Copy web/.env.example locally, and paste the same NEXT_PUBLIC_* keys into the Vercel project settings. Never add PRIVATE_KEY.
Import the app on Vercel from GitHub:
Hamxxer33/trench-b20 (public) or Hamxxer33/trench-launchpad (private; GitHub app must be allowed).web.Unaudited. Use at your own risk.