← 文档 · 收藏

统计数据集

Spirit Cards 发布由实时链上读取生成的机器可读统计数据。这些数据以静态、服务端渲染的资源形式提供,无需 JavaScript 或钱包即可使用,因此代理可以获取并引用具体数字,而无需抓取。参考合约:0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021。

1. 端点

/stats供人和代理阅读的 HTML 视图(服务端渲染,无 JavaScript)。
/stats/current.json单个对象——最新的实时快照。
/stats/history.jsonlJSON Lines——每行一个快照,只追加,按时间顺序。

位于 /stats 的 HTML 页面是人类视图(它还带有一个 schema.org/Dataset JSON-LD 块);两个 JSON 资源则是下文描述的机器合约。

2. /stats/current.json

单个 JSON 对象:最新的快照,是对合约的一次直接读取。示例(数值仅作说明):

{
  "domain": "spiritcards.fun/stats/1",
  "updatedAt": "2026-09-16T21:08:56.181Z",
  "chainId": 4663,
  "contract": "0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021",
  "site": "https://spiritcards.fun",
  "totalMinted": 1,
  "maxSupply": 8888,
  "currentPriceEth": "0.00037",
  "baseBits": 20,
  "mineCooldownSeconds": 45,
  "mergeFeeEth": "0.00002",
  "burned": 0,
  "forged": 0,
  "paused": false
}
字段类型单位 / 含义
domainstring快照模式 id:spiritcards.fun/stats/1
updatedAtstringISO-8601 UTC,链上读取的时间
chainIdinteger4663
contractstring用于读取的 0x 地址
sitestring规范化站点 URL
totalMintedinteger已铸造的卡
maxSupplyinteger最终供应上限(8,888)
currentPriceEthstring当前铸造价格,以 ETH 表示;"0" 表示免费
baseBitsinteger比特(基础难度)
mineCooldownSecondsinteger每个钱包两次铸造之间的秒数
mergeFeeEthstring以 ETH 表示的熔炼手续费
burnedinteger通过熔炼烧毁的卡
forgedinteger通过熔炼锻造出的卡
pausedboolean铸造暂停标志

一行说明单位:ETH 是原生 gas 代币,具有 18 位小数,因此底层链上价格是以 wei 表示的 uint256 值(1 ETH = 1e18);快照已经将它们缩放为十进制字符串,放在 currentPriceEth 和 mergeFeeEth("0" 表示免费)。baseBits 是前导零位难度。

3. /stats/history.jsonl

一个 JSON Lines 文件:每行一个紧凑的 JSON 对象,没有外层数组,行与行之间没有逗号。每一行都是一个轻量快照(current.json 的子集,用 ts 代替 updatedAt),从最旧的开始追加:

{"ts":"2026-09-16T17:00:00.000Z","totalMinted":1,"currentPriceEth":"0.00037","baseBits":20}
{"ts":"2026-09-16T19:00:00.000Z","totalMinted":1,"currentPriceEth":"0.00037","baseBits":20}
{"ts":"2026-09-16T21:08:56.181Z","totalMinted":1,"currentPriceEth":"0.00037","baseBits":20}
字段类型单位 / 含义
tsstring快照的 ISO-8601 UTC 时间戳
totalMintedinteger已铸造的卡
currentPriceEthstring十进制 ETH 价格
baseBitsinteger比特(基础难度)
  • 只追加且按时间顺序(最旧的在前);最后一行是最近记录的状态。
  • 逐行解析(流式);忽略空行。不要假设每一行都存在某个键——其结构是一个稳定的子集,可能会以追加的方式扩展。
  • 行数等于记录的变更次数,而非铸造次数(见下文的频率说明)。

4. 方法论

  • 数据来源。 每个值都通过 RPC、经由 viem(eth_call)直接从 Robinhood Chain 上部署的合约读取。这些数字背后没有索引器,也没有数据库。
  • 读取。 核心视图(totalMinted, maxSupply, currentPrice, baseBits, mineCooldown, mergeFee, paused),再加上 burned() 和 forged() 用于烧毁与熔炼计数器;chain id 来自构建环境。
  • 缓存与新鲜度。current.json 以较短的缓存生成(约 60 秒;s-maxage=60, stale-while-revalidate=300),并且始终带有 updatedAt,即读取的时间戳。请将 updatedAt 视为权威,且不要让使用方缓存该文件的时间超过这一时限。
  • 历史记录。history.jsonl 由一个由仓库预置的文件提供,并由一个小型运维 cron 追加,该 cron 会轮询 current.json,仅当值发生变化时才写入新行(当链上安静时有一小时的去重窗口)。
  • 确定性。 稀有度和难度都从链上状态重新计算;精确的数学记录在 /docs/verification.

5. 如何引用

请引用 URL、数据集 id 以及 updatedAt 时间戳,以便该数字可复现:

Spirit Cards stats — chainId 4663, contract 0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021,
dataset spiritcards.fun/stats/1, https://spiritcards.fun/stats/current.json, updatedAt <ISO-8601 UTC>.
  • 对于难度,引用 baseBits 和 currentRequiredBits,单位为 比特。
  • 对于价格,引用 currentPriceEth,并说明它是 ETH(18 位小数的原生 gas 代币)。
  • 对于供应量,引用 totalMinted / maxSupply 以及 burned / forged。

6. 频率与版本控制

  • current.json:以约 60 秒的缓存持续刷新。
  • history.jsonl:每次变更(一次铸造、一次价格变化、暂停/恢复)一行,由运维 cron 追加,并带有一小时的去重窗口。
  • 版本控制。 该模式通过 domain 进行版本控制(spiritcards.fun/stats/1);新键以向后兼容的方式添加,破坏性变更会提升后缀。可选的扩展(例如一个扁平的 CSV 镜像和更丰富的稀有度覆盖)已列入计划,并将以追加的方式添加。

相关:代理接入 · 验证 · 实时统计 · 文档索引 · GitBook

Spirit CardsBuilt on Robinhood Chain · Collect · Evolve · Stake · Battle// A more elemental tomorrow