TapeOutScanTAPEOUT EXPLORER
DEVELOPER DOCUMENTATION · V1

把已核实的链上数据
接入你的产品。

Circuit、钱包持仓、链上事件与成交记录。登录 TapeOutScan 即可创建 API Key,沿用现有积分和会员权益。

只读数据 API

快速开始

  1. 登录 TapeOutScan,进入个人中心的「我的 API」。所有用户均可直接创建密钥,无需申请审批。
  2. 填写用途,新建 API Key,立即保存 Key 和 Secret。Secret 只展示一次。
  3. 在你的服务器上签名并调用接口。Secret 不应放进前端网页、App 包或公开代码仓库。

服务地址:https://tapeoutexplorer.com;接口前缀:/v1。每账号最多 3 个有效 Key,可随时停用;更换密钥时先创建新 Key,再停用旧 Key。

接口规范与代码示例是什么?

OpenAPI 3.1 是接口说明书的标准格式,列出接口地址、参数、认证方式和返回字段,便于开发者导入 Postman、Swagger 等工具阅读或生成调用代码。3.1 是这份规范的版本号。

Python 代码示例 是一段用 Python 编写的调用程序,演示如何读取 Key / Secret、生成签名并查询数据。可交给开发人员参考;实际请求会按相同积分规则计费。

当前能提供什么

提供资产资料、持有人、挖矿快照、成交记录、账号活动与汇总统计。所有返回都附带 meta.scope、检查点和更新时间。

链CPUCollection
BNB Smart Chain · 56TapeOut · 300xb1024b89886b9a34aa4ff5f31c411d708b20a14c
BNB Smart Chain · 56Behemoth · 10x1f5cb4aeae1807bf60c3b9c0d8adbcc14e91f12c

未收录的资产返回 ASSET_NOT_INDEXED,不代表链上不存在。余额、所有权和挖矿状态均以最后一次索引为准;成交金额不能当作当前报价。

请求签名

