Skip to content

Repository files navigation

Heteroverify™

Heteroverify™ — If you're not gay, send me $50

heteroverify.vercel.app · a Base Mini App

A single-page joke/meme site. Premium minimalist startup aesthetic, absurd copy — the humor is entirely in the contrast.

Identity verification, simplified.

A logo, a headline, a wallet address with a copy button, a Send $50 button that pays an on-chain contract on Base, and a footnote. No build step.

Stack

Plain static site — no framework, no bundler, no local dependencies. The Send button loads viem from a CDN at runtime (an ES-module import, still no build step).

index.html              # markup + meta tags + inline SVG favicon
styles.css              # all styling (dark, responsive, entrance animations)
script.js               # wallet constant, clipboard copy, Base payment flow
contracts/
  Heteroverify.sol      # the payment contract deployed to Base

It runs by serving the folder. (Opening index.html from file:// works for everything except the Send button — browsers block CDN module imports and wallet access on file://. Use the local server below.)

Run locally

python3 -m http.server 8000
# then open http://localhost:8000

Opening index.html straight from disk (file://) also works — the copy button falls back to a legacy clipboard path outside secure contexts.

The Base payment (Send button)

The Send $50 button charges the visitor exactly 50 USDC ($50) on Base mainnet through the Heteroverify contract, which forwards the payment straight to owner — the contract never holds funds.

USDC uses an allowance model, so the flow is up to two wallet transactions: approve $50 (skipped if already approved), then verify (the payment). The visitor pays a few fractions of a cent in ETH for gas on Base.

1. Deploy the contract

Easiest path is Remix:

  1. Create a new file, paste in contracts/Heteroverify.sol.
  2. Solidity Compiler → compile (any 0.8.20+).
  3. Deploy & Run → Environment: Injected Provider (your wallet, set to Base mainnet).
  4. In the constructor field, pass the address that should receive the USDC (or 0x0 to use the deploying wallet), then Deploy and confirm.
  5. Copy the deployed contract address.

Test first on Base Sepolia. In the contract, swap the USDC constant to the testnet token 0x036CbD53842c5426634e7929541eC2318f3dCF7e, deploy to Base Sepolia, and grab test USDC from faucet.circle.com. Revert the constant before deploying to mainnet.

2. Wire up the frontend

Set the network + the two addresses at the top of script.js:

const CHAIN = baseSepolia;        // `baseSepolia` = testnet, `base` = mainnet
const WALLET_ADDRESS  = '0x...';  // shown on the page + copied; the contract's owner
const CONTRACT_ADDRESS = '0x...'; // your deployed Heteroverify address

CHAIN drives everything else — the USDC token address, chain switching, and the block-explorer link all follow from it. To go live, flip CHAIN to base and redeploy the contract to Base mainnet (the file's USDC constant is already mainnet by default).

The Send button stays guarded (it refuses to fire) while either address is still the 0x0000…0000 placeholder, so it can't accidentally burn funds.

Live on Base mainnet (CHAIN = base), price $50 (50 USDC). Contract 0x4e7fe157622B64BAf040b0ba8825568927073a0e, owner/recipient 0x1b1934c0475c97196ba470dec8d9a455712952ee (verified on-chain: PRICE 50,000,000, mainnet USDC). Real USDC moves — verify the source on basescan.org so payers can read it.

Earlier contracts: 0x7744…Fd41 (1 USDC, mainnet) and 0x790f…2ac9 (Base Sepolia testnet) are superseded.

3. (Optional) Verify on Basescan

Verify the source on basescan.org so the contract is readable and trustworthy to anyone who checks before paying.

Deploy

This is a static site — any static host works. Two easy options:

GitHub Pages

  1. Create a repo and push:
    git remote add origin git@github.com:<you>/heteroverify.git
    git push -u origin main
  2. In the repo: Settings → Pages.
  3. Under Build and deployment → Source, choose Deploy from a branch.
  4. Select branch main, folder / (root), then Save.
  5. Your site goes live at https://<you>.github.io/heteroverify/ in a minute or two.

Vercel

  1. Push the repo to GitHub (as above).

  2. Go to vercel.com/new and import the repo.

  3. Framework preset: Other. Leave build command empty and output directory as the project root.

  4. Deploy. Vercel serves index.html automatically.

    Or from the CLI:

    npm i -g vercel
    vercel        # preview
    vercel --prod # production

Publish to Base App (Mini App)

The site doubles as a Farcaster / Base Mini App, so the Send $50 button works inside Base App using its built-in wallet (script.js routes through the Mini App provider when it detects the host, and calls sdk.actions.ready() to dismiss the splash).

Pieces already in place:

index.html              # fc:miniapp + fc:frame embed meta tags
.well-known/farcaster.json   # the Mini App manifest
assets/icon.png         # 1024×1024 app icon
assets/splash.png       # 200×200 splash mark
assets/embed.png        # 1200×800 share card (also the OG/Twitter image)

To go live:

  1. Deploy to a stable domain (Vercel production domain or a custom one). The manifest is bound to one exact domain, so pick the final one first.
  2. Replace https://YOUR-DOMAIN everywhere — in index.html (meta tags) and .well-known/farcaster.json:
    grep -rl 'YOUR-DOMAIN' index.html .well-known | \
      xargs sed -i 's#https://YOUR-DOMAIN#https://your-real-domain.com#g'
  3. Sign the manifest. Open the Base/Farcaster manifest tool (Base Build → Manifest), enter your domain, sign with your Farcaster account, and paste the resulting header / payload / signature into the accountAssociation block of farcaster.json (currently REPLACE_ME).
  4. Redeploy, then validate the embed + manifest with the Mini App previewer (Base/Warpcast embed debugger) and submit/share it in Base App.

The wallet routing is graceful: in a normal browser the button still uses an injected wallet (MetaMask / Coinbase Wallet), so nothing breaks outside Base App.

License

MIT — do whatever. It's a joke.

About

Heteroverify™ — Identity verification, simplified. A deadpan meme that charges $50 in USDC on Base. Static site + Farcaster/Base Mini App.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages