name: credentials
description: “交易平台的安全凭证管理”
emoji: “🔐”
凭证 - 完整API参考
使用AES-256-GCM加密安全存储和管理交易平台的API凭证。
聊天命令
添加凭证
/creds add polymarket 交互式设置
/creds add kalshi --key abc --secret xyz 直接设置
/creds add binance 添加Binance API
/creds add hyperliquid 添加钱包密钥
查看凭证
/creds list 列出配置的平台
/creds status 检查凭证健康状态
/creds test polymarket 测试API连接
删除凭证
/creds remove polymarket 移除平台凭证
/creds clear 清除所有(小心!)
认证状态
/auth status 总体认证状态
/auth refresh kalshi 刷新令牌
/auth cooldown 查看冷却状态
TypeScript API参考
创建凭证管理器
import { createCredentialsManager } from 'clodds/credentials';
const creds = createCredentialsManager({
// 加密密钥(必需)
encryptionKey: process.env.CREDENTIALS_KEY,
// 存储后端
storage: 'sqlite', // 'sqlite' | 'postgres'
dbPath: './credentials.db',
// 冷却设置
cooldownMinutes: 15,
maxFailures: 3,
});
设置凭证
// Polymarket (API + 签名密钥)
await creds.setCredentials({
userId: 'user-123',
platform: 'polymarket',
credentials: {
apiKey: 'pk_...',
apiSecret: 'sk_...',
privateKey: '0x...', // 用于订单签名
funderAddress: '0x...',
},
});
// Kalshi (API密钥)
await creds.setCredentials({
userId: 'user-123',
platform: 'kalshi',
credentials: {
email: 'user@example.com',
apiKey: 'key_...',
},
});
// Binance Futures
await creds.setCredentials({
userId: 'user-123',
platform: 'binance',
credentials: {
apiKey: 'abc...',
apiSecret: 'xyz...',
},
});
// Hyperliquid (钱包)
await creds.setCredentials({
userId: 'user-123',
platform: 'hyperliquid',
credentials: {
privateKey: '0x...',
walletAddress: '0x...',
},
});
获取凭证
// 获取特定平台
const polymarketCreds = await creds.getCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (polymarketCreds) {
console.log(`API Key: ${polymarketCreds.apiKey}`);
// 凭证在检索时解密
}
// 列出用户配置的平台
const platforms = await creds.listUserPlatforms('user-123');
console.log(`Configured: ${platforms.join(', ')}`);
删除凭证
// 移除单个平台
await creds.deleteCredentials({
userId: 'user-123',
platform: 'kalshi',
});
// 移除用户所有凭证
await creds.deleteAllCredentials('user-123');
测试凭证
// 测试API连接
const result = await creds.testCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (result.success) {
console.log(`✓ Connected to ${result.platform}`);
console.log(` Balance: $${result.balance}`);
} else {
console.log(`✗ Failed: ${result.error}`);
}
冷却管理
// 标记失败认证尝试
await creds.markFailure({
userId: 'user-123',
platform: 'kalshi',
error: 'Invalid API key',
});
// 检查是否在冷却中
const inCooldown = await creds.isInCooldown({
userId: 'user-123',
platform: 'kalshi',
});
if (inCooldown) {
const remaining = await creds.getCooldownRemaining({
userId: 'user-123',
platform: 'kalshi',
});
console.log(`Cooldown: ${remaining} minutes remaining`);
}
// 标记成功认证(重置失败)
await creds.markSuccess({
userId: 'user-123',
platform: 'kalshi',
});
构建交易上下文
// 获取准备使用的交易上下文
const context = await creds.buildTradingContext({
userId: 'user-123',
platform: 'polymarket',
});
// 上下文包含认证客户端
await context.client.getBalance();
await context.client.placeOrder({ ... });
支持平台
| 平台 |
所需凭证 |
| Polymarket |
API密钥、密钥、私钥、资助者地址 |
| Kalshi |
邮箱、API密钥 |
| Betfair |
应用密钥、会话令牌 |
| Smarkets |
API密钥 |
| Binance |
API密钥、密钥 |
| Bybit |
API密钥、密钥 |
| Hyperliquid |
私钥、钱包地址 |
| MEXC |
API密钥、密钥 |
安全特性
| 特性 |
描述 |
| AES-256-GCM |
军事级加密存储 |
| 每用户密钥 |
隔离的凭证存储 |
| 冷却 |
失败尝试的速率限制 |
| 无日志记录 |
秘密从不记录 |
| 内存清除 |
使用后凭证从内存中清除 |
环境变量
# 必需加密密钥(使用生成:openssl rand -hex 32)
CREDENTIALS_KEY=your-64-char-hex-key
# 可选:每平台密钥
POLYMARKET_API_KEY=pk_...
POLYMARKET_API_SECRET=sk_...
POLYMARKET_PRIVATE_KEY=0x...
KALSHI_EMAIL=user@example.com
KALSHI_API_KEY=key_...
最佳实践
- 强加密密钥 — 使用
openssl rand -hex 32
- 定期轮换密钥 — 定期更新API密钥
- 添加后测试 — 始终验证凭证工作
- 最小权限 — 尽可能使用只读密钥
- 安全备份 — 保持加密备份离线