Blocknet 付款链接把付款人需要的一切放进一行:付给谁、付多少 BNT,以及可选的备注,例如发票号码。把它发到聊天里、放在发票上或个人资料中,付款人把它粘贴到钱包并确认即可。本指南介绍两种链接格式、如何用你的地址或 $name 编写链接,以及有人粘贴链接时钱包具体会做什么。
什么是 Blocknet 付款链接?
Blocknet 付款链接是一行文字,包含收款人、金额和可选的备注,写作 blocknet://recipient?amount=25&memo=invoice-42 或 bntpay.com/recipient?amount=25&memo=invoice-42。收款人是钱包地址或 Blocknet ID 名称。把它粘贴到命令行钱包中,就会变成一笔待确认的发送。
Blocknet 命令行钱包接受两种形式:
blocknet://<address-or-$name>?amount=<BNT>&memo=<text>
bntpay.com/<address-or-$name>?amount=<BNT>&memo=<text>
两种形式携带相同的字段:
| 字段 | 位置 | 必填 | 内容 |
|---|---|---|---|
| 收款人 | 紧跟在 blocknet:// 或 bntpay.com/ 之后 |
是 | 你的钱包地址,或写作 $name 的短名称 |
amount |
查询字符串 | 是 | 请求的 BNT 数额,最多八位小数 |
memo |
查询字符串 | 否 | 付款备注的文字,最多 124 字节 |
钱包对链接的写法很宽松。它识别 blocknet:// 和更短的 blocknet:;对于网址形式,它接受单独的 bntpay.com/,也接受前面带 www.、http:// 或 https:// 的写法。前缀不区分大小写,amount 和 memo 的顺序也无所谓。
bntpay.com 形式是普通的网址,所以大多数聊天应用、电子邮件客户端和社交资料页都会把它变成可以点击的链接。blocknet:// 形式是 Blocknet URI,适合直接粘贴进钱包的场合。
如何编写付款链接?
你可以按四个步骤手动写出链接。
- 选择收款人。 在命令行钱包中运行
address打印你的地址,或者使用带$前缀的 Blocknet ID 短名称。如果还没有钱包,Blocknet 钱包指南介绍了如何创建钱包并找到你的地址。 - 设置金额。 以 BNT 为单位填写。整数和小数都可以,最多八位小数,因为 1 BNT 等于 100,000,000 个原子单位。
- 按需添加备注。 订单号、发票编号或一句简短的感谢,都能帮你在收款时对上这笔付款。备注不超过 124 字节。
- 把各部分连起来。 在前缀后写收款人,然后是
?amount=,有备注的话再加&memo=。
一张付给名称的 25 BNT 发票,两种形式如下:
https://bntpay.com/$yourname?amount=25&memo=invoice-42
blocknet://$yourname?amount=25&memo=invoice-42
同样的请求付给完整地址:
bntpay.com/<address>?amount=25&memo=invoice-42
备注中的字符编码
如果备注里有空格或标点,其中几个字符需要用 URL 编码书写,因为链接本身要用到它们。钱包会在构建付款前把它们解码回来。
| 字符 | 写作 | 原因 |
|---|---|---|
| 空格 | %20 |
分享时让链接保持完整 |
& |
%26 |
& 表示下一个字段的开始 |
# |
%23 |
# 表示查询字符串的结束 |
+ |
%2B |
单独的 + 会被读作空格 |
例如,memo=Order%20%231042 到达时是 Order #1042。字母、数字、连字符、下划线和点都不需要编码,所以像 invoice-42 这样的备注可以直接使用。
链接应该用地址还是 $name?
两者都可以,各自适合不同的用途。
名称让链接足够短,便于阅读、口头告诉别人或放进个人简介。在链接中用 $ 前缀写名称:$yourname 和 @yourname 是同一个名称,而 $ 是两种链接都能原样传给钱包的形式。付款人粘贴带名称的链接时,钱包会通过 blocknet.id 解析该名称,检查记录上的 Ed25519 签名,并打印标记为已验证的完整地址。由于名称是在付款时解析的,长期使用的链接(例如个人资料中的打赏链接)在你之后把名称指向新钱包时依然有效。
完整地址把收款目标固定在链接里。这适合一次性的发票,你希望链接指向某一个确定的钱包。
无论哪种方式,链上的付款都是一笔普通的 Blocknet 交易,付到一次性隐身地址,与其他任何付款具有同样的隐私。
有人粘贴付款链接时会发生什么?
钱包从链接中读取收款人、金额和备注,并用它们执行一次普通的发送。如果有名称,它会先解析名称,然后构建交易,显示金额、收款人、完整地址、手续费和备注,并询问 Confirm [y/N]。只有付款人输入 y 后,BNT 才会转出。
下面是命令行钱包中的完整流程。
- 付款人在钱包提示符处粘贴链接。 钱包看到
blocknet:或bntpay.com/前缀,就把这一行当作发送。一条付给$yourname、金额 25 BNT、备注为invoice-42的链接,等同于输入send $yourname 25 invoice-42。 - 解析名称。 对于带名称的链接,钱包会打印
Resolved $yourname -> <address>,并带有已验证标记。 - 钱包检查余额并构建付款。 它选择要花费的币,构建隐私交易,并计算手续费。
- 付款人看到摘要。 摘要列出金额和收款人、手续费、使用名称时的完整地址、找零(如有)以及备注,最后是
Confirm [y/N]。 - 付款人确认。 输入
y会提交交易,并打印交易 ID 以及explorer.blocknetcrypto.com上的区块浏览器链接。输入其他任何内容会打印Cancelled,并释放钱包预留的币。
摘要让付款人有机会核对请求,所以在他们看过之前,什么都不会离开钱包。每条链接都需要金额:没有金额时,钱包会回复 payment link missing amount,并在构建任何内容之前停止。
你放进链接的备注会作为 Blocknet 的加密备注随付款一起发送。BNT 到账后,你钱包的 history 命令会在这笔收款下列出它,方便你对应到发票或订单。
分享前先测试链接
把你自己的链接粘贴到自己的钱包里,就能看到付款人将看到的内容。如果你的钱包里至少有请求的金额,它会显示完整摘要。核对收款人、金额和备注,然后输入 n,就不会发送任何款项。
付款链接适用的场景
- 发票。 把以发票号码作为备注的链接放在发票底部或邮件里。付款人粘贴一行即可,备注会告诉你哪张发票已付款。
- 商店和订单页面。 为每个订单生成一条链接,并把订单号写进备注,这样每笔付款到账时都已带好标签。
- 打赏和捐赠。 一条带建议金额、付给
$yourname的链接,可以放进个人资料、README 或直播画面。 - 分摊账单。 把一条写有每人份额和
dinner%20friday这类备注的链接发到群聊里。
如果你也通过挖矿赚取 BNT,同一个名称也能用在那里。seine 和 bntpool.com 都接受 Blocknet ID 短名称作为收款地址,所以挖矿收益和链接付款会进入同一个钱包。Blocknet 挖矿指南介绍了具体设置。
常见问题
Blocknet 付款链接必须包含金额吗?
是的。每条付款链接都带有 amount 字段,以 BNT 为单位,最多八位小数,例如 amount=25 或 amount=0.5。备注是可选的。如果粘贴的链接没有金额,命令行钱包会回复 payment link missing amount,并且不会发送任何款项,所以付款人永远不必猜测你请求的金额。
可以在付款链接里使用我的 Blocknet ID 短名称吗?
可以。用美元符号前缀写名称,例如 bntpay.com/$yourname?amount=10 或 blocknet://$yourname?amount=10。钱包会在 blocknet.id 查询该名称,检查签名记录,并在付款人确认前显示标记为已验证的完整地址。带名称的链接总是付款到你的名称当前指向的地址。
blocknet:// 链接和 bntpay.com 链接有什么区别?
两者携带相同的三个字段:收款人、金额和备注,命令行钱包以同样的方式读取它们。blocknet:// 形式是 Blocknet URI 格式。bntpay.com 形式是普通的网址,聊天应用、电子邮件客户端和社交资料页会把它变成可点击的链接。
粘贴付款链接会立即发送 BNT 吗?
不会。把链接粘贴到钱包后,钱包会准备好这笔付款,然后停在一个摘要处,显示金额、收款人、完整地址、手续费和备注,接着是一个是或否的确认提示。只有付款人输入 y 后,BNT 才会转出。输入其他任何内容都会取消付款,并释放为它预留的币。