CISA跨输入签名聚合:把一笔交易的所有签名折叠成一个 图 1
CISA跨输入签名聚合:把一笔交易的所有签名折叠成一个 · 图 1

一笔多输入交易里,每个输入各自携带一份签名:Taproot 密钥路径花费下每份十六虚拟字节。签名已是交易体积的大头之一,于是研究者提出一个极致问题:能不能让一笔交易的几十个输入、几十份签名,被折叠成一个聚合签名,节点验证一次就确认全部?这个方向的名字叫 CISA(Cross-Input Signature Aggregation,跨输入签名聚合)。它至今是一项研究而非协议,但它牵动的取舍堪称比特币瘦身工程的缩影。

原理:签名也能相加

背景是 BIP340 的 Schnorr 签名:Schnorr 天然支持把多方公钥聚合成一个、把多方签名聚合成一个(MuSig2 已实现这一点,但要求签名方先交互)。CISA 走得更远:同一笔交易内部的多个签名属于同一套消息哈希,无需交互、任何节点拿到交易都能自行完成聚合验证。设想 Alice 花两个 Taproot 输出,常规做法带两份十六虚拟字节签名;有了 CISA,她可以把两个公钥先聚合,交一份同样十六虚拟字节的签名,覆盖全部输入。省下的字节随输入数线性增加——但注意账本的另一面:每个输入的三点六虚拟字节 outpoint(引用哪笔交易的第几个输出)一分都省不掉,聚合只动签名。所以收益是「适度瘦身」,大额多输入交易与混币类工具最能受益:每个参与者分摊的费用会低过各开各的单。

CISA跨输入签名聚合:把一笔交易的所有签名折叠成一个 图 2
CISA跨输入签名聚合:把一笔交易的所有签名折叠成一个 · 图 2

两个技术档位与一条时间线

研究社区(Blockstream 研究团队维护的公开仓库是主要文献库)梳理出两档方案。轻档叫半聚合:不动 R 值(签名里的随机承诺),只把各签名的 s 值相加,验证时多带一串 R 值即可,兼容现有脚本结构,改动小。重档是真·全聚合:把 R 值也折叠掉,签名缩到最小,但对脚本编程模型动刀更深。时间线上:2017 年 Tadge Dryja 曾在邮件列表提出按区块聚合的思路;2018 年 Greg Maxwell 在 Graftroot 的讨论里指出可以用非交互的聚合技巧合并签名,这被追认为半聚合的起点;2019 年,Taproot 定稿前开发者明确宣布本升级不包含跨输入签名聚合,把一个时代可能性关进了下一版本;2022 年起半聚合的草案 BIP 进入公开讨论,2024 年开发者圆桌再次盘点利弊;到 2026 年,针对 Taproot 密钥路径花费的聚合草案也已进入公开讨论。近十年,它一直停在「下一步候选」的座位上。

卡在哪:与适配器签名的冲突

CISA 迟迟不能拍板,最有代表性的技术理由是适配器签名(adaptor signatures)。这套技巧是原子交换与闪电 PTLC 升级的基石:付款方生成一个「故意不完整」的签名,接收方解开它时才拿到秘密,从而在不信任中间人的前提下完成跨链互换。半聚合把各方签名的成分搅在一起后,这种「缺一条腿的签名」可能失去良定义——聚合后的签名还能不能保持可适配器性质,2021 年在邮件列表被正式提出为未解问题。一条省字节的优化与一层跨链安全的原语在脚本层相撞,先修哪个、能否共存,比多数人想象地复杂。这也解释了为什么 Taproot 宁可放弃唾手可得的签名瘦身空间,也要先保住脚本语义的干净。

快速问答

问:CISA 和 MuSig2 什么关系? 答:MuSig2 已上线,解决一个 UTXO 背后多方共签的聚合;CISA 解决一笔交易里多个 UTXO 之间的聚合,两者是不同维度的拼图。

问:全节点验证会因此更快吗? 答:验签次数下降是收益之一,但聚合方案的验证往往要做额外点加与批量核对,净收益要看具体构造,不能一概而论。

问:用户现在能用到吗? 答:不能。没有任何主流钱包或节点默认开启 CISA,钱包若宣称「已支持交易级签名聚合」需要追问具体机制。

常见误区

一是把 CISA 当成已上线的隐私功能——它省的是签名不是输入,交易结构照常公开。二是把「聚合」一律理解为多方协作;交易内聚合恰恰是无交互、单方可完成的。三是把 Taproot 里已经可用的脚本路径聚合想象成 CISA 的替身:Taproot 的密钥树承诺解决的是「多条件选一」,不是「多输入合一」。

风险提示:本文所述方案尚未部署于主网,相关技术仍在演进;不构成任何投资或操作建议。