跳转到正文
buybitcoinsmart

术语表 /开发者参考

PP memo

PP memo 是什么?
PP memo 曾是 BIP70 允许商家、付款方或确认收款的服务器附在付款上、供人阅读的自由文本 UTF-8备注。

规定于 BIP-70。

BIP70 的四种消息中有三种带有 memo,因此它是协议中唯一双向传递的字段。它纯属显示文本:没有钱包会解析它,付款方回传的那份副本没有任何签名保护,其中的内容也不会进入区块链。如今的付款备注仍然如此,所以不宜用它存放任何重要的内容。

运作方式

状态:已成历史。memo 曾作为 PaymentDetails 的字段5、Payment 消息的字段4和 PaymentACK 的字段2出现,这些字段随 BIP70 支持于2020年6月3日在0.20.0中被移除,一并退出了 Bitcoin Core。

这三处 memo 的作者不同,读者也不同。

第一处由商家填写,钱包会在确认界面上将其显示在金额旁边:订单号、商品名称或一行条款。由于它位于序列化的详情之内,商家的签名覆盖了它,因此至少无法在传输途中被改写。

第二处由付款方填写,随广播的交易一并回传。退款说明和给客服的留言写在这里,没有任何签名保护。

第三处由商家写入确认回执,通常是一句感谢或一个发货时间预估。这一处同样没有任何签名。

BIP70 未设置长度上限,因此钱包会在版面放不下的地方截断。这个小缺口的危害确实不小。攻击者提供的文字显示在经过验证的公司名称旁边,就是一个钓鱼攻击的入口;一条看似官方指示、要求再转一笔款项的备注,恰恰出现在客户最不设防的地方,极具迷惑性。

在哪里会遇到它

附在付款上的自由文本备注至今仍在使用,各个现代版本各有特点。

BIP21 付款链接带有一个经过百分号编码的 message 参数,钱包显示之后便不再保留。闪电网络走得更远:BOLT11 发票把描述放在 d 字段中,而由于带标签的字段最多容纳1,023组5位数据,约合639字节,更长的内容必须改用其256位哈希,放入 h 字段。交易所在提币表单上提供一个参考信息框,其内容不会离开交易所自己的数据库。

真正随交易写入链上的备注只有 OP_RETURN 输出。当这种输出类型在0.9.0成为标准时,Bitcoin Core 的中继策略允许40字节的数据载荷,自0.11.0起为80字节。这些字节需要支付手续费,并永久公开,因此把它当作私人备注使用,是没有人会犯第二次的错误。

其余的一切都只存在于您本地。您在自己钱包中输入的备注保存在钱包文件里,而不是助记词中,因此在新设备上恢复钱包,只能找回比特币,找不回您为它们写下的任何文字。迁移之前请先导出。

PP memo vs 标签

memo 描述一笔付款;标签则为某一方或某个地址命名。BIP70 的 memo 是为单笔交易写的,仅在付款的那一刻显示一次。BIP21 的标签标明收款对象是谁,钱包标签则是您附在某个地址或某笔交易上、并保存在您自己设备上的私人归档备注。这三者都没有经过您可以核实的人签名,网络也都看不到。

请勿混淆

常见问题

可以在比特币交易中附加一条消息吗?

只能通过 OP_RETURN 输出,这需要支付手续费,并且永久公开。付款链接、闪电网络发票或您的钱包中的备注都保存在链下,因此只有当双方使用的软件将其传递过去时,收款方才能看到。

应该相信付款确认界面上显示的备注吗?

信任程度不应超过您对创建该付款请求的人的信任。付款备注是由发送方选定的未经验证的文本,因此要求额外转一笔款项或向另一个地址付款的指示属于钓鱼攻击的手法,而不是商家的政策。

接着阅读

相关术语

开发者参考中的更多术语

阅读本页英文版