跳转到正文
buybitcoinsmart

术语表 /闪电网络与 Layer 2

短通道 ID

又称 scid。

短通道 ID 是什么?
短通道 ID 是闪电网络用来标识通道的8字节指针,由注资交易的区块高度、该交易在区块中的索引和输出索引三部分组合而成。

闪电网络用公开通道的注资输出在区块链中的位置来命名该通道,而不是用任意标签。其中三个字节表示区块高度,三个字节表示交易索引,两个字节表示输出索引,合计64位,供人阅读时写作539268x845x1。借助这一坐标,您可以对照区块链核实钱包正在途经的通道,而无需信任任何人的仪表板。

运作方式

短通道 ID 的三个组成部分按从高位到低位的顺序拼接:注资交易的区块高度、该交易在区块内的索引,以及向通道付款的输出的索引。固定的位宽将区块高度和交易索引的上限定为16,777,215,将输出索引的上限定为65,535。

供人阅读时,这些数字以十进制书写,并用小写字母 x 连接,因此高度为539,268的区块中索引为845的交易的第1个输出所对应的通道写作539268x845x1。规范给出的理由是:在大多数字体中,小写 x 明显比数字小,便于肉眼区分各部分,而且双击一下即可选中整个标识符。

打包后它是一个普通的64位数字,BOLT 11的测试向量对此作了演示:路由提示66051x263430x1800 依次对应字节序列01 02 03 04 05 06 07 08,因为66051即0x010203,263430即0x040506,1800即0x0708。

由于短通道 ID 是一个位置而不是哈希,如果它所指向的区块发生变化,它就不再成立。因此,通道要等到注资交易至少获得6次确认后才会公告,节点也应忽略输出确认数不足的公告。拼接(splice)同样会改变该标识符:经过拼接的通道会以拼接交易的短通道 ID 重新公告,而节点仍会继续转发仍使用旧标识符的付款。

未公告的通道没有公开标识符,因此对等节点会互相提供一个别名;带有别名的更新必须设置 dont_forward 标志,并且出于隐私考虑绝不能转发。

在哪里会遇到它

短通道 ID 是闪电网络 gossip 的寻址层,出现在每一条针对某个特定通道的消息中。

消息类型259(announcement_signatures)在两个对等节点同意公布其通道时携带一个。类型256(channel_announcement)携带其他所有节点用来在链上查找注资输出的那一个。类型258(channel_update)在每次手续费或到期时间变更时重复它,每个方向各一次。类型261(query_short_channel_ids)向对等节点索取一组短通道 ID 背后的公告,这组 ID 以升序数组发送,编码字节为0;编码字节1曾表示 zlib 压缩,现已被彻底禁止。如果某个通道在任一方向上的最新更新都已超过两周(1,209,600秒),节点可以修剪该通道。

普通用户唯一会遇到它的地方是付款请求:BOLT 11发票的 r 字段携带路由提示,每一跳都包含一个节点公钥、一个64位的短通道 ID、两个手续费数值和一个到期增量。规范中的示例指向589390x3312x1。

短通道 ID vs Outpoint

短通道 ID 和 outpoint 都用来指代一个交易输出,但二者的方向相反。outpoint 为36字节,由32字节的交易 ID 加上4字节的索引构成,通过生成该输出的交易来指代它;短通道 ID 为8字节,通过同一输出落在链上的位置来指代它。

二者的取舍在于体积与稳定性。outpoint 在交易存在的那一刻就有效,包括未确认的交易,并且永远不会改变。短通道 ID 要等交易进入区块后才存在,而如果发生区块重组,使该交易在不同的高度或位置被重新挖出,同一个通道就会得到不同的标识符。闪电网络接受这一点,因为该坐标同时也是查找输出的指引,而且每个通道以8字节进行 gossip,比36字节便宜得多。

请勿混淆

常见问题

我可以根据短通道 ID 在区块浏览器上查询闪电网络通道吗?

可以。在每个字母 x 处拆分该标识符:第一个数字是区块高度,第二个数字是该交易在区块内的索引,第三个数字是为通道注资的输出的索引。凭这三个数字,您可以在任何按顺序列出区块内交易的区块浏览器上找到注资交易。

为什么某个通道的短通道 ID 变了?

几乎总是因为该通道做过拼接(splice)。拼接会把旧的注资输出花费到一个新的输出中,该通道随后以拼接交易的短通道 ID 重新公告,而节点仍会继续转发仍使用旧标识符的付款。如果区块链重组使注资交易在别处被重新挖出,也会改变它。

短通道 ID 和通道 ID 是同一回事吗?

不是。它们是两个相互独立的字段,BOLT 7中的 announcement_signatures 消息同时携带这两者。只有短通道 ID 是指向区块链的坐标。

接着阅读

相关术语

闪电网络与 Layer 2中的更多术语

阅读本页英文版