NIP-60:Cashu Wallet
NIP-60 定义了基于 Cashu 的 ecash 钱包如何在 Nostr 中运作。钱包信息存储在中继上,实现了无需单独账户即可在不同应用间使用的便携式钱包。
工作原理
NIP-60 使用三种存储在中继上的核心事件类型,外加一种可选的辅助事件用于待处理报价:
钱包事件(kind 17375): 一个可替换事件,包含加密的钱包配置,包括 mint URL 和用于接收支付的私钥。此密钥与用户的 Nostr 身份密钥分开。
代币事件(kind 7375): 存储加密的未花费 Cashu 证明。当证明被花费时,客户端删除旧事件并用剩余证明创建新事件。
支出历史(kind 7376): 显示资金流动的可选交易记录,包含加密内容以及对已创建/销毁的代币事件的引用。
报价事件(kind 7374): 用于待处理 mint 报价的可选加密状态。规范建议使用带有过期标签的短期事件,主要用于本地状态不够用的情况。
状态模型
NIP-60 关注的是钱包状态同步,而非接收资金的行为本身。钱包事件告诉客户端使用哪些 mint 和钱包密钥,而代币事件是实际的余额状态,因为它们包含未花费的证明。
这一区别对互操作性很重要。两个客户端只有在以相同方式解释代币轮换时才能显示相同的钱包:花费证明,发布替换证明,并通过 NIP-09 删除已花费的代币事件,这样其他客户端就不会继续将已花费的证明计入余额。
重要意义
- 易用性 - 新用户无需外部账户设置即可立即接收 ecash
- 互操作性 - 钱包数据跟随用户在不同 Nostr 应用间移动
- 隐私性 - 所有钱包数据都使用用户密钥加密
- 证明管理 - 跟踪钱包状态转换,使客户端能够收敛到相同余额
互操作说明
客户端首先通过 kind 10019 查找钱包中继信息,如果没有专用钱包中继列表,则退回到用户的 NIP-65 中继列表。这种退回机制很实用,但也意味着钱包的可移植性仍然依赖于中继实际存储和提供加密的钱包事件。
规范还要求钱包私钥与用户的 Nostr 身份密钥保持分离。这使得钱包接收处理与主签名密钥隔离,减少了一个密钥被两个不同用途重复使用的风险。
工作流程
- 客户端从钱包中继或用户的中继列表获取钱包配置
- 加载并解密代币事件以获取可用资金
- 支出时创建新的代币事件并删除旧事件
- 可选的历史事件记录交易供用户参考
主要来源:
提及于:
另请参阅: