Blockchain Developer

Programmable Wallets β€” Create 10,000 User Wallets Without Key Management

1-2 day integration vs 2-3 months DIYDevOps & Cloud3 min read

Key Takeaway

The Circle Wallets skill implements Circle's Programmable Wallets β€” create and manage crypto wallets via API without handling private keys. Your agent generates the complete wallet infrastructure: user wallets, developer-controlled wallets, transaction signing, and balance management.

The Problem

You're building an app that needs crypto wallets for users. The traditional approach:

  1. Generate private keys (securely β€” not Math.random())
  2. Store them (encrypted, with KMS, with backup, with recovery)
  3. Sign transactions (without exposing keys to your app servers)
  4. Handle gas (users don't have ETH for fees)
  5. Manage nonces (concurrent transactions get tricky)
  6. Build recovery flows (user loses device)
  7. Pass security audits (key management is the #1 audit flag)

This is 2-3 months of engineering for a senior crypto developer. Get any part wrong and you lose user funds.

The Solution

The Circle Wallets skill implements Circle's Programmable Wallets API. Circle handles all key management (AWS Nitro Enclaves, HSMs). You interact via API. No private keys touch your infrastructure.

The Process

View details
You: Set up programmable wallets for our app. We need:
- Auto-create a wallet when users sign up
- Support USDC on Ethereum and Polygon
- Users can send/receive USDC
- We control gas (users don't pay tx fees)

The agent generates the complete backend implementation:

javascriptShow code
// === wallet-service.js ===
import { CircleSDK } from '@circle-fin/circle-sdk';

const circle = new CircleSDK({
  apiKey: process.env.CIRCLE_API_KEY,
  entitySecret: process.env.CIRCLE_ENTITY_SECRET
});

// Create wallet set (one per environment)
async function initWalletSet() {
  const response = await circle.wallets.createWalletSet({
    name: 'production-users'
  });
  return response.data.walletSet;
}

// Create wallet for new user (called during signup)
async function createUserWallet(userId) {
  const response = await circle.wallets.createWallet({
    walletSetId: WALLET_SET_ID,
    blockchains: ['ETH', 'MATIC'],  // Ethereum + Polygon
    count: 1,
    metadata: [{ name: 'userId', value: userId }]
  });

  const wallet = response.data.wallets[0];

  // Store wallet ID (NOT keys β€” Circle manages those)
  await db.users.update(userId, {
    circleWalletId: wallet.id,
    ethAddress: wallet.address
  });

  return wallet;
}

// Send USDC (user-initiated, you sign with Circle)
async function sendUSDC({ fromUserId, toAddress, amount, chain }) {
  const user = await db.users.findById(fromUserId);

  const response = await circle.transactions.createTransfer({
    walletId: user.circleWalletId,
    tokenId: USDC_TOKEN_IDS[chain],
    destinationAddress: toAddress,
    amounts: [amount.toString()],
    fee: {
      type: 'level',
      config: { feeLevel: 'MEDIUM' }
    }
  });

  return response.data;
}

// Check balance
async function getBalance(userId) {
  const user = await db.users.findById(userId);
  const response = await circle.wallets.getWalletBalance(
    user.circleWalletId
  );
  return response.data.tokenBalances;
}

No private keys in your code. No key management infrastructure. No HSM setup. Circle handles all of it.

The Results

MetricSelf-Managed KeysCircle Programmable Wallets
Key securityYour responsibility (terrifying)Circle's Nitro Enclaves + HSMs
Integration time2-3 months1-2 days
Security audit$50K+ for key management reviewCircle is SOC2 Type II certified
RecoveryBuild it yourselfBuilt-in
Gas managementComplex (relayers, meta-transactions)API parameter
ComplianceYour problemCircle handles KYC/AML infrastructure

Setup on MrChief

yamlShow code
skills:
  - circle-wallets
  - stablecoin-payments
walletscirclecryptokey-managementweb3

Want results like these?

Start free with your own AI team. No credit card required.

Programmable Wallets β€” Create 10,000 User Wallets Without Key Management β€” Mr.Chief