第一次在 Liquid 钱包里复制地址的人多半会愣一下:这串 lq1 开头的字符串比熟悉的比特币 bc1 地址长出好几倍。多出来的部分不是装饰——它把一个公开收款脚本和一个用于解密金额的公钥打包在了一起。Elements 官方文档对机密地址的定义是:一个隔离见证地址与一个保密(blinding)公钥的组合体,编码采用基于 segwit bech32 的 blech32 格式,Liquid 主网用 lq1 前缀,regtest 网络用 el1 前缀。
地址为什么必须变长
Liquid 跑的是机密交易:每笔输出的资产类型与金额不直接公开,链上写的是承诺值,配一段范围证明向全网保证数字没有溢出而没有泄露数字本身。承诺要能被收款方解开,双方就需要一个共享秘密;共享秘密需要一个公钥参与。把公钥塞进地址,正是让任何发送方在不用联系收款方的情况下,就能构造只有收款方看得懂的输出。官方文档描述的流程是:收款方生成机密地址与对应盲化私钥,发送方用地址里的保密公钥做 Diffie-Hellman 得到共享秘密,用它生成盲化因子并把金额写成承诺;收款方扫描到自己名下输出后,用同一个共享秘密把金额还原出来。全程链上观察者也参与在同一个共识里,只是看不见数字。

字符层面发生了什么
blech32 沿用了 bech32 的字符集与校验思路——小写、去掉了容易混淆的字符、带纠错校验——但在原 bech32 结构后追加了 33 字节保密公钥的编码。校验和同时覆盖原脚本部分与公钥部分,抄错任何一个字符都会被发现。前缀换绑网络:主网 lq1、回归测试 el1,和 bech32 用 bc1/tb1 区分网络是同一套哲学。值得注意的设计约束:blech32 字符串明显更长,二维码密度更高、复制成本更大,这是把隐私信息装进人类可读载体必然付出的可用性代价。钱包侧的缓解是继续支持普通隔离见证地址收发普通(不保密)输出,两种格式并存。
它藏住了什么,藏不住什么
把边界说清楚比笼统说支持隐私重要。藏住的:每笔输出的具体金额与资产类型标签,公开账本只看到承诺与证明。藏不住的:谁给谁转的结构关系、输出落在哪些脚本上,以及交易时点。另外有一个常被忽略的点——盲化公钥随地址公开,如果收款方复用同一个机密地址,观察者在把多笔收款做流量关联时反而多了一个关联线索,实践中钱包倾向为不同来源签发不同子地址。与门罗的强制全隐藏不同,Liquid 的机密性是可选的:同一张链上既有盲化输出也有明文输出,分析者至少知道哪些交易选择了保密。
一笔扫描开销的直觉账:钱包核对一屏历史时,对每笔名下属实的输出要做两步运算——先用盲化私钥对承诺做一次匹配测试,认出哪些是自己的;再对认出的那些做开盲,还原金额与资产标签。测试可以按承诺批量快速筛,开盲才花真力气,所以机密链钱包的同步成本与透明链同一量级,只是每笔多几次椭圆曲线运算。这也解释了一个常见疑问:为什么第三方看别人的机密交易只能盯着一串承诺——认领测试依赖你自己的私钥,缺了它连这笔交易与己有关都判断不出,更谈不上金额。
快速问答
问:往 lq1 地址发普通比特币会怎样?答:网络与资产类型都不匹配,钱会脱离你能找回的路径,动手前先确认钱包网络标识。
问:普通 bc1 地址能收 Liquid 上的资产吗?答:能用于不要求保密的普通输出,但不带盲化信息,交易金额公开。
问:第三方审计看得到盲化金额吗?答:默认看不到,除非收款方交出可派生盲化私钥的查看密钥。
风险提示:本文为侧链机制科普,不构成投资意见;侧链安全模型与比特币主网不同,资产跨链的桥接与退出机制请以官方文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。