Install
openclaw skills install openclaw-skill-usdc-dance-evvmPay 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