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

各位好,分享一下这周的工作:

本周完成

本周推进了展示大厅的建设。由于签名的问题,等待问题解决后进一步调试

  • 推进了展示大厅的建设,理论上可以展示图片
  • 理论上会展示图片、CID、文件大小、Spore ID、tx hash。
  • 又补了 lookup,可按 CID、IPFS URI、Spore ID、tx hash 反查记录。

当前状态

项目现在已经具备一条演示链路,理论上具有签名上链的能力:

  • 选择图片资源。
  • 上传到 Pinata / IPFS。
  • 生成 DOB metadata 草案。
  • dry-run 生成本地模拟结果。
  • 保存上传记录和 mint 草案。
  • 刷新页面后仍可恢复记录。
  • 理论上可展示铸造的结果。

这条链路虽然没有完成链上写入,但可以证明 UGMP 的核心数据流已经跑通:资源上传、metadata 生成、Spore 输入构造和结果管理。

问题

  • JoyID 签名仍然会直接跳转到设备的 Passkey 选择,不会跳转到 Chrome Password Manager 的 Passkey 选择,而且没找到可以通过代码更改的地方。
  • 目前在 Windows, Arch Linux, Android 设备上 使用 Chrome (Chromium) 浏览器都是一样的结果。可能要在论坛上寻求下 JoyID 相关的帮助。

下周计划

  • 继续尝试解决上述问题,解决之后把后续展示等链路跑通。

另,Github 仓库已公开HNO3Miracle/CKB-UGMP

祝好
HNO3Miracle

2 Likes

Hi @HNO3Miracle

感谢你在 #20 楼贴出的 demo 超链接,我们这边尝试体验时该链接当前返回 HTTP 400,因此委员会与社区暂时无法实际走通体验与验证。

麻烦你优先处理两件事:

修复 demo 访问问题,并在帖子中正式更新一个可用链接,并且避免用当前这种方式展示链接,目前很多社区成员可能不敢点击。
(如果未来会频繁变更,建议同时给一个相对稳定的入口,并注明当前对应的版本/commit/tag。)

补一段最小可复现的体验步骤(3–6 步即可)
建议写清:连接什么钱包、哪些功能当前“可用/不可用”、以及每步看到什么结果算成功(尽量让外部体验者能自助复现)。

你把 demo 可用性先打通后,社区参与与后续验收都会顺畅很多。

祝好
行天
代表 Spark Program 委员会

3 Likes

实在不好意思,我的网站使用的是 https 协议,但我的链接给的是 http 的。
我的浏览器在访问时自动跳转到了成功过的页面,因此我没发现这个问题。
现在应该能正常访问了。
非常感谢 feedback

2 Likes

各位好,和各位分享复现步骤以及上周进度。

复现步骤

  1. 进入页面,点击连接钱包,根据步骤登录 joyid ckb 测试网钱包,会显示Address 还有 Capacity,即为连接成功。
  2. 选择图片资源,点击上传到 IPFS,上传成功后 CID,点击 Gateway 的网址可以正常访问脸上的图片。
  3. 点击 Mine DOB,即可把预览 JSON 上链,在 CKB Testnet 保存。(目前不可用)
  4. 点击 打开展示大厅,可以看到自己上传的图片。

本周完成

本周继续推进展示层和链上查询能力,并同步处理签名阻塞问题。

  • 推进了独立展示大厅页面 /gallery

  • 将大厅从本地历史视图升级为本地历史 + 链上查询入口

  • 增加了对 CKB testnet RPC 的直接查询,支持通过 tx hash 拉取链上交易摘要

  • 保留本地历史记录作为链上查询的兜底展示

  • 给 mint 流程增加了分步日志,方便定位卡在构造、签名还是广播

当前状态

现在项目已经具备一条更完整的演示链路:

  • 选择图片资源

  • 上传到 Pinata / IPFS

  • 生成 DOB metadata 草案

  • dry-run 保存本地结果

  • /gallery 中按 CID、IPFS URI、Spore ID 或 tx hash 检索

  • 当输入是合法 tx hash 时,直接查询 CKB testnet RPC

问题

  • JoyID 在 Windows 环境下仍会出现 WebAuthn / passkey 相关阻塞。

  • 有时签名完成后前端仍然会停留在等待状态,导致需要更详细的日志来定位。

  • 当前链上查询还停留在交易摘要级别,还没有直接解析 Spore cell 内容。

下周计划

  • 继续补链上 Spore / DOB 解析

  • /gallery 扩展为真正的链上资产大厅

  • 继续追踪 JoyID 签名阻塞点

