闪电通道的别名门牌:option_scid_alias 怎么给付款方换一块假门牌 图 1
闪电通道的别名门牌:option_scid_alias 怎么给付款方换一块假门牌 · 图 1

一、门牌号暴露了什么

闪电付款沿一串通道接力,每跳按 short_channel_id 认路。这个短通道 ID 由三部分拼成:资金交易所在区块高度、交易在块内编号、输出序号——门牌号本身就是一支指向链上资金交易的箭头。付款路径上的节点捡到门牌号,顺手扫链就能看到通道的资金交易长什么样、开了多久、同一家服务商的其他通道是否共享输入。

闪电通道的别名门牌:option_scid_alias 怎么给付款方换一块假门牌 图 2
闪电通道的别名门牌:option_scid_alias 怎么给付款方换一块假门牌 · 图 2

二、特性位与协商

BOLT 9 为此备了特性位 option_scid_alias(46/47 一对),语义是”能为路由提供通道别名”。它可以出现在通道类型的变体清单里——基础通道类型都可以挂这个补丁;零确认通道(option_zeroconf)则以它为前置依赖:不见资金交易就上路的场景,真门牌本来也还没定型。特性位在 init 握手时广播,双方都声明支持,别名机制才在这条连接上生效;单侧声明只换来”可以主动发别名”,对端未支持时对方通道照常走真门牌。

三、别名的发放

别名在 channel_ready 阶段随通道就绪一起给:协商了 scid_alias 的一方必须把 short_channel_id 字段设成 alias;没协商也可以主动设。规范对别名有硬要求:私有通道必须用与真门牌无推导关系的随机值;同一节点对多个对端不得重复使用同一别名,也不得撞上自己其他通道的真门牌;此后每个入向 HTLC 都必须认这块别名。若通道类型显式带上了 scid_alias 位,规范再加一条——真 short_channel_id 不再接受入向 HTLC,真门牌就此退役。

四、公开通道的红线

公告意愿与别名有一处互斥:open_channel 里 announce_channel 置了位(打算公开)的通道,channel_type 不得带上 scid_alias 位。别名是给私有通道与不图上地图的连接准备的隐身斗篷——公开边靠真门牌索引全图,假门牌只会让路由表精神分裂。

五、别名通道的日常

对端可以多次发 channel_ready 换别名,节点要同时认账——规范允许同一对端用不同别名重发,换牌不换通道。收款方的 BOLT 11 发票用 r 字段携带路由提示时,拿到的就是别名而非真门牌,付款方照着别名拼 onion,全程不需要知道这条边对应链上哪笔交易。排障工具里这种通道显示成一串不可读的随机值,对照本机数据库解析别名才能定位真实通道——日志层面看别名与看真号等价,只是人眼多一步。运营上的代价还包括公告链的缺席:私有边不进 gossip,容量与余额管理全靠两端自己的观测面板,没有第三方路由统计可参考。

六、能藏与不能藏

别名藏的是链上画像:付款方顺路摸不到资金交易,路径中段看不到通道与链的对应。它藏不了的是通道存在本身——两端之间握手的时序、时间相关性、服务商的运营指纹,仍在可观测范围里。把别名当匿名工具是过度承诺;它的定位是通道层的一次命名替换,给收款方少递一把链上钥匙,顺带把真门牌的知情范围收拢到直接与通道有关的两端。

七、排障视角的别名

付款在别名通道上失败时,洋葱回报里出现的是一串随机别名,路由器日志与本机的通道数据库要在两处各查一次才能定位真实边。规范为此要求节点必须始终把别名当作该通道的合法 short_channel_id 来认账,同一对端换发新别名时旧值按本地策略处理——排障时如果发现同一条私有通道对应着多个别名记录,先看是不是对端重发了 channel_ready,再怀疑自己的解析库。

风险提示:本文仅为技术机制科普,不构成任何投资建议。