use-user-controlled-wallets

Build non-custodial wallets with Circle's user-controlled wallets SDK and MPC key management.

1|Updated Sep 4, 2025
One-click install
npx skills add https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO --skill use-user-controlled-wallets-fuzzystodd
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: use-user-controlled-wallets
Source: https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO/tree/main/skills/use-user-controlled-wallets
Command: npx skills add https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO --skill use-user-controlled-wallets-fuzzystodd

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 crypto wallets into an application requires handling key management, user authentication, and transaction signing without taking custody of user funds. This Skill guides you through Circle's user-controlled wallets SDK so end users keep control of their private keys while your backend never touches them. ## Core Features & Use Cases - Wallet Creation with Multiple Auth Methods: Create wallets secured by PIN, email OTP, or social login (Google, Apple, Facebook) using MPC-based key management. - Transactions and Signing: Send token transfers, sign EIP-191/EIP-712 messages, and execute smart contract functions through a challenge-response approval flow. - Multi-Chain Support: Deploy EOA or SCA (ERC-4337) accounts across EVM chains, Solana, and Aptos, with gas sponsorship options. - Use Case: A fintech app wants to let users hold USDC without the company custodial risk. Use this Skill to scaffold a backend that creates users and challenges via the Circle API, plus a frontend where users approve each transaction through Circle's hosted UI. ## Quick Start Ask the assistant to create a user-controlled wallet with PIN authentication using Circle's SDK, including the backend client setup and frontend challenge execution.

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 initializing the backend client with your Circle API key, creating a user and challenge via the API, then executing the challenge in the frontend with the w3s-pw-web-sdk. Users approve wallet creation through Circle's hosted UI using PIN, email OTP, or social login.

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

EOA accounts have no creation fees, higher TPS, and support EVM chains, 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() fail silently in 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 sdk.setAuthentication with userToken and encryptionKey is called before executing any challenge.

Can developers access or recover user-controlled wallet keys?▼

No, developers can only 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 original method, so developers cannot restore lost access.

How do I track a Circle wallet transaction status?▼

Poll circleClient.getTransaction with the userToken and transaction ID until a terminal state is reached. Transactions move through states like INITIATED, QUEUED, SENT, and CONFIRMED, ending in COMPLETE, FAILED, DENIED, or CANCELLED.