祝好
HNO3Miracle

4 Likes

Hi @HNO3Miracle

感谢提交UGMP项目的阶段性成果。委员会在审阅后,有以下几点意见供您参考:

首先,目前的交付内容更偏向于面向开发者与新手的功能演示与教程,重点展示了储存方式、可选择协议等技术实现细节,尚未形成面向终端用户的完整产品形态。这意味着目前的成果与最初的设计方向存在一定区别。委员会非常愿意协助您厘清接下来的发展路径——究竟是深耕教程与开发者教育,还是转向完整的产品化落地。建议您明确核心定位,集中资源推进,避免在两条路径之间分散精力。

其次,当前方案中的网络费用较高,这可能会对普通用户的使用体验和接受度造成明显影响,建议在后续优化中予以重点考虑。

期待与您进一步沟通,共同确定最合适的推进方向。

祝好,
行天
代表星火计划委员会

3 Likes

Hi @xingtianchunyan ,

非常感谢委员会的细致评审以及建议。由于我个人最近事务繁多,很多事情可能没有及时跟进与回复,还请委员会以及社区的各位能谅解。

委员会提到的问题以及上周的进度我会在北京时间6月2日之内考虑好并回复,感谢各位的关心。

祝好,
HNO3Miracle

4 Likes

Hi @xingtianchunyan ,

您好。非常抱歉我的迟到。针对方向的问题,CKB-UGMP 项目还是保持原来的方向,让每个人都能随时随地的铸造DOB。即面向C端,转向完整的产品化落地。

以下是上周周报:

本周完成

  • 优化了 Spore Content 结构,只保存最小 DOB metadata,体积减少 70%.
  • 在 Windows / Mac / Arch Linux / Android 上测试了项目。其中 Mac 能正常签名。
  • 精简了一些不必要的内容。

下周计划

  • 继续完善前端页面,展示大厅。
  • 继续研究大多数平台的签名跳转问题。

祝好,
HNO3Miracle

5 Likes

Hi, Everyone:

很抱歉没能如约,在上周末报告每周进度。我最近骨折了,经常往医院跑,可能进度会放缓一些,但是我会始终保持跟进。

我想知道目前的项目是否达到了交付标准。目前在 Mac 平台已经达成了 MVP 的所有内容。在其他平台,整个流程会卡在 JoyID 签名的部分,这可能超出了我作为这个项目开发者的能力与范围。

成功证明如下:


期待委员会和社区的沟通与反馈。

祝好,
HNO3Miracle

3 Likes

Hi @HNO3Miracle

身体优先,先养好伤。骨折恢复急不得,项目进度慢一点完全没关系,你的健康才是最重要的。周报什么的不用有压力,能跟上就跟上,需要延期的话随时和我说。

关于你在 Mac 平台上达成的 MVP,委员会已经体验过了。目前的效果已经很好,使用体验非常流畅!

另外有一个委员会比较看重的事情希望能得到你的配合:因为 CKB 原有的设计里没有针对 IPFS 的支持做出专门的优化,所以你的实现方式可能成为原有方式的标准补充——也就是说,你的方案不仅对这个项目有价值,对整个 CKB 生态的存储方案都可能是一个重要参考。所以我们希望你能够将目前的实现方式落实为文档,包括:

  1. 你是如何通过 Pinata API 将资源上传至 IPFS 的
  2. 生成的 CID 是如何写入 Spore DOB 的 dob_metadata 中的
  3. 各存储选项(IPFS / 纯文本上链 / 中心化平台)的取舍逻辑

还有一个小问题想请你也在文档中说明一下:为什么有的 DOB 可以看到图片,有的不行? 我们注意到展示效果有不一致的情况,因此想了解一下是存储方式不同导致的,还是渲染层面的问题。

关于其他平台 JoyID 签名的问题——如果这确实超出了你作为项目开发者的能力范围,不用硬扛。可以在结项报告中如实说明,把已完成的 Mac 平台作为核心交付物,其他平台的兼容性作为已知限制和后续方向即可。

再次提醒,好好休息,身体第一。项目的事不急,等你有精力的时候再慢慢推进。

祝早日康复,
行天
代表 Spark Program 委员会

5 Likes

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

Hi @HNO3Miracle ,

希望你的腿已经恢复,委员会很高兴看到你的回复!

感谢你对前面两个问题的说明,委员会暂时没有更多问题,期待你后续的更新~~

祝早日康复
xingtian
On behalf of the Spark Program Committee

2 Likes

Hi Spark Program Commitee and Nervos Community,

