链接即订单:人只负责点头
ZIP-321(状态 Active,Category 为 Standards / Wallet,2020-08-28 创建)给 Zcash 定义了一种支付请求链接:钱包认得 zcash: 前缀,用户点网页链接或扫二维码后,交易由钱包按链接里的清单构造,人只负责最后批准。它的定位在比特币两个前辈之间——BIP 21 只能写单个收款人,BIP 70 用协议握手换任意复杂度;ZIP-321 用纯 URI 支持”一笔交易、多个收款人”。

语法骨架与下标配对
一条请求写作 zcash:<地址>?参数串,或者把地址也放进参数 zcash:?address=...——两种写法规范明确等价。参数族包括 address、amount、memo、message、label,以及 req-asset 与任意 req- 前缀或普通自定义参数。多笔收款靠下标:参数名后加 .N(N 首位不能是零,编号不必连续),共享同一下标的地址、金额、备注被理解成同一笔付款;有别的参数挂了某个下标,就必须有同下标的 address 存在,同一参数同一标号不得重复。规范的例子直接演示了”一个透明地址加一个 Sapling 地址同笔付款”,也演示了缺 address.1=、标号写 .0、amount 重复这些必须整条拒收的病句。注意 zcash:// 开头是无效的——这个 URI 没有 authority 组件;百分号编码只允许出现在 label、message 等文本参数里,地址和金额里都不行。
金额与备注的硬规矩
amount 用十进制 ZEC:小数点必须是半角句点、两侧都不得为空,小数段最多八位,50.00、50、050 同值,50,000.00 这种带千分位的一律无效;金额上限 2100 万 ZEC。memo 是给屏蔽地址的链上备注,装的是 base64url 编码(无填充),解码后不得超 512 字节、不足会补零——而且透明地址不收备注:只要 memo 配到透明地址上,整条 URI 作废,不是忽略继续。label 是”收款人名字”类展示文本,规范强制它显示时与地址可区分;message 则是给人看的描述性信息,不上链。收款地址要校验格式(透明地址、Sapling、统一地址均可,Sprout 地址明确不支持),能判断网络归属时还应核对是主网还是测试网;向统一地址收款时,ZIP-316 的接收器规则照常生效(统一地址怎么选接收器见 u 开头的一长串里装了什么:Zcash 统一地址怎么选接收器)。
多收款人的物理上限与 req- 的拒绝美学
规范提醒:实现应当把所有付款塞进一笔交易,收款人数上限受交易构造限制——全走 Sapling 时约在两千一百笔出头,掺了 Orchard 只会更低。新版还加入 req-asset 参数,把 ZIP-227 自定义资产的标识和最小单位金额打包成一段 base64url(版本字节、8 字节小端金额、66 字节资产 ID):它与 amount 互斥,只有带 Orchard 接收器的统一地址才收得了。最值得一提的防御设计是向前兼容的分寸:不认识且带 req- 前缀的参数必须把整条 URI 判无效,不认识的普通参数才允许忽略——收款方想要”这个字段你不认识就别签”,就用 req- 声明,杜绝了未知字段被悄悄丢弃。
谁生成链接、谁该警惕什么
这类 URI 的生成方是收款人(或其店铺系统),付款人一侧的原则是:链接里的文字信息一律按”对方自述”处理——label 与 message 都不是链上事实,金额与地址也应以钱包渲染后你再与对方口头确认一次为准。收款人自测有低成本路径:Testnet 与主网地址格式本身可区分,规范建议能判断网络时逐一核对;先用极小金额按同一链接走一遍,再上正式额度,是不依赖任何工具的习惯性防线。另外把 2100 万 ZEC 的上限当常识:它是协议层总量约束在请求格式里的投影,链接里出现超限值必然无效,不必怀疑钱包。遇到钱包报”无法解析”时,优先怀疑链接本身踩了语法禁区——最常见的三个雷区是把 zcash:// 写成带双斜杠、给金额加千分位逗号、以及把百分号编码用进地址参数。
用户动作与边界
签一条 zcash: 请求前,值得逐项核对:几笔付款、各笔地址与金额、memo 是否落在屏蔽地址上。同为”把付款要求写进链接”的路线,以太坊支付链接的字段拆解可以对读(见 支付链接里到底写了什么?EIP-681 请求的地址、链标识与金额逐项拆);比特币世界的第一代同类提案停在何处也有专文(见 比特币第一条支付链接提案:BIP-20 的 version 字段、十六进制金额与 send 私钥)。具体字段语义以 zips 仓库现行文本为准。本文为机制说明,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。