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.