use-user-controlled-wallets

Build non-custodial wallets with Circle's user-controlled wallets SDK using PIN, email OTP, or social login.

1|Updated Jul 20, 2026
One-click install
npx skills add https://github.com/Lightupwrld/Cycuxio --skill use-user-controlled-wallets-lightupwrld
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: use-user-controlled-wallets
Source: https://github.com/Lightupwrld/Cycuxio/tree/main/.agents/skills/use-user-controlled-wallets
Command: npx skills add https://github.com/Lightupwrld/Cycuxio --skill use-user-controlled-wallets-lightupwrld

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 into an application 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 via PIN, email OTP, or Google/Facebook/Apple social login using Circle's challenge-response model. - Transactions and Signing: Send token transfers, sign messages (EIP-191, EIP-712), execute smart contract functions, and estimate, accelerate, or cancel transactions. - Use Case: A developer building a consumer dApp can let users sign in with Google, create an MPC-backed wallet on Arc Testnet, and send USDC without ever exposing private keys to the developer's servers. ## Quick Start Ask the AI to create a user-controlled wallet with PIN authentication using Circle's SDKs and follow the referenced implementation guide.

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 user-controlled wallets SDK?

Create a user on your backend with @circle-fin/user-controlled-wallets, obtain a userToken, then call createUserPinWithWallets to get a challengeId. The frontend executes that challenge via @circle-fin/w3s-pw-web-sdk, where the user sets a PIN through Circle's hosted UI.

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

Your backend calls createTransaction with the walletId, destination address, amount, and tokenAddress, receiving a challengeId. The frontend executes the challenge with sdk.execute after setAuthentication, then polls getTransaction until a terminal state like COMPLETE.

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 costly on Ethereum mainnet.

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 the session with Circle's service. Also ensure setAuthentication with userToken and encryptionKey is called before execute.

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

No. Developers can read wallet data and transaction history but cannot access private keys or act on a user's behalf. Account recovery depends entirely on the user re-authenticating with their PIN, email, or social account.