use-user-controlled-wallets

Build non-custodial wallets with Circle's user-controlled wallets SDK and challenge-response authorization.

3|1|Updated May 17, 2026
One-click install
npx skills add https://github.com/levantuy/arc-quantum --skill use-user-controlled-wallets-levantuy
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: use-user-controlled-wallets
Source: https://github.com/levantuy/arc-quantum/tree/main/.agents/skills/use-user-controlled-wallets
Command: npx skills add https://github.com/levantuy/arc-quantum --skill use-user-controlled-wallets-levantuy

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @circle-fin/user-controlled-wallets, @circle-fin/w3s-pw-web-sdk, vite-plugin-node-polyfills, and includes references (resource) components.

What problem does it solve? Integrating non-custodial wallets requires coordinating backend SDK calls, frontend challenge execution, and multiple authentication methods, which is error-prone without a clear implementation guide. ## Core Features & Use Cases - Wallet Creation with Multiple Auth Methods: Create user-controlled wallets using PIN, email OTP, or social login (Google, Facebook, Apple) via Circle's hosted UI. - Transactions and Signing: Send token transfers, sign messages (EIP-191, EIP-712), sign raw transactions, and execute smart contracts through the challenge-response model. - Transaction Lifecycle Management: Estimate fees, accelerate or cancel pending transactions, and poll transaction states until terminal. - Use Case: A developer building a consumer fintech app can let users sign in with Google, create an MPC-backed wallet, and send USDC on an L2 without ever handling private keys. ## Quick Start Ask the AI to create a user-controlled wallet with PIN authentication using Circle's SDKs, then read the corresponding reference file before writing code.

Frequently Asked Questions about use-user-controlled-wallets

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a non-custodial wallet with Circle's SDK?▼

Create a user-controlled wallet by calling createUserPinWithWallets on the backend to get a challengeId, then execute it on the frontend with the W3SSdk so the user approves via Circle's hosted UI. PIN, email OTP, and social login authentication methods are supported.

How do I send a token transfer from a user-controlled wallet?▼

Call createTransaction on the backend with the walletId, destination address, amount, and tokenAddress to receive a challengeId. The frontend then calls sdk.setAuthentication and sdk.execute so the user authorizes the transfer, after which you poll getTransaction until a terminal state.

What is the difference between EOA and SCA account types in Circle wallets?▼

EOA accounts have no creation fees, higher TPS, and support EVM, Solana, and Aptos, but require native tokens for gas. SCA accounts use ERC-4337 account abstraction with gas sponsorship and batching, but are EVM-only and should be avoided on Ethereum mainnet due to high gas costs.

Why does sdk.execute silently fail with the Circle Web SDK?▼

The execute call fails silently if sdk.getDeviceId() was not called after SDK initialization, since that call establishes a session with Circle's service via an iframe. You must also call sdk.setAuthentication with userToken and encryptionKey before executing any challenge.

Can developers access or recover users' private keys in user-controlled wallets?▼

No, developers can only read wallet data and transaction history but cannot access private keys or perform on-chain operations on a user's behalf. Account recovery depends entirely on the user re-authenticating with their original method, so developers cannot help recover lost access.