这份特别版的 Optech Newsletter 总结了 2021 年全年比特币值得注意的发展。它是我们 2018 年、2019 年和 2020 年总结的续篇。 bitcoin-optech-2021-year-in-review/#目录">目录
bitcoin-optech-2021-year-in-review/#一月">一月经过数年的讨论,1 月份首次发布了支持 signet 的比特币核心版本,此前 C-Lightning 支持,随后 LND 也支持了。Signet 是任何人都可以用来模拟比特币主网络(mainnet)的测试网络,可以是以现在的状态,也可以是它发生某些变更后的状态(比如软分叉共识变化的激活)。大多数实现 signet 的软件也会支持一个默认的 signet,这为不同团队开发的软件提供了一个特别方便的手段,可以在一个安全的环境中进行测试,同时可以尽可能地接近他们在链上的环境。今年还讨论将有意的区块链重组添加到比特币核心的默认 signet 中,以帮助开发人员针对这类问题测试他们的软件。 1 月份还宣布了一个针对 bech32m 的 BIP 草案。Bech32m 地址对 bech32 地址做了轻微修改,使其可以安全地用于 taproot和未来的协议扩展。今年晚些时候,一个Bitcoin Wiki 页面被更新用以跟踪钱包和服务对 bech32m 地址的采用。 另一个首次发布的新协议是洋葱消息和 要约协议。洋葱消息允许一个 LN 节点向另一个节点发送消息,与基于 HTLC 的消息发送相比,它的开销更小。要约使用洋葱消息,允许一个节点提议支付给另一个节点,允许接收节点返回详细的收据和其他必要的信息。洋葱消息和要约在今年剩下的时间里继续作为草案规范,但仍然有了进一步的进展,包括一个使用它们来减少滞碍支付的影响的提案。 bitcoin-optech-2021-year-in-review/#二月">二月比特币的贡献者推进了对改进的签名创建和验证算法的研究,然后利用他们的研究产出了一个有额外改进的版本。当在 libsecp256k1(1,2)和后来的比特币核心中应用时,这将验证签名所需的时间减少了约 10% ——这是一个重大改进,考虑到需要验证比特币区块链中的大约 10 亿个签名。一些密码学家致力于确保这一变更在数学上是合理的,并且可以安全使用。这一变更也为在低功率的硬件签名设备上安全地创建签名的速度提升提供了巨大的推动。 通道拥塞攻击是 LN 自 2015 年以来的一个已知问题,在这一年里得到了持续的讨论,讨论了各种可能的解决方案。不幸的是,没有找到广泛认可的解决方案,这个问题到年底仍然没有得到缓解。 三月3 月份的重要讨论专门分析了量子计算机攻击比特币的风险,特别是针对 taproot 激活并被广泛使用的情况。比特币的原始功能之一,公钥散列——可能是为了使比特币地址更短而添加的——也可能使它在量子计算突然出现重大进展的情况下更难从有限的用户那里窃取资金。Taproot 没有提供这个功能,至少一个开发者担心它造成不合理的风险。大量的反驳意见被提出,社区对 taproot 的支持似乎没有改变。 2021 年总结Taproot 的激活到 2020 年底,一个包含支持 schnorr 签名和 tapscrip 的 taproot 软分叉的实现已经并入比特币核心。协议开发者的工作很大程度上完成了;现在要看社区是否愿意激活 taproot,以及钱包开发者是否开始添加对它和相关技术的支持,如 bech32m 地址。
尽管为 taproot 选择激活机制很复杂,而且在激活后立即出现了一些小混乱,但在比特币中增加对 taproot 软分叉的支持的最后步骤总体看来很顺利。这并不是 taproot 故事的结束。随着钱包和基础设施开发商开始使用它的许多功能,Optech 预计在未来几年将继续花费大量的时间来撰写与之相关的内容。 四月LND 在四月加入了对原子化多路径支付( Atomic Multipath Payments,AMP)的支持,这也叫初版 AMP,因为它早于现在各大 LN 实现都支持的 “简化多路径支付(Simplified Multipath Payments)” 提出。AMP 对比 SMP 有隐私上的优势,而且能保证接收方在开始索要支付之前收到了所有部分。缺点在于,AMP 无法产生密码学上的支付证明。LND 实现 AMP 用于 “自发支付(spontaneous payments)” ,而自发支付根本上是无法提供支付证明的,因此不需要考虑 AMP 的这个重大缺点。 五月BIP125(交易替换规范)与比特币核心实现的差异被曝出。就我们所知,这没有导致比特币面临损失的风险,但它确实引发了一系列的讨论,关于意料之外的交易转发行为对合约用户(比如闪电网络)的风险。 也是在五月,C-Lightning 项目合并了一个插件,用于管理 “双边供资通道(dual-funded channels)” —— 这种通道是双方都提供了一定数量的初始资金的。加上今年早些时候合并的、关于双方充值的工作,这个插件让初始化通道的一方不仅能通过通道来花费资金,还能从通道的初始状态中接收资金。这种接收资金的初始化能力对商家来说尤其有用(他们主要使用闪电网络来接收支付,而不是发送资金)。 2021 年总结热门基础设施项目的重大更新
六月六月份出现的一份新的分析描述了一种矿工选择在区块中包含哪些交易的另类方法,预计这种新的方法可以在短期内略微提高矿工的利润。在长期中,如果矿工普遍接收了这种方法,意识到这一点的钱包可以在发送 “子为父追加手续费(CPFP fee bumping)” 交易时与矿工合作,从而提高 CPFP 的有效性。 另一种尝试提高手续费追加效率的提案允许比特币核心将任何未确认的交易都标记为 “手续费替代(replaced by fee)” 交易 —— 不仅仅是那些自己表态使用了 BIP125 手续费替代的交易。这有助于解决多方协议中的手续费追加的一些问题,也因为允许更多交易可以使用同样的格式所以能提高隐私性。有关隐私性,另一个提案建议钱包在创建 taproot 支付时,应该设定一个默认的 nSequence 值,即使他们并不需要 BIP68(共识执行的 sequence 值)提供的功能;这将使得软件创建出的不需要 BIP68 的交易也能跟更普通的交易混同。虽然很少重大的反对意见,但这些提案似乎都没有特别大的意义。 同样在六月份,一系列在比特币核心中实现 “交易池接受交易包(mempool package acceptance)” 的 PR 中的第一个,合并到了代码库中。这是迈向交易包转发的第一步。交易包转发将允许转发节点和矿工把相关交易组成的交易包当成一笔交易,整体来考虑手续费率。一个交易包可能包含一笔费率较低的父交易,以及一笔费率较高的子交易;而包含子交易的好处将会激励矿工也打包父交易。虽然交易包挖矿在 2016 年就已经在比特币核心中实现了,但节点一直没有办法转发交易包,这就意味着低费率的父交易在费率暴涨期间可能根本无法到达矿工,即使它的子交易有更高费率,即使整体上打包它们有利可图。这使得 CPFP 手续费追加对于使用预签名交易的合约协议(比如闪电网络)来说是不可靠的。交易包转发有望解决这个关键的安全问题。 一个最早于 2019 年为闪电网络提出的想法也在今年 6 月焕发新生。最初的 “快进(fast fowrds)” 提议描述了闪电钱包如何可以用更少的网络往返来接收和转发支付,从而减少带宽消费和支付的延迟。这个想法在今年被扩展成了描述闪电钱包如何可以接收多笔支付、同时无需为每一笔支付保证其签名密钥在线,使得用户更容易保证签名密钥的安全。 七月经过数年的讨论和开发, 一个分布式的流动性广告系统被合并进一个 LN 的实现中。仍在草稿阶段的流动性广告提案允许节点使用 LN gossip 协议宣传其在一段时间内出租其资金的意愿,这让其它节点可购买用于即时付款的入账容量。看到广告的节点可使用开放的双边供资 通道同步地支付并接收入账容量。 即使无法确保这些应征广告的节点真正为支付进行路由,此提案纳入了一个早期的提案( 随后被用于闪电池),避免广告商在商定的租赁期结束前将钱用于其它用途。这意味着拒绝进行支付路由不会带来任何好处,反倒剥夺了应征广告节点挣路由手续费的机会。 首次为比特币核心被提出三年后,输出脚本描述符草案 BIP被 创建。 描述符是包含所有必要信息的字符串,这些信息用于允许钱包或其他程序追踪向特定脚本或一组相关脚本的付款或花费。(举个例子,一个地址或一组例如在 HD wallet 中的相关地址)。描述符通过 miniscript 较好地组合起来, 允许钱包处理对更大规模脚本的追踪和签名。它也可以和 PSBT 较好地组合起来,允许钱包决定使用哪把密钥控制多签脚本。到今年年底,比特币核心的新创建钱包已经默认是基于描述符的钱包了。 一种此前从未纳入 LN 协议的常用创建 LN 通道的方式在 7 月被指定为 LN 协议。零确认通道创建,也被称为涡轮通道,是一种新的单一资金通道,出资人将其部分或全部初始资金给接受者。这些资金在创建通道的事务收到足够数量的确认之前是不安全的,所以接受者运用标准的 LN 协议将这些资金中的一部分向出资人支付是没有任何风险的。例如,Alice 在 Bob 的托管交易所的一个账户里有几个 BTC。Alice 要求 Bob 创建一个新的通道,支付给她 1.0 BTC。因为 Bob 相信自己不会对他刚刚创建的通道进行双花,所以他可以允许 Alice 通过他的节点向第三方 Carol 发送 0.1 BTC,这甚至可以在创建通道的事务收到一次确认之前发生。指定行为应有助于提高 LN 节点和提供这种服务的商家之间的互操作性。 两条针对新的签名散列(sighash)类型的相关提案被组合成 BIP118。 八月忠诚保证保险是一个至少在 2010 就被描述的一个想法,意在锁定比特币一段时间,以便为第三方系统的不当行为创造成本。因为在时间锁定期间,比特币无法再被使用,其它系统中的用户如果在锁定期内被禁止或惩罚,便不能使用相同的比特币创建虚拟身份。在 8 月,JoinMarket 投产了首个大规模分布式的忠诚保证保险的应用。截至发布日,超过 50 BTC 已被时间锁定(当时超过 200 万美元)。 8 月,一个 LN 的新的寻路变体被讨论。该技术的支持者认为,路由节点根据金额收取一定比例的手续费相比为每笔支付收取最小的基础费用有效得多。 其他人有不同看法。到今年年底,该技术的一个变体 将在 C-Lightning 中实现。 2021 总结Bitcoin Optech在 Optech 的第 4 年,我们发布了 51 篇周 通讯, 为主题索引 增加了 30 页新内容,发布了 contributed blog post, (在两位客座作者的帮助下) 撰写了 21 期关于 准备 taproot 的系列. 总的来说,Optech 今年发表了超过 80,000 字的比特币软件研究和开发,大致相当于一本 250 页的书。 九月比特币开发者长期以来一直在讨论的一个功能是向一个脚本发送比特币的能力,而这个脚本可以限制哪些其他脚本后来可以收到这些比特币,一种称为限制条款的机制。例如,Alice 收到了一些她的热钱包可以花费的发送至脚本的比特币——但她想使用热钱包花费这些比特币时,仅能将其转移到第二个脚本,且有延时。在延时期间,她的冷钱包可以申领资金。如果没有申领,延时期满,她的热钱包就可以自由花费了。9 月,一个新的操作码 十月在十月,比特币开发者讨论了一种新的标记事务的方法,用于用户选择花费哪个集合的比特币。目前,比特币是通过上次花费时在事务中的位置标记的;例如 “事务甲,输出 0 ”。一个新的提案将允许这样标记比特币,使用此前花费它们的事务再加上它们在继承关系中的位置以及它们在事务中的位置;例如,“事务乙到第 2 个孩子,输出 0 ”。有人建议这将为例如 eltoo, 通道工厂以及瞭望塔服务提供设计优势,这些都造福例如 LN 等合约协议。 此外在 10 月,一组提升 LN 的现存想法被打包成一个简单的提案将带来和 eltoo 类似的好处,但无需 SIGHASH_ANYPREVOUT 软分叉甚至是任何共识改变。该建议将减少支付延迟,几乎与数据在特定路径上的所有路由节点之间的单向传输速度一样快。它还将提高弹性,允许节点在创建通道时备份它所需要的所有信息,并在数据恢复期间的大多数情况下可获得任何其他信息。它还将允许用离线密钥接收付款,特别是允许商家节点限制其密钥需要被联网计算机使用的时间。 十一月LN 开发者举办了 2018 以来的首次峰会, 讨论了的主题,包括在 LN 使用 taproot , 包括 PTLC,用于多签名的 MuSig2 以及 eltoo;将规范讨论从 IRC 转移到视频聊天;当前 BOLT 规范模型的改变;洋葱消息以及要约; 无滞碍支付; 通道拥塞攻击 以及多种缓解措施;蹦床支付. 十二月对于链上的单签事务,提升费率以鼓励矿工更快确认是相对直接的。但是对于合约协议,例如 LN 和 金库, 并非所有授权此花费的签名者在需要提升费用的时候都空闲。更糟糕的是,合约协议常要求确定的事务在一个截止时间前确认——否则诚实的用户可能会丢失资金。12 月,我们看到发布了费用提升的研究 ,有关如何为合约协议选择有效的费用提升机制,有助于促进对这一重要的长期问题的解决方案的讨论。 结论我们在本年度总结中尝试创新 —— 描述了 2021 年二十多个值得关注的发展,却未提及一个贡献者的名字。我们感谢所有这些贡献者,并非常希望他们因其令人难以置信的工作而受到表彰,但我们也想表彰所有通常不会被提及的贡献者。 他们是花费数小时代码审核的人,是为既定行为编写测试用例以确保不会意外改变的人,是努力调试奇怪的问题以在出现资金风险前修复问题的人,是在做其它数以百计如未妥善处理便会出现大新闻的工作的人。 这份 2021 年的最后一份通讯是献给他们的。没有一个简单的方法来列举这些不为人知的贡献者的名字。 相反,我们在本通讯中省略了所有的名字,以表明发展比特币是一个团队的努力,其中一些最重要的工作是由那些名字从未出现在本通讯任何一期的人完成的。 我们感谢他们,感谢比特币 2021 年的所有贡献者。我们迫不及待地想看看他们将在 2022 年实现哪些令人激动的新发展。 Optech 通讯将于 1 月 5 日恢复常规的周三发布。 |