尚未偵測到更新。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.