端到端 Bitnow 网络 API 工作流,适用于 AI 代理。涵盖基于钱包签名的身份验证、链上充值监控、消费 API 密钥生命周期(...
Bitnow Control Plane (API- Driven) Skill. 此技能描述Bitnow网络的端到端操作工作流程,严格从API使用角度. .是一项面向实际任务的技能,主要用于Wallet 认证(签名)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
本技能描述了 Bitnow 网络的端到端运维工作流,严格限定于API 使用视角。
前提假设:
https://gateway-test.bitnow.ai)请根据需要将所有 替换为实际网关 URL。
注意:消息签名必须由用户使用其 EVM 地址完成,仅可用于发起或验证,不可由系统代为生成签名。如尚无钱包地址,需自行创建并妥善保管。
典型 API 调用序列如下:
curl -sS -X POST "响应(简化版):/v1/auth/wallet/challenge" -H "Content-Type: application/json" -d '{ "wallet_address": " ", "chain_id": "8453" }'
{
"message": "Sign-In With Ethereum message...",
"nonce": "random-nonce",
"wallet_address": "0x...",
"chain_id": "8453"
}
message 进行签名。curl -sS -X POST "成功响应(简化版):/v1/auth/wallet/verify" -H "Content-Type: application/json" -d '{ "wallet_address": " ", "nonce": "random-nonce", "signature": " " }'
{
"login_token": "sess-...",
"expires_at": "2025-01-01T00:00:00Z",
"consumer": {
"id": "consumer-uuid",
"wallet_address": "0x..."
},
"session": {
"id": "session-uuid"
}
}
login_token(以 sess- 开头)作为会话令牌使用:Authorization: Bearer 请求头发送。校验项:
Authorization: Bearer sess-... 请求头,且其中会话令牌有效。充值操作在链上执行(将 USDC 转入 ConsumerDeposit 合约),由链下索引器追踪状态。API 提供结果验证能力。
您可使用自有节点,亦可使用默认节点:https://sepolia.base.org
0x10065E7b353371DD2e12348e7094cC774638EbEB0xB0E9ebf19AB710d3353c7F637DC55329d9727dCcapprove 授权额度function deposit(uint256 amount)通过 API 验证余额:
curl -sS -X GET "/v1/balance" -H "Authorization: Bearer "
示例响应:
{
"balance_usdc": "123.45",
"total_spent": "10.00"
}
故障排查建议:
balance_usdc 值,用于识别索引器异常或同步延迟问题。消费者可通过 API 密钥访问模型,无需维持会话。
需提供有效的会话令牌(来自第 1 节的 login_token)。
curl -sS -X POST "/v1/consumer/api-keys" -H "Content-Type: application/json" -H "Authorization: Bearer " -d '{ "label": "my-key" }'
示例响应(请安全保存 api_key;该值仅返回一次!):
{
"id": "key-uuid",
"api_key": "sk-consumer-...",
"prefix": "sk-cons",
"suffix": "abcd",
"label": "my-key",
"status": "active",
"created_at": "2025-01-01T00:00:00Z"
}
curl -sS -X GET "/v1/consumer/api-keys" -H "Authorization: Bearer "
curl -sS -X DELETE "/v1/consumer/api-keys/ " -H "Authorization: Bearer "
密钥状态将被设为 revoked;此后使用该密钥的调用将因鉴权失败而报错。
此接口用于让子账户声明其上级账户。该操作需对结构化消息进行钱包签名,且签名必须由子钱包生成。
接口地址:
curl -sS -X POST "/v1/consumers/me/parent" -H "Content-Type: application/json" -H "Authorization: Bearer " -d '{ "parent_wallet": " ", "issued_at": 1710000000, "signature": " " }'
注意事项:
issued_at 为Unix 秒时间戳,必须距当前时间不超过 5 分钟,且不得超前于当前时间超过 1 分钟。Authorize parent for DePIN LLM Parent wallet:Child wallet: Issued at:
成功响应(HTTP 201):
{
"parent_consumer_id": "consumer-uuid",
"parent_wallet_address": "0x...",
"created_at": "2025-01-01T00:00:00Z"
}
常见错误码:
400 INVALID_REQUEST:请求体格式无效400 SIGNATURE_EXPIRED:issued_at 时间戳超出窗口范围404 PARENT_NOT_FOUND:未找到指定上级账户400 SELF_PARENT:禁止声明自身为上级401 SIGNATURE_MISMATCH:签名非来自子钱包409 ALREADY_SET:上级账户已声明持有有效的 CONSUMER_API_KEY 后,即可调用模型。
curl -sS -X GET "/v1/models"
使用前务必校验:通过返回列表确认目标模型存在。
curl -sS -X POST "/v1/chat" -H "Content-Type: application/json" -H "Authorization: Bearer " -d '{ "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Explain the Bitnow network in one paragraph." } ] }'
API 错误处理:
401:密钥无效或已过期;请检查 Authorization 请求头402:余额不足404:模型未找到(检查 MODEL_NOT_FOUND 错误码)error.code 和 error.message 字段获取详细信息(参见第 2 节,/v1/balance 接口)
用量数据通过消费者作用域的接口暴露:
curl -sS -X GET "/v1/usage?limit=100&offset=0" -H "Authorization: Bearer "
响应由 Registry 代理返回,通常包含以下字段:
id —— 用量记录 IDtimestamp / created_at —— 调用被记录的时间model —— 模型名称(例如:gpt-4o-mini)promptTokens —— 提示词 token 数量completionTokens —— 补全 token 数量costUsdc —— 本次调用产生的 USDC 成本apiKeyId —— 可选,本次调用所使用的消费者 API 密钥 ID典型工作流可能按模型或时间段聚合用量,用于成本与 token 消耗分析。
仅限上游服务提供商使用:
curl -sS -X POST "/v1/suppliers/api-key" -H "Content-Type: application/json" -d '{ "wallet_address": " ", "provider": "openai", "api_key": "sk-upstream-...", "models": ["gpt-4o", "gpt-4o-mini"], "price_per_million_tokens": "2.50", "max_requests_per_hour": 3600 }'
curl -sS -X POST "/v1/suppliers/gpu" -H "Content-Type: application/json" -d '{ "wallet_address": " ", "models": ["gpt-4o", "claude-3-5-sonnet-20241022"], "price_per_million_tokens": "5.00", "max_requests_per_hour": 1000, "endpoint": { "base_url": "https://gpu-node.example.com", "backend_type": "openai_http", "timeout": 30000, "auth_type": "bearer", "auth_value": "upstream-node-token", "health_endpoint": "/healthz" } }'
curl -sS -X PATCH "/v1/suppliers/gpu/ " -H "Content-Type: application/json" -d '{ "models": ["gpt-4o", "gpt-4o-mini"], "price_per_million_tokens": "4.50", "max_requests_per_hour": 2000, "endpoint": { "base_url": "https://gpu-node.example.com", "backend_type": "openai_http", "timeout": 45000, "auth_type": "bearer", "auth_value": "rotated-node-token", "health_endpoint": "/healthz" } }'
curl -sS -X GET "/v1/metadata/providers" curl -sS -X GET " /v1/metadata/models"
在处理 Bitnow 网络运维支持任务时,请遵循以下最佳实践:
、 等)。error.code 及上下文选择修复步骤。