所有 /v1/* 接口(包括健康检查)均需下列请求头。仅支持 GET,无请求体、无浏览器跨域调用。

请求头值
X-TOS-Key创建时得到的 API Key
X-TOS-TimestampUnix 秒时间戳,允许与服务器相差 ±60 秒
X-TOS-Nonce每次请求随机且唯一,16–64 位字母、数字、下划线或连字符
X-TOS-SignatureHMAC-SHA256 结果,小写十六进制

签名原文为下面 5 行,使用换行符 \n 连接,末尾没有换行:

GET
/v1/circuits?chainId=56&collection=30&limit=20
<timestamp>
<nonce>
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

最后一行是空请求体的 SHA-256。用 Secret 的 UTF-8 原文字节作为 HMAC 密钥,不做 Base64 解码。第二行必须与实际发送的路径和查询字符串逐字一致,包括编码和参数顺序;不得放入域名。

signature = HMAC_SHA256(secret, message).hexdigest()

同步服务器时钟;重试必须使用新时间戳和新 nonce。相同 nonce 会被拒绝。签名验证、过期检查、权限检查与限频均在服务端完成。

接口目录

GET 路径用途 / 查询参数查询积分
/v1/healthAPI 与索引更新时间、是否陈旧0
/v1/processors本期支持的 CPU 及合约0
/v1/stats各 CPU 已收录资产、持有人和算力统计0
/v1/circuits资产目录。collection、tokenId、limit、offset3 / 次
/v1/circuits/{collection}/{tokenId}单资产详情、当前索引所有者及挖矿快照2 / 次
/v1/accounts/{account}/holdings已收录持仓。collection、tokenId、limit、offset3 / 次
/v1/accounts/{account}/events已有链上活动。collection、fromBlock、limit、offset2 / 每 20 条
/v1/trades核验成交。collection、tokenId、account、fromBlock、limit、offset2 / 每 20 条

所有接口可带 chainId=56。collection 接受合约地址、CPU 编号(30 / 1)或别名(tapeout / behemoth)。account 为 0x 开头的 40 位十六进制地址。tokenId 为十进制字符串;当前底层索引支持 0 到 9223372036854775807。

列表默认 limit=20,范围 1–100;offset 范围 0–10000。fromBlock 是包含边界的最小区块号。成交和事件按区块倒序;Circuit 按内部 processor、tokenId 升序。未知参数、重复参数、其他链或合约会返回明确错误。

字段和数据口径

统一返回 {data, meta, requestId}。金额(wei)、tokenId 和算力以字符串返回,避免 JavaScript 大整数精度丢失。

字段说明
assetIdchainId:collection:tokenId;跨 CPU / 链关联时不得只用 tokenId
owner / observedBlock / updatedAt最后索引持有人和资产观察位置;不是即时 ownerOf 调用
mining现有矿工快照;null 代表无已收录快照,不能解释为绝对不可挖矿
sellerProceedsWei / feeWei / buyerTotalWei卖家实收、费用及买家实付;BNB,18 位小数,沿用已核验记录
evidenceBasis / txHash / logIndex成交证据类型和链上定位;仅支持已核验交易形态
meta.indexedBlock / checkpoints两个 CPU Transfer 检查点的最小确认区块,以及分流检查点;不是所有市场完整覆盖水位
meta.staleTransfer 检查点缺失或超过 10 分钟未更新时为 true
meta.paginationlimit、offset、hasMore、nextOffset;达到 offset 上限时 nextOffset 为 null,请缩小筛选范围
meta.points本次用量、共享余额、会员无限标记、每日会员剩余用量与 UTC+8 重置时间

每个请求使用一致的数据库快照;连续分页之间数据可能变化,需按 assetId、tradeId 或 eventId 去重,并定期回查近期数据以处理链重组。当前不是固定快照游标,也没有承诺商业 SLA。

返回示意(字段节选,非实时数据)

{
  "data": [{"chainId":56,"cpuId":"30","tokenId":"888","owner":"0x…"}],
  "meta": {
    "scope":{"coverage":"indexed_subset","allProcessors":false},
    "pagination":{"limit":20,"offset":0,"hasMore":false,"nextOffset":null},
    "points":{"cost":3,"remaining":117,"unlimited":false}
  },
  "requestId":"…"
}

共用积分,按账号保护服务

API 和网页直接使用同一账号的积分余额、充值/奖励积分及每日会员用量。普通账号每日 UTC+8 零点补足至 30 分,绑定 X 后为 120;高于基础额度的余额保留。会员沿用网站权益:月度/永久会员不扣余额,但查询用量仍计入现有每日上限。

仅成功的数据查询计分。事件和成交按请求的 limit 向上取整,每 20 条 2 分(例如 limit=50 计 6 分);相同查询再次成功仍计分。认证失败、查无资产、参数错误、服务错误和余额不足均不扣分。客户端在服务器成功处理后断网,仍可能已计分。

  • 所有已登录用户均可直接创建 API Key,无需激活码或续期;每账号每分钟最多 60 次。
  • 同账号所有 Key 合计每秒最多 3 次;API 另按账号会员档位限制短时查询积分。
  • 免费 / 充值 / 月度 / 永久档位每分钟 API 查询积分分别为 25 / 120 / 180 / 600;5 分钟和小时上限沿用同档网站策略。
  • 网页与 API 共用每日会员查询用量(充值/月度 1200 分,永久 6000 分)和共享 IP 积分防护;短时请求限频分别执行。
  • 整个 API 服务每分钟最多 600 次、每日最多 50,000 次请求,最多 4 个并行数据查询。这是初期限额,不是性能或可用性承诺。

API 请求保护采用固定时间窗(UTC 边界),积分日结仍为 UTC+8。免费接口也占调用次数。成功响应含 X-RateLimit-Limit、X-RateLimit-Remaining、X-Point-Cost;遇 429 请按 Retry-After 等待,不要用多个 Key 绕过。

错误处理

HTTP常见错误码处理方式
400 / 422INVALID_* / UNKNOWN_PARAMETER / UNSUPPORTED_CHAIN / UNSUPPORTED_COLLECTION核对参数和覆盖范围,不扣积分
401AUTH_INVALID核对签名、时间、Key 是否有效
404ASSET_NOT_INDEXED / ENDPOINT_NOT_SUPPORTED数据尚未收录或接口未支持
409NONCE_REUSED生成新 nonce;相同请求重放不会重复扣分
429RATE_LIMITED / POINTS_INSUFFICIENT / DAILY_POINTS_LIMIT / SHARED_IP_LIMIT查看 Retry-After;余额不足可通过网站获取积分
503SERVER_BUSY / SERVICE_BUSY退避重试,并记录 requestId 便于排查
{"error":{"code":"AUTH_INVALID"},"requestId":"…"}