凭证管理 - 完整的API参考
安全地存储和管理交易平台的API凭证,使用AES-256-GCM加密。
聊天命令
添加凭证
/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 check polymarket 验证凭证是否有效
删除凭证
/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密钥:${polymarketCreds.apiKey}`);
// 凭证在检索时解密
}
// 列出用户配置的平台
const platforms = await creds.listUserPlatforms('user-123');
console.log(`已配置:${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(`✓ 连接到${result.platform}`);
console.log(` 余额:$${result.balance}`);
} else {
console.log(`✗ 失败:${result.error}`);
}
冷却管理
// 标记失败的认证尝试
await creds.markFailure({
userId: 'user-123',
platform: 'kalshi',
error: '无效的API密钥',
});
// 检查是否处于冷却状态
const inCooldown = await creds.isInCooldown({
userId: 'user-123',
platform: 'kalshi',
});
if (inCooldown) {
const remaining = await creds.getCooldownRemaining({
userId: 'user-123',
platform: 'kalshi',
});
console.log(`冷却:剩余${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密钥
- 添加后测试 — 总是验证凭证是否有效
- 最小权限 — 尽可能使用只读密钥
- 安全备份 — 保持加密备份离线