我作为开发者,正式向委员会提出结项申请。

经过两个月的开发,在委员会及大家的不断关注与反馈下,CKB-UGMP 项目已经实现主帖中承诺的全部内容,提供了一个低门槛、人人可用的 Spore/DOB 通用铸造平台。隐藏技术细节,减少人机交互中的阻力。在 Mac 平台上得到了验证。

本项目的交付物:

体验步骤: 连接 JoyID 测试网钱包 → 选择图片 → 上传到 IPFS →确认并铸造 DOB → 打开展示大厅查看

注意:非 Mac 平台无法签名,需在铸造这步改为 dry-run

在 MVP 以外,代码仓库提供了 Dockerfile,方便部署。

在 CKB-UGMP 项目正式结项后,我也会持续关注 Nervos 社区和 CKB 生态,期待能和整个社区和生态保持进一步的联系。

祝好,
HNO3Miracle
代表 CKB-UGMP 项目

2 Likes

新的 CKB 接收地址:
ckb1qrgqep8saj8agswr30pls73hra28ry8jlnlc3ejzh3dl2ju7xxpjxqgqqxqe8kkt2pqzwnl8kgd45kxsjyqh5kh75vscrknr

1 Like

1. 结项评价 / Final Evaluation

完成日期 / Completion Date:2026年6月25日

评价摘要 / Evaluation Summary:

CKB-UGMP 是一个基于 CKB 的通用 Spore/DOB 无感铸造基础设施原型,旨在降低 Web3 资产发行的人机交互门槛。项目在 8 周内(2026年4月21日 ~ 2026年6月25日)完成了核心交付,公开交付物包括:开源代码仓库、Web Demo、Docker 部署文件,以及完整的铸造流程验证。

主要成果 / Key Achievements:

  1. 交付了端到端的 Spore/DOB 铸造 DApp:
    实现了"本地图片上传 → IPFS 存储 → DOB 铸造 → 展示大厅查看"的完整核心流程,用户无需理解底层机制即可完成资产发行与确权。
  2. 交付了混合存储方案(Storage Selector):
    用户可通过前端下拉菜单自由选择存储层(IPFS 去中心化网络、纯文本原生上链或中心化平台),生成的资源哈希(CID)自动写入 Spore DOB 的 dob_metadata 中。
  3. 交付了钱包中立的极简交互:
    深度集成 @ckb-ccc/core,支持 JoyID、MetaMask 等主流钱包,由终端用户直接签名并支付铸造费用,隐藏复杂的铸造细节。
  4. 交付了可复现的验证环境:
    Web Demo 已部署至 https://ugmp.hno3.top/, reviewer 可通过"连接 JoyID 测试网钱包 → 选择图片 → 上传到 IPFS → 确认并铸造 DOB → 打开展示大厅查看"的步骤独立完成验证。代码仓库提供 Dockerfile,方便本地化部署。

创新点与价值 / Innovation & Value:

  • CKB 生态首个面向终端用户的无感铸造平台:
    填补了 CKB 生态在 Spore/DOB 铸造前端工具领域的空白,为普通用户提供了无需理解底层合约即可发行数字资产的能力。
  • 混合存储的经济性创新:
    通过 Storage Selector 让用户在去中心化与经济性之间自主选择,解决了 CKB 链上存储成本高的痛点,为 Mass Adoption 提供了可行的交互方案。
  • Spore 协议的大众化入口:
    降低了 Spore 协议的使用门槛,使普通开发者和用户能够轻松调用 Spore 协议发行 DOB,持续赋能 CKB 的价值捕获。

2. 评审过程 / Review Process

2.1 申请审查

项目由开发者刘向奥(GitHub: HNO3Miracle)于 2025 年 3 月 17 日提交申请。初始提案名称为 CKB-UGAP(通用游戏成就协议),范围较广,涵盖游戏成就协议设计、中继服务端、多语言 SDK 等。委员会在首轮审查中提出以下要求:

  1. 缩小核心交付范围,将项目重点从游戏场景转向通用 Spore/DOB 铸造平台
  2. 补充具体的输出示例和可验证的验收方法
  3. 明确预算细目和团队背景
  4. 调整资助金额从申请的 1,500 USD 至符合纯技术开发类的 1,000 USD 上限

2.2 Pending 阶段

2025 年 3 月 24 日,委员会将项目置于 Pending 状态,提出以下反馈修改意见:

  1. 前端 Demo 需覆盖完整的核心流程:本地图片上传 → 铸造 DOB → 展示 DOB
  2. 建议经济模型聚焦 To-C,由用户自行承担铸造费用,B2B2C 部分作为后续扩展方向
  3. 将资助金额调整为 700 USD,理由是 CCC 库降低了集成成本,纯前端部署成本较低

