close

DEV Community

Cover image for Week 1: Base — 56/60
Satori Geeks
Satori Geeks

Posted on • Edited on • Originally published at paragraph.com

Week 1: Base — 56/60

The app deployed cleanly. I ran the function. Nothing happened.

That's cast call. It simulates — never broadcasts. The fix was cast send. One word. Thirty seconds once I asked the right question. (The honest version: I knew the difference, once. Muscle memory had just drifted.) Returning to a toolchain after time away means re-learning where the sharp edges are — even when the tooling is genuinely excellent.

Before writing a line of code, I ran a verification pass on Base's OP Stack migration. Infrastructure consolidation, not a developer-surface change. Every tool confirmed unchanged. The full check is in a separate article.

Then the faucet situation. This is where the PM brain kicked in — because the developer brain just wants to deploy, and what I found was a TSA pat-down at every gate. Ethereum Ecosystem required an ENS name. Bware Labs was under maintenance. QuickNode and Alchemy required an ETH balance on Ethereum mainnet. LearnWeb3 wanted wallet connection and GitHub auth. Five faucets, five blocked. The one that worked — Coinbase Developer Platform — required sign-in and delivered 0.0001 Sepolia ETH. Enough to proceed. But the "multiple no-auth faucets" story from the research didn't survive contact with reality. That's a getting-started problem — the kind of friction that doesn't show until someone actually tries to move in.

Private key: encrypted Foundry keystore, not .env. Right call. Full method in a dedicated article.

The deploy itself:

forge script script/Deploy.s.sol:Deploy \
  --rpc-url baseSepolia \
  --broadcast \
  --verify \
  --etherscan-api-key $BASESCAN_API_KEY
Enter fullscreen mode Exit fullscreen mode

"Pass - Verified" on Basescan in forty-five seconds. No flattening, no manual ABI upload, no second command. That's the D6 story in one run.

Mainnet followed the same path. Contract address: 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa. Same address as Sepolia — the EVM derives contract addresses from deployer nonce, and mine matched on both networks. A separate Farcaster thread covers the mechanics. Frontend wiring was one environment variable: VITE_BASE_CONTRACT_ADDRESS. Wallet connect, form submit, sendSupport(), on-chain confirmation, message on the wall. End-to-end in one take. First live mainnet message: "First message outside the testnet." Verifiable on Basescan.

One post-QA fix: the first mainnet message came in at 10,000,000,000,000 wei, and formatAmount displayed it incorrectly below 0.0001 ETH. Tests written, implementation fixed. The dev half wrote the code; the PM half noticed the edge case existed. That split is the whole job.

live app on Base mainnet, message wall with first entry visible

The Vibe Check. (Eight dimensions, three weights, max 60. Full methodology: How I'm Scoring the Chains)

D2, D3, D5, D6: all 5/5. The locals know what they're doing here. Foundry runs identically to Ethereum mainnet. OpenZeppelin v5.0.2 installed without ceremony. Wagmi ships a base chain import out of the box. forge script --broadcast --verify deploys and auto-verifies in a single run. No translation required — if you've built on EVM before, you already speak this language.

D7 (5/5): under $0.005 per sendSupport at current ETH prices, 0.005–0.006 gwei effective gas price. For a tip jar. Practically free.

Three misses.

D1 (4/5): the faucet. Five of six blocked — ENS requirements, mainnet balance gates, maintenance, GitHub auth. The one that opened required sign-in and gave 0.0001 ETH. The neighbourhood works fine once you're in. Getting there is harder than the welcome mat suggests.

D4 (4/5): the official Base quickstart uses forge create, not forge script. The [etherscan] block needed for auto-verification isn't in the primary guide — it came from the research doc. The street signs are in a language only locals speak. Not a blocker for someone who's been here before. A genuine detour for everyone else.

D8 (4/5): large community, Farcaster-native, Coinbase-backed, highest daily transaction volume of any L2. The score is 4 because Base is departing the Optimism Superchain — OP token dropped roughly 7% on the announcement. Zero practical impact on this deploy. But a chain leaving a shared ecosystem is a signal, and I've been around long enough not to ignore signals.

Weighted total: 56/60. Outstanding band.

The research estimated 56. The build delivered 56. Zero delta is what a baseline is supposed to do — the rubric held up, which means it's functioning. The interesting data starts next week.

Verdict: I would build a production app on Base, with the standard caveats — no live fraud proofs yet, Coinbase trust assumption, Superchain transition still in progress. None of those are blockers at this scale. Live app: https://proof-of-support.pages.dev. Contract verified at 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa on Base mainnet.

Base is home. If you've built on Ethereum mainnet, you already know this toolchain — you just haven't paid these gas fees.

Week 2 is coming. The chain is chosen. The toolchain will not be identical. That's the point.


→ The live app is at https://proof-of-support.pages.dev

Top comments (0)