BaseBoard multi-chain (Base + Celo): unified wallet modal, Celo pricing/deploy, pixel links + content guard#3
Merged
Conversation
…ng/deploy, pixel links + content guard - Multi-chain Base (8453) + Celo (42220): per-chain config (contract, price, treasury, deploy block, native symbol), wagmi celo chain/transport, canvas state isolation on chainId switch. Base optimizations (bbox compression ladder, 9500-block scan, optimistic updates) untouched. - Wallet UI: single 'Connect Wallet' button opens a wallet-selection modal (MetaMask/Rabby/WalletConnect + Coinbase Smart Wallet, hidden on Celo). - Pricing: Base 0.00005 ETH; Celo 1.3 CELO per plot. - Contract: PLOT_PRICE + TREASURY are now constructor args (immutable) so Celo can deploy with 1.3 CELO + treasury 0x71aad...812b. Base deploy unchanged (0.00005 ETH, original treasury). Added scripts/deploy-celo.cjs + hardhat celo network. - Pixel Links: optional clickable URL per plot, encoded in the on-chain imageUri fragment (#link=...), shown in PlotModal. Frontend content-security guard blocks porn/drugs/alcohol/gambling/phishing URLs with a clear toast/inline warning before the tx. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
BaseBoard deployed to Celo (42220) at 0x7b5E66cD88305aB33CE2c2C400167B7fFF348a23 (block 69652905), price 1.3 CELO, treasury 0x71aad...812b. Replace placeholder defaults with the real contract address + deploy block (still env-overridable). Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Unified implementation of the full Base + Celo multi-chain architecture plus this round's requests. Supersedes #2 (do not merge #2). Base's shipped optimizations — bbox compression ladder, 9,500-block progressive log scan, optimistic canvas updates — are untouched and run on both chains.
Celo is now live. BaseBoard is deployed to Celo Mainnet (42220) at
0x7b5E66cD88305aB33CE2c2C400167B7fFF348a23(deploy block69652905), with on-chainPLOT_PRICE = 1.3 CELOandTREASURY = 0x71aad…812b(verified on-chain). The real address + deploy block are baked into the config defaults (still env-overridable); the placeholder is gone.1. Wallet UI — single "Connect Wallet" button + modal
Reverted the inline raw-connector buttons. Disconnected state is now one clean
Connect Walletbutton that opens a selection modal. Coinbase Smart Wallet is offered everywhere except Celo (unsupported), where users are steered to MetaMask / Rabby / WalletConnect.2. Pricing
0.00005 ETHper plot (unchanged).1.3CELO per plot (~0.1 USDC equiv).3. Contract parametrized + deployed to Celo
PLOT_PRICEandTREASURYwere hardcodedconstants with no constructor — so the "deploy the existing contract" path could not set 1.3 CELO or the requested treasury. They are nowimmutableconstructor args (public getters preserved, so the frontend ABI reads are unchanged):scripts/deploy-celo.cjsdeployed with1.3 CELO+ treasury0x71aad…812b, captured the deploy block, and wroteNEXT_PUBLIC_CELO_*.hardhat.config.cjsgains acelonetwork (chainId 42220,forno.celo.org).0.00005 ETH+ original treasury0xce8353…f1e2.4. Pixel Links + content-security guard (new feature)
Owners can attach an optional clickable URL to a plot. No contract change — the link rides in the existing on-chain
imageUristring as a fragment alongside the zone bbox:PlotModalparses#link=and renders a clickable row; imagesrcisstripZone'd so the fragment never breaks loading.validateLinkUrl()runs before the tx: requires http(s), and blocks pornography / drugs / alcohol / gambling / phishing keywords. On a violation the save is stopped and the user sees: "Invalid or restricted URL layout detected. Please provide a safe destination link."Verification
npm run lint,npm run build, andnpx hardhat compileall pass with zero errors/warnings. CeloPLOT_PRICE/TREASURY/GRID_SIZEread back correctly from the deployed contract.Post-merge (optional)
For parity with the committed defaults, you can also set
NEXT_PUBLIC_CELO_CONTRACT_ADDRESS=0x7b5E66cD88305aB33CE2c2C400167B7fFF348a23andNEXT_PUBLIC_CELO_DEPLOY_BLOCK=69652905in Vercel — not required, since they're now the built-in defaults.Link to Devin session: https://app.devin.ai/sessions/dd0d6a8816204b759805887b2ff9e351
Requested by: @omiaydin1