2025 年 4 月 3 日,开发者确认接受 700 USD 的资助报价,偏好以 100% USDI 形式接收资金。

2.3 批准与执行

  • 2026 年 4 月 11 日: 星火计划委员会正式批准,预算 $1,000 USD(100% CKB 支付)
  • 2026 年 4 月 21 日: 项目正式启动开发
  • 每周文字更新: 开发者通过论坛帖子提交每周进度报告,期间因病短暂推迟一周
  • 结项申请: 2026 年 6 月 26 日提交结项申请,并发布交付物

2.4 委员会评审意见

委员会确认项目已实现主帖承诺的全部核心功能,评审结论为"提案完成度优秀"。

因大部分社区开发者处于英语环境,建议为 Demo 补充多语言(至少英文),降低英文社区参与难度,帮助社区更好地了解该项目。

3. 资金发放详情 / Funding Details

总预算:$700 USD,100% USDI 支付。

开发者 CKB 钱包地址:

ckb1qrgqep8saj8agswr30pls73hra28ry8jlnlc3ejzh3dl2ju7xxpjxqgqq8vz2g24arkjn5wslljsq97vtmmtlcm8hut4y06k

ckb1qrgqep8saj8agswr30pls73hra28ry8jlnlc3ejzh3dl2ju7xxpjxqgqqxqe8kkt2pqzwnl8kgd45kxsjyqh5kh75vscrknr

发放 / Installment 比例 / % 金额 / Amount (USDI) 交易哈希 / Hash
启动资金 20% 140 0xf5278d9019f4f0549d5e0e7959fc1d8e802e194581bad5ee74e08678387a40ba
结项资金 80% 560 0x2a685fb4f67359a362128ae64e44cd1de485e7b81c3d70671dc1cf4c01c55575

委员会提醒:

请尽快将 USDI 换成其它稳定币,以避免不必要的损失。具体情况参见 ( interpaystellar on X: "Dear community: USDI on CKB will be discontinued.⚠️Institutional swap service has ended. Individual holders can swap via https://t.co/I84C9lsS0T until Aug 15, 2026; the channel may close after. IPN Team" / X )。

4. 委员会复盘 / Spark Committee Reflection

经验 1:前端 DApp 项目需要充分考虑钱包兼容性与跨平台验证

CKB-UGMP 依赖 JoyID 的 WebAuthn / Passkey 签名机制完成铸造交易。项目在非 Mac 平台(Windows、Arch Linux、Android)上均遇到了签名完成后前端无法正确接收回调的问题,导致除 Mac 外的大部分用户无法完成完整的链上铸造流程。

建议: 对于依赖特定钱包签名的前端项目,验收清单应包含"多平台兼容性测试(至少覆盖 Mac / Windows / Linux)+ dry-run 降级模式 + 明确的平台支持声明"。在项目初期就与钱包团队确认已验证的平台范围。

经验 2:多语言支持应在项目早期纳入规划

UGMP 项目的 Demo 界面为中文,而 CKB 生态的大部分开发者活动于英语环境中。这一语言差异降低了项目的可验证性和通用性,也是委员会在验收阶段提出的主要改进建议。

建议: 对于面向终端用户的 DApp 项目,应在申请阶段将"至少支持英语"作为基础交付条件,而非结项后的可选改进项。若开发者有余力,可进一步进行中英文双语支持。

5. 总结 / Conclusion

CKB-UGMP 在约 8 周内完成了全部核心交付物,在 Mac 平台上通过了"连接钱包 → 选择图片 → IPFS 上传 → 铸造 DOB → 展示大厅查看"的端到端验证。项目以 $700 预算实现了一个基于 Next.js + @ckb-ccc/core + Spore Protocol 的通用铸造平台原型,包含完整的 IPFS 去中心化存储集成、最小化 DOB metadata 方案和 Docker 可复现部署环境。

在实际使用上,CKB-UGMP 完全实现了其声明的核心功能——让普通用户在无需理解底层机制的情况下完成数字资产铸造。填补了 CKB 生态在"面向终端用户的通用铸造工具"领域的空白,其极简设计理念也为生态内其他面向普通用户的 DApp 项目提供了可参考的产品范式。

交付物链接

GitHub 仓库:GitHub - HNO3Miracle/CKB-UGMP · GitHub
Web Demo:https://ugmp.hno3.top/

Best,
xingtian
On behalf of Spark Program Committee

1 Like