Install
openclaw skills install openclaw-skill-usdc-dance-evvmClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Pay with USDC.d via x402 protocol on Story Aeneid EVVM using Privy server wallets. Uses BridgeUSDC (custom bridge) until LayerZero supports Story Aeneid.
openclaw skills install openclaw-skill-usdc-dance-evvmEnables OpenClaw agents to autonomously pay with USDC.d (USDC Dance) tokens via the x402 protocol on Story Aeneid EVVM using Privy server wallets.
transferWithAuthorization for gasless paymentsclawhub install privy~/.openclaw/openclaw.json:{
"env": {
"vars": {
"PRIVY_APP_ID": "your-app-id",
"PRIVY_APP_SECRET": "your-app-secret"
}
}
}
import { payViaEVVMWithPrivy } from './src/index';
// Agent makes payment using Privy wallet (Bridge USDC.d on Story Aeneid testnet)
const receipt = await payViaEVVMWithPrivy({
walletId: 'privy-wallet-id',
to: humanOwnerAddress,
amount: '1000000', // 1 USDC.d (6 decimals)
receiptId: 'payment_123',
adapterAddress: '0x00ed0E80E5EAE285d98eC50236aE97e2AF615314', // Bridge EVVM adapter
usdcDanceAddress: '0x5f7aEf47131ab78a528eC939ac888D15FcF40C40', // BridgeUSDC
evvmCoreAddress: '0xa6a02E8e17b819328DDB16A0ad31dD83Dd14BA3b',
evvmId: 1140,
rpcUrl: 'https://aeneid.storyrpc.io'
});
import { payViaEVVM } from './src/index';
const receipt = await payViaEVVM({
from: agentAddress,
to: humanOwnerAddress,
amount: '1000000',
receiptId: 'payment_123',
privateKey: agentPrivateKey,
adapterAddress: '0x00ed0E80E5EAE285d98eC50236aE97e2AF615314', // Bridge EVVM adapter
usdcDanceAddress: '0x5f7aEf47131ab78a528eC939ac888D15FcF40C40', // BridgeUSDC
// ... other options
});
0xa6a02E8e17b819328DDB16A0ad31dD83Dd14BA3b11400x5f7aEf47131ab78a528eC939ac888D15FcF40C40 — BridgeUSDC (custom bridge; use for OpenClaw until LayerZero supports Story Aeneid)0x00ed0E80E5EAE285d98eC50236aE97e2AF615314 — EVVMPaymentAdapter for BridgeUSDCWhen LayerZero supports Story Aeneid: You can switch to the LayerZero USDC.d and adapter; see lz-bridge deployments.
1315https://aeneid.storyrpc.ioThis skill integrates with the Privy OpenClaw skill to enable:
Ask your OpenClaw agent:
"Create an Ethereum wallet for yourself using Privy on Story Aeneid testnet"
The agent will create a Privy server wallet and return the wallet ID.
Create spending limits and restrictions:
"Create a Privy policy that limits USDC.d payments to 10 USDC.d max per transaction"
"Attach the spending limit policy to my Privy wallet"
payViaEVVMWithPrivy(options)Process a payment through EVVM using x402 protocol with Privy wallet.
Parameters:
walletId: Privy wallet IDto: Recipient address (human owner or other agent)toIdentity: Optional EVVM username (empty string if using address)amount: Payment amount in smallest unit (6 decimals for USDC.d)receiptId: Unique receipt identifieradapterAddress: EVVMPaymentAdapter contract address (use Bridge adapter for BridgeUSDC on testnet)usdcDanceAddress: USDC.d token contract address (use BridgeUSDC for current testnet)evvmCoreAddress: EVVM Core contract addressevvmId: EVVM instance ID (1140 for Story Aeneid)rpcUrl: Story Aeneid RPC endpointprivyAppId: Privy App ID (optional, uses env var if not provided)privyAppSecret: Privy App Secret (optional, uses env var if not provided)Returns: Transaction receipt
payViaEVVM(options) (Legacy)Process payment using private key directly (not recommended for production).
checkPaymentStatus(receiptId, adapterAddress, rpcUrl)Check if a payment was successfully processed.
See examples/ directory for:
agent-payment-privy-example.ts - Using Privy walletsagent-payment-example.ts - Using private keys (legacy)⚠️ Important: When using Privy wallets:
clawhub install privy)MIT