Spark Program | CKB-UGMP —— A Universal Spore/DOB Seamless Minting Infrastructure Prototype on CKB —— 基于 CKB 的通用 Spore/DOB 无感铸造基础设施原型

Hi @xingtianchunyan ,
非常感谢委员会的理解。很高兴能收到委员会提出的问题!

Pinata 上传流程

在目前 UGMP 的架构里,前端不直接请求 Pinata,由服务器通过其提供的PINATA_JWT 发出请求。

  1. 前端向 UGMP 服务器的 multipart/form-data 接口提交图片。
  2. 服务器校验后调用 Pinata API:https://api.pinata.cloud/pinning/pinFileToIPFS
  3. Pinata 返回 IpfsHash
  4. 服务端把结果整理为统一的 UploadResult 返回给前端。

对应代码位置:

  • API route:app/api/uploads/pinata/route.ts
  • Pinata wrapper:lib/pinata.ts

dob_metadata 结构

当前链上 metadata 使用最小字段:

{
  "v": 0,
  "n": "image.jpg",
  "r": "ipfs://QmXQG5m7zH43PU4zRtnzjxYPkPY1kMiDhicKJMpK1A9Dqx",
  "m": "image/jpeg"
}

字段含义:

  • v:metadata schema version,目前为 0
  • n:展示名称,通常使用上传文件名。
  • r:resource URI,也就是 ipfs://{cid}
  • m:资源 MIME type,例如 image/pngimage/jpeg

存储选项取舍

CKB-UGMP 目前将 IPFS 作为默认方案,但设计上保留了其他存储方式的空间。

IPFS / Pinata

优点:

  • 链上只保存短 URI,对于较大的资源,成本低。
  • 不依赖中心化平台。
  • Pinata 提供 pin 服务,能提高资源可用性。
  • 其他网关、索引器或渲染器也能解析资源。

缺点:

  • 浏览器通常不能直接打开 ipfs://,需要网关或支持 IPFS 的客户端。
  • 如果没有 pin,资源可能随时间变得不可用。
  • 网关可能很慢。

纯文本上链

适用场景:

  • metadata 极小。
  • 资源本身就是文本、JSON等。
  • 需要最大程度保证内容随链永久可读。

优点:

  • 内容直接在 CKB 上,不依赖外部存储服务。
  • 可验证性和长期可用性最强。
  • 对索引器和链上解析最直接。

缺点:

  • 单位成本极其昂贵。

适合极小文本、小 JSON,不适合作为图片类 DOB 的默认方案。

中心化平台 URL

适用场景:

  • 快速原型。
  • 项目方已有稳定 CDN 或对象存储。
  • 对长期去中心化可用性要求不高。

优点:

  • 实现简单。
  • 浏览器兼容性好。
  • 加载速度和缓存可控。

缺点:

  • URL 指向的内容可以被替换、删除或失效。
  • 长期可用性依赖平台或项目方。

关于部分 DOB 图片可视性的问题

目前我推测有两种可能

  1. Pinata 网关 fetch 速度比较慢,对于较大的图片,很可能加载缓慢或直接超时。
  2. 对于宽高比例失调的图片,渲染器可能没有比较好的渲染效果,导致有一种看不到图片的感觉。

请问方便提供出现问题的 DOB 的相关信息吗,以及上传图片的比例、大小信息吗?我也会在未来几天不断测试。

祝好,
HNO3Miracle

3 Likes