门罗币的查看密钥:能看清每一笔账,却动不了一分钱 图 1
门罗币的查看密钥:能看清每一笔账,却动不了一分钱 · 图 1

大多数链的钱包密钥是一体的:能看见余额的密钥就能花钱。门罗币反其道而行,把账户密钥切成两半——支付密钥负责动钱,查看密钥负责看账。官方 Moneropedia 对查看密钥的定义一句话到位:查看一个账户全部相关交易所需的密钥。听起来像普通钱包的只读模式,但门罗的特殊之处在于:链上交易本身是加密的,没有查看密钥的人连你收到过钱这件事都无法从链上算出来。这个不对称结构,才是理解门罗生态里审计、冷储、托管分工的钥匙。

为什么看账需要专门的钥匙

门罗的每笔收款都发往一个链上一次性公钥:发送方用收款地址里包含的公钥信息现场拼出一个一次性地址,钱落在链上时与你的公开地址没有任何可关联的字段。钱包要确认这笔钱是我的,必须拿自己的私钥材料对每个输出做扫描测试。普通透明链的扫描拿个观察用扩展公钥就够了;在门罗上,能把一笔输出认领到名下的,只有掌握相应密钥的人。于是协议必须回答一个新问题:把认领能力交出去多少,才不会同时把花钱能力交出去。答案就是那对密钥:从主私钥派生出支付密钥与查看密钥两个标量,扫描认领只需要后者。

watch-only 钱包怎么工作

在一台联网电脑上导入主地址加查看密钥,就得到一个只读钱包:它能同步区块、标出属于你的进出账、把金额解密显示、还能构造好待签名的半成品交易;它做不到的只有一件事——给交易签名。把半成品导出到离线机器,用支付密钥签完再传回广播,就组成了经典的冷储分工。这个流程里联网机永远碰不到支付密钥,被攻破的最坏结果是隐私观测权失守与地址信息暴露,而不是被盗币。

交出去的东西比看起来多

查看密钥不是无害的只读开关,这一点必须诚实说清。拿到它的人获得的是这个账户全部历史的账本视角:每一笔进出的时间、金额、与它同环混入的公开材料,都能被完整重放。对于需要给别人对账、给审计看流水的场景,这是功能;对在乎交易图谱的隐私来说,这是主动开的一个洞。而且查看密钥派生自主密钥体系,泄露它虽不等于泄露支付密钥,但同源的密钥卫生问题(比如同一恢复词还派生过什么)值得在交付前想清楚。

和透明链只读模式的对照

比特币的 xpub、以太坊的公开地址加转账事件,本质是让任何人用公开数据拼出账本;门罗的查看密钥是把拼账本的能力做成了密码学资源——没有它,账本对所有人关闭,有了它,账本对一个人开放。同一个词只读,在两类链上兑现的是两种承诺:一边是方便,一边是权限的最小化释放。做托管与审计接入时,这个区别直接决定数据泄露的爆炸半径。

快速问答

问:只给查看密钥能生成收款地址吗?答:可以生成收款用途的地址序列,因为派生收款所需的公钥材料足够;这也是它信息量不小的佐证。

问:查看密钥能查别人的账吗?答:只能查与它派生自同一账户体系的交易,对别人账户没有效力。

问:丢了支付密钥只剩查看密钥还有救吗?答:动不了钱,但账目与找回路径的排查都以支付密钥为准,恢复话题应回到助记词备份纪律。

风险提示:本文为密钥机制科普。任何密钥——包括只读用途的查看密钥——都请按敏感信息对待;离线签名流程中请勿在未核验的半成品交易上直接签名。