D3
Duty3

Account Abstraction & Fiat Onramp

You do not need MetaMask or a hardware wallet to use Duty3. Sign in with Google, email, or phone — a smart wallet is created for you automatically. Buy crypto with a debit card directly inside the app.

What is Account Abstraction?

Account Abstraction (ERC-4337) replaces traditional Ethereum externally-owned accounts (EOAs) with programmable smart contract wallets. For end users, the practical result is:

  • No seed phrase — your wallet is secured by your social login or passkey, not a 12-word mnemonic you can lose
  • No manual network switching — the wallet is pre-configured for Arbitrum
  • Social recovery — if you lose access to your Google account, you can recover your wallet through other methods
  • Familiar login UX — the same "Sign in with Google" flow you use on every other app

Supported Login Methods

Google

One-click login with your existing Google account.

Email

Enter your email — receive a one-time code to verify.

Phone

SMS verification code to your mobile number.

Passkey

Biometric login — Face ID or fingerprint on your device.

MetaMask

Classic browser extension wallet for experienced users.

Coinbase Wallet

Mobile and browser wallet by Coinbase.

Rainbow

Popular mobile-first Ethereum wallet.

WalletConnect

Connect any compatible mobile wallet via QR code.

How In-App Wallets Work

When you sign in with Google (or email/phone), Thirdweb's infrastructure creates an in-app wallet for you. This is a real Arbitrum wallet — it has a public address, can hold tokens, and can sign transactions. The private key is split using threshold cryptography and stored securely — never exposed to you or to Thirdweb in plaintext.

From a blockchain perspective, your in-app wallet behaves identically to MetaMask. You can receive prizes, hold tickets, and sign all the same transactions. From a user perspective, you just clicked "Sign in with Google."

Fiat Onramp — Buy Crypto with a Card

Once your wallet is connected, you can buy WETH, USDC, or ETH directly with a debit or credit card — no need to visit a separate exchange.

How to use the onramp

  1. Connect your wallet (or sign in with Google/email)
  2. Click your wallet address in the top-right corner to open the wallet details
  3. Click "Buy" — this opens the fiat onramp modal
  4. Select the token and amount
  5. Complete the purchase with your card
  6. Tokens arrive in your wallet on Arbitrum within minutes

Supported payment methods

  • Visa / Mastercard debit and credit cards
  • Apple Pay and Google Pay (where available)
  • Bank transfer (ACH) in supported regions

Supported providers

The onramp is powered by Thirdweb Pay, which aggregates multiple fiat-to-crypto providers (Transak, Coinbase Pay, and others) and selects the best rate automatically based on your region.

Who This Is For

Account abstraction and fiat onramp make Duty3 accessible to anyone — not just crypto-native users. You can recommend Duty3 to friends who have never used a blockchain wallet:

  • They sign in with Google
  • They buy $20 of WETH with their card
  • They buy a ticket in a raffle
  • If they win, the prize is in their wallet
  • They can cash out via the same onramp providers that also offer offramp

The entire flow requires no prior crypto knowledge.

Security Considerations

In-app wallets are non-custodial — Thirdweb cannot access your funds. However, your wallet security is tied to your social account security. If your Google account is compromised, your wallet may be at risk. Recommendations:

  • Enable 2FA on your Google/email account
  • For large holdings, migrate to a hardware wallet (Ledger, Trezor)
  • Consider adding a passkey as a backup authentication method

For Developers and Agents

In-app wallets are powered by Thirdweb's SDK. If you are building an application that integrates with Duty3 and want to offer social login, add inAppWallet to your ConnectButton wallets array:

import { ConnectButton } from "thirdweb/react"
import { inAppWallet, createWallet } from "thirdweb/wallets"

const wallets = [
  inAppWallet({
    auth: { options: ["google", "email", "phone", "passkey"] },
  }),
  createWallet("io.metamask"),
]

<ConnectButton client={client} wallets={wallets} />

AI agents use standard EOA wallets (private key) rather than in-app wallets, since they run server-side without a user session.