Skip to content
EthTwin

EthTwin

Crypto for everyone — even my grandma.

Created on 8th May 2026

EthTwin

EthTwin

Crypto for everyone — even my grandma.

The problem EthTwin solves

Crypto has a 500M-user ceiling, and it's a UX problem not a tech problem.

Ask your grandma to send 100 USDC. She has to: install a wallet, write down 12 words, copy a 42-character address, pick the right chain, hold ETH for gas, pray she didn't send it on Polygon when the
receiver expected Base, and hope she didn't fat-finger a hex digit. One mistake = funds gone forever. This is why crypto still feels like a hobby for engineers, not money for humans.

EthTwin replaces all of that with one sentence:

▎ "Hey Twin, send 100 USDC to my grandson Tom."


What changes with EthTwin

  • Seed phrase → Passkey / Face ID. No 12 words. No paper backup. Privy + smart wallet.
  • 0x742d35Cc6634C0532... → tom.ethtwin.eth. Names, not hex.
  • Public forever-receipts → Stealth addresses by default. EIP-5564, unlinkable.
  • "What's a gas fee?" → Gasless. Smart wallet sponsors gas.
  • Chain → bridge → swap → sign → confirm → wait → "did it work?" → One voice command.
  • Agents with no identity or economy → ENSIP-25 + ERC-8004 + x402 micropayments. Agents that can prove who they are and pay each other per-call.

Three problems, one interface

  1. Onboarding is hostile. Voice-first + ENS subname + passkey. Maria (67, Stuttgart) goes from zero to her first on-chain transfer in under 60 seconds. No seed phrase. No hex. No "are you sure you're on the
    right chain?"

  2. Privacy is opt-in and painful. Every public ENS name is a forever receipt. EthTwin makes stealth addresses the default — payments resolve through an EIP-5564 stealth meta-key stored as an ENS Text
    Record, seeded by cosmic randomness from a real satellite (Orbitport cTRNG). Unlinkable by default, verifiable on-chain.

  3. Agents have no economy. AI agents today can't prove who they are, can't hire each other, can't pay for work. EthTwin's Twin is a fully ENSIP-25-compliant agent registered in the ERC-8004 IdentityRegistry
    — it can discover other agents via ENS, verify them on-chain, and pay them per-call via x402 micropayments. The Twin literally hired an Apify scraping agent for $1 USDC live during the demo.


The "wow" moment

Maria's voice command silently triggered: an ENS subname resolution, an ENSIP-25 agent verification, a satellite-seeded stealth address generation, an EIP-5564 announcement, and an x402 micropayment to a
third-party agent — across two chains.

She just thought she sent her grandson money.

That's the bet: the next billion users don't want to learn crypto. They want crypto to learn them.

Challenges we ran into

We bet on five bleeding-edge specs in 48 hours: ENSIP-25 (drafted weeks ago), ERC-8004, EIP-5564 stealth addresses, x402 micropayments (v2 just shipped), and Vercel AI SDK v6 (released days before the
hackathon). Every single one bit us. Here are the four that almost killed the demo.


  1. The x402 ecosystem split — same name, different package

We installed x402-fetch and spent 4 hours debugging "401 Payment Required" loops that never settled. Turns out there are two competing x402 libraries with nearly identical names:

They speak different protocols. Apify's facilitator only accepts v2. The npm search results showed v1 first, every blog post we found used v1, and the error messages were silent — payments just… never
settled.

Fix: ripped out x402-fetch, installed @x402/fetch + @x402/core + @coinbase/x402 (facilitator), wired up x402Client with ExactEvmScheme. Locked the verified versions into CLAUDE.md so future-us couldn't
repeat the mistake.


  1. Privy deprecated their server SDK during the hackathon

We started with @privy-io/server-auth (every tutorial uses it). Twelve hours in, the package showed a deprecation warning we'd been ignoring: "Use @privy-io/node instead."

The new SDK has a completely different shape — no PrivyClient class, just free functions. It also requires a PRIVY_VERIFICATION_KEY you have to manually fetch from the Privy Dashboard (not documented in the
migration guide we found).

Fix: rewrote every server route that touched auth, regenerated the verification key, and added the env var. Lost ~3 hours but ended up on the supported path.

Bonus gotcha: Privy v3 also nested embedded-wallet config. v2 was embeddedWallets.createOnLogin, v3 is embeddedWallets.ethereum.createOnLogin. Silent change. Wallets just… didn't auto-create. Took an hour
to find.


  1. AI SDK v6 silently renamed every tool definition

Vercel released AI SDK v6 four days before the hackathon. We followed every tutorial we knew. Tools wouldn't fire. No error — Claude just refused to call them.

The diff: in v5, tools used parameters: z.object(...). In v6, it's inputSchema: z.object(...). Same zod, same shape, different key. The TypeScript types accepted both. The runtime silently treated v5-style
tools as having no schema.

Fix: found one obscure GitHub issue confirming the rename, migrated all 15 Twin tools (sendMessage, hireAgent, inspectMyWallet, etc.) in lib/twin-tools.ts. Also discovered convertToModelMessages is now
async — must await it or the chat route crashes with a confusing "messages.map is not a function" error.


  1. Apify's x402 minimum killed our original demo math

Original pitch: "Twin hires an Apify agent for $0.20 USDC." Cute number. Live demo we'd practiced for hours.

Two days before submission, we actually read Apify's x402 docs carefully: the minimum is $1 USDC per request, not $0.20. Only Pay-Per-Event Actors are x402-enabled. And Base Sepolia support depends on the
facilitator — Mainnet is the safe path.

Fix: rewrote the demo script around a $1 USDC payment (still cheap enough to feel like a micropayment, expensive enough that the live tx is satisfying to watch). Switched the facilitator config to Base
Mainnet for the demo, kept Base Sepolia as the dev-mode fallback. Updated docs/06-Demo-Skript.md accordingly.


What we learned

When you build on five specs that are all younger than your hackathon, the documentation is the codebase, the ecosystem is forking in real time, and yesterday's tutorial is today's footgun. Our defense
became CLAUDE.md — a living document of every verified package version, every silent breaking change, every "wait, that's not how it works anymore" moment. Future-us reads it first; past-us would have saved
12 hours.

The bet paid off: every primitive that almost broke the build is the same primitive that makes the demo feel like magic.

Tracks Applied (7)

Ethereum Core

EthTwin is built on a stack of recent Ethereum specs, most of them younger than this hackathon. We composed them in ways...Read More

Network Economy

EthTwin is an agent network where every user spawns a Twin that lives at their ENS subname (maria.ethtwin.eth), and Twin...Read More

Future Society

Crypto today assumes the user is an engineer. Seed phrases, hex addresses, gas tokens, chain selection, RPC errors, hex ...Read More

SpaceComputer Bounty

We use Orbitport KMS as the signing authority for every Twin we mint. When a user onboards (app/api/onboarding/route....Read More

SpaceComputer

Sourcify Bounty

Sourcify is our anti-blind-signing layer. Maria can't read hex calldata, so we use Sourcify to give the Twin verified-so...Read More

Sourcify

Best ENS Integration for AI Agents

Every Twin we mint is a fully ENSIP-25 compliant agent. The text record key format agent-registration is set during onbo...Read More

ENS

Most Creative Use of ENS

We ship two ENS patterns that go beyond name resolution. Both are live and on-chain. stealth-meta-address text record...Read More

ENS

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion

Builders also viewed

See more projects on Devfolio