
在上篇 《CKB Eco Fund|星火计划 Quantum Purse 结项公示》中,我们介绍了开发者 Tea(@tea2x on GitHub)的项目 Quantum Purse 脱颖而出,成功获得 CKB Eco Fund 星火计划 Spark Program提供的 700 美元资助。于此我们对 Tea 进行了书面专访,聊了项目的起点、开发过程中的技术选择,以及一些只有开发者才知道的幕后故事。中文版全文如下,与您分享——
1. 在深入细节之前,我们很想了解一下你本人。你是如何走上开发者之路的?又是什么样的契机让你对区块链技术,特别是对 Nervos CKB 产生了浓厚的兴趣?在 Quantum Purse 之前,你在 CKB 社区有过哪些贡献经历?Tea:大家好,我是 Tea(T)。我最初在一家芯片设计公司担任嵌入式软件工程师,主要负责测试 CPU 核心功能。当时主要使用汇编语言和 C++。长时间写汇编测试模式让我感到枯燥,我希望能做一些更直观、真正能触达终端用户的东西。所以我辞职了,并在 2021 年进入区块链领域。第一次接触加密领域时,我加入了一家基于 EOS(C++)构建的初创公司。但 EOS 热潮很快褪去,资金枯竭,我们转向了 EVM。我开始学习并使用 EVM 和 Solidity —— 学起来非常快且容易适应。那段时间我也开始读《Mastering Bitcoin》,并第一次听说了 CKB。2022 年 Luna 和 FTX 崩盘后,资金再次枯竭。到 2023 年底,我又一次辞职,这次决定单干。CKB 基于 RISC-V 的虚拟机,以及 Jordan 当时的介绍视频《What is Nervos?》一直让我印象深刻,加上当时 joyID 的推出,CKB 就成了我直觉上的下一个目标。它像是我一直寻找的平衡点——既不太高层,也不太底层。在 Quantum Purse 之前,我曾构建过一个名为 joyDAO 的 Nervos DAO 原型,后来交到了 CKBEcofund 团队手里,演变成了 NERVDAO。
2. 是什么启发你创造了 Quantum Purse?在很多人还觉得量子威胁遥不可及时,你为什么会选择专注于“抗量子安全”这个前沿领域?Tea:CKB 的抗量子安全话题在 Nervos Nation 的 Telegram 群里被讨论过几次,我当时也参与过,一开始还以为基金会在暗中开发相关功能。直到有一天,Leigh 给我发消息提议做一个抗量子安全钱包,我立刻就喜欢上了这个想法,于是联系了 Matt。考虑了几个方案之后,我们觉得独立开发一个新钱包是最可行的路线,于是我很快就开始动手。我对量子抗性早就感兴趣,远在 Quantum Purse 之前就有关注。虽然很多人觉得这是未来才需要担心的事,但我认为我们现在就需要能保护和强化数字遗产的密码学——就像防疫不能等疫情蔓延才行动一样,要提前预防。加密系统的真正价值在于防患于未然,而不是事后补救。量子技术的突破往往突然到来,因此抗量子密码学的应用应该快速且高调推进。
3. 你在星火计划的提案聚焦于增加 Nervos DAO 支持和构建原生桌面应用。在当时,为什么你认为这两项功能是项目最重要的下一步?Tea:现在的 Quantum Purse 是一个使用门槛较高的钱包(在很多方面可与 Neuron 相比)。使用者通常有长期持有的心态,并且对 Nervos 网络有足够信心。对于这类用户来说,Nervos DAO 是一个关键的长期应用,可以保护他们的投资免受二次通胀的影响。桌面应用则是必然选择。我不会推荐在没有 Passkeys(joyID 所使用的技术)保护的情况下使用网页版钱包。然而,Passkeys 并不具备抗量子安全性,所以没有选用它,而是把 Quantum Purse 做成了一个基于密码的钱包,希望用原生桌面应用,把整个方案打包好,完整地交到用户手里。PWA 应用(类似 joyID)也考虑过,但由于分发渠道不直接、优先级不高,最终放弃。
4. 你在开发过程中一个非常有趣的决定是,放弃了从零构建原生交易,转而为 ccc 开发了一个适配器。可以带我们回顾一下你做出这个重大转变时的心路历程吗?你是如何权衡利弊的?Tea:在构建最终变成 NERVDAO 的原型时,我曾按规范手动构建 Nervos DAO 交易,但这个过程很容易出错。我不想再重复这样的经历,虽然最初我的直觉也是从零开始构建。既然 NERVDAO 已经上线并且完全开源,那么复用它的交易构建方式就是自然而然的选择。同时,让 Quantum Purse 兼容 CCC 对长期开发有很大好处,因为这样可以更容易、更快地复用其他使用 CCC 的项目的代码,并且减少审计成本。比如我计划中的 iCKB 集成、UDT 支持等功能,CCC 兼容性都会有很大帮助。在 Quantum Purse 中,CCC 适配器是在 CCC 核心架构的更底层实现的,使用的是基于 SPHINCS+ 的签名器和 wasm 上运行的 CKB 轻客户端。这些新的构建模块组合在一起,是一种相对少见的 CKB Dapp 构建方式。幸运的是,CCC 架构允许这样的定制,Hanssen 也提供了精准的反馈,让开发过程很顺利。此外,另一款基于 Nostr 的钱包 Pocket Wallet 可能也走过类似路线,这让我在开发过程中更加确认了技术可行性。
5. 你使用 Electron 将一个 Web 应用转变成了桌面应用。在这个过程中,你遇到了哪些挑战?特别是在处理像 macOS 签名和公证这样特定于平台的问题时。Tea:这一部分没有太大挑战,Electron 是个很好的工具,Neuron 也曾走过类似的路径来推出桌面版应用。macOS 签名和公证属于苹果的生态,支持也很完善,所以相比钱包本身的开发,这并不是太大的负担。Windows 也需要类似的签名步骤,但 Windows 允许用户直接在界面上选择运行,而 macOS 则会隐藏,所以 macOS 的签名和公证才会出现在我的报告里。
6. 在评审阶段,有过一场关于密码长度的讨论。你是如何平衡前沿安全技术的需求(例如抗量子密码学所需的高熵)和用户体验的?你在这方面的设计哲学是什么?Tea:Quantum Purse 是一个基于密码的钱包方案,因此理想情况下,密码强度应与所使用的 SPHINCS+ 变体相当。但这在大多数情况下会让密码过长,并且需要新的使用习惯。允许更短的密码会让用户面临风险,甚至抵消 Quantum Purse 存在的意义。所谓抗量子,如果用户在量子攻击到来之前就因弱密码被黑,那就毫无意义。Quantum Purse 把每个密码的最少字符数提高到 20(接近 SPHINCS+ 128* 变体的安全级别),并做了一些增强以提升强度。它的密码输入检查机制能在一定程度上排除一些弱密码,但我仍建议用户尽量使用通过检查的强密码。密码越随机、越难记,就越安全。虽然看似反直觉,但强密码(或者足够高的原始熵)确实能抵御量子攻击。
7. 回顾整个星火计划的开发周期,你遇到的最棘手的技术难题是什么?你是如何克服它的?Tea:最棘手的技术难题是从前端角度去理解 Script 的错误代码含义。有时候,为了调试一个问题,我需要花几天时间来搭建一个能在 Script 中插入自定义调试代码的环境。有一次,我尝试让 Quantum Purse 的轻客户端连接到本地开发节点,但最终发现耗时太多,于是我直接把它改成通过 RPC 来运行,只是为了方便调试。希望随着工具链的成熟和知识的更多分享,这个过程未来会更容易。
8. 除了转向 ccc 适配器这个重大决定外,在开发过程中还有没有其他让你感到意外的技术发现,或让你不得不做出的艰难权衡?可以是一个很小的细节,但它却对项目产生了不成比例的影响。Tea:我第一个意外的发现是,Quantum Resistant Lock Script 的原型已经过时,因为它使用的是非标准化的 FIPS205(这是 SPHINCS+ 被 NIST 批准并收录后的新名称)。在那个阶段,我的签名器(离线)是基于 JavaScript 的,而验证器(链上)是用 C 语言实现的。幸运的是,有人用 Rust 开发了一个全功能的标准化 FIPS205 SPHINCS+ 实现,并且构建方式可以直接在 CKB VM 上使用和部署——这也是今天官方 Lock Script 所用的实现。后来,我用 Rust 构建了一个兼容 FIPS205 的版本,这样才能继续开发。现在 Quantum Purse 已经采用了新的官方 Lock Script,并从中受益,比如它的一体化配置可以在前端支持所有 12 种 SPHINCS+ 变体。另外,一个叫 CKB_TX_MESSAGE_ALL 的新提案(用于在签名和验证中生成 CKB 交易指纹,目前正在审核中)也被应用在官方的 Quantum Resistant Lock Script 中。这要求 Quantum Purse 在链下按照相同流程生成有效的交易指纹。我最初的直觉是直接在 Quantum Purse 的中间层生成它,但既然 Xuejie 已经写了 Rust crate 来做这件事,我就把它跑在 wasm 中,并返回 CKB_TX_MESSAGE_ALL。现在 CKB_TX_MESSAGE_ALL 已经在 CCC 等更多地方被支持,但当时这个方法让我比预期更早完成了 Quantum Purse 原型,并一直沿用到现在。
9. Quantum Purse 使用了 CKB 的轻客户端。可以分享一下你使用它的体验吗?对于其他想在轻客户端上构建 dApp 的开发者,你有什么建议?Tea:CKB 轻客户端是 Nervos 网络一项非常出色的技术基础设施。新的轻客户端库可以运行在 Web 环境中,这是一个我认为的“颠覆性”里程碑,因为能实现“真正移动端客户端”的区块链屈指可数。这个库单独运行很好,集成文档也很清晰,但最大的挑战是在把它与 CCC 集成,并让整个方案正常工作。目前它还不能完全发挥 CCC 的全部潜力,但对 Quantum Purse 现有的功能来说已经足够。如果你有现成的 dApp 或正在构建新的 dApp,建议尝试集成轻客户端。它现在支持 macOS、Windows、Linux,甚至支持在浏览器的 wasm 环境中运行。虽然它可能比传统的 RPC 接入方式更难,并且有一些限制,但让你的应用中直接运行一个节点是非常独特的体验。此外,这样构建你的应用,不仅是在构建一款产品,也是对更大开源生态的贡献,同时还能学到很多东西。希望未来 Quantum Purse 和 Pocket Wallet 可以通过示例代码让集成变得更简单。如果遇到问题,可以直接问轻客户端团队,或者去 Discord,那里的朋友会帮你,我也很乐意分享经验。
10. 社区成员 Phroi 提出了一个关于项目长期可持续性的好问题。现在星火计划的资助已完成,你对 Quantum Purse 的未来有什么想法?是否有关于长期维护或未来新功能的计划?Tea:Phroi 说得对,目前这个钱包还无法实现自我造血,主要资金仍来自 Nervos 基金会,这本身就是一个证明。在这个资助结束后,Quantum Purse 近期可以带来一些令人期待的功能(按优先级从高到低):比如 iCKB 集成、UDT 支持、多签、离线签名,甚至支持在钱包中运行全节点模式。从长期来看,如果出现了抗量子硬件钱包,或者新的抗量子 Lock Script,我会很兴奋地集成到 Quantum Purse 中。至于未来的开发激励,我也会考虑申请社区基金 DAO,这也是我一直想尝试的方向。
11. 承接上一个问题,申请 Community Fund DAO 以获得更长期的支持,会是你为项目下一阶段考虑的方向吗?
12. 作为第一位从星火计划毕业的开发者,对于 Nervos 社区里那些有好点子、正在考虑申请资助的开发者们,你有什么建议可以分享?Tea:先研究一下资助项目的范围,如果觉得适合,就去申请——你可能会收获乐趣、获得资金、积累经验,或者全部兼得。在我看来,这些收获都很有价值。星火计划的资助金额不算高,但能让你在早期阶段更轻松、更自由地部署和执行自己的想法。它还可能为你未来申请更大规模、更成功的社区基金 DAO 提案打开大门。
13. 你认为 Quantum Purse 如何为 Nervos 网络的宏大愿景做出贡献?是什么让 CKB 成为一个适合这类前瞻性项目生长的 L1?Tea:Quantum Purse 是一个前端应用,可以展示 CKB 及其后台的多项能力:PoW、轻客户端、RISC-V、加密算法无关性。首先,目前它可以作为一个很好的市场推广工具,希望能吸引更多人关注 Nervos 的开发生态。其次,通过开源分享其构建方法,我也希望能减轻其他钱包在升级抗量子加密或集成 CKB 超轻客户端时的开发负担。PoW 让 CKB 的轻客户端协议成为可能;RISC-V 虚拟机和 Cell 模型让 CKB 具备加密算法无关性;而 PoW 本身也是抗量子的。这些都让 CKB 成为 Quantum Purse 和许多其他应用的理想“土壤”。
14. 除了代码本身,这个项目最让你感到自豪的是什么?可以是一次学习经历、一次社区互动,或者是克服某个特定困难的时刻。Tea:可能是我在 CKB 社区——特别是 Comrades Keep Building 社群中结交的新朋友,以及有机会和一些 CKB 的早期 OG 一起工作的经历,这让我觉得很酷。
结语
回望 Tea 与 Quantum Purse的旅程,我们收获的不只是一个对 CKB 生态兼具演示价值与实用价值的产品,更看到了一种理想的社区资助范式:有能力的开发者、清晰的目标、高效的沟通、专业的执行,以及对社区反馈的积极响应。正如 Tea 所言:申请,你会收获乐趣、获得资金、积累经验,甚至全部兼得。
星火计划 Spark Program申请:
https://discord.com/channels/657799690070523914/1364236242190995558
Spark Program(星火计划)希望与更多开发者同行,激励大家在 CKB 上构建富有想象力与创造力的应用,期待看到你的项目!
CKB Eco Fund 网址:http://ckbeco.fund/中文电报群:https://t.me/ckb_community中文推特:https://twitter.com/CKB_CN《CKB 入门手册》:http://123.ckbdapps.com