比特币操作码技术新闻通讯185期
翻译:DeepL,Google Translate,校对: 李林
本周的新闻通讯描述了对提议的OP_CHECKTEMPLATEVERIFY(CTV)操作码对离散日志合约的影响的分析,并总结了对tapscript的替代性修改以实现CTV和SIGHASH_PANYREVOUT的讨论。此外,还包括我们的常规部分,宣布新版本和流行的比特币基础设施软件的显著变化。
新闻
通过改变脚本提高DLC效率。Lloyd Fournier在DLC-Dev和Bitcoin-Dev邮件列表中发布了提议的OP_CHECKTEMPLATEVERIFY (CTV)操作码可以从根本上减少创建某些Discreet Log合约(DLC)所需的签名数量,以及减少其他一些操作的次数
简而言之,对于合同的每个可能的终端状态–例如,Alice得到1个BTC,Bob得到2个BTC–DLC目前需要为该状态创建一个单独的签名适配器。许多合同定义了大量可能的终端状态,比如关于比特币未来价格的合同,它指定了四舍五入的价格,即使是相对短期的合同,也需要覆盖价值几千美元的价格范围。这需要参与者创建、交换和存储成千上万的部分签名。
相反,Fournier建议在一个tapleaf中使用CTV创建数以千计的可能状态,并承诺将输出放在链上。CTV使用哈希值对输出进行承诺,因此各方可以自己快速和按需计算所有可能的状态哈希值,最大限度地减少计算、数据交换和数据存储。仍然需要一些签名,但数量大大减少。在使用多个预言机情况下(例如,汇率合同有多个价格数据提供者),会进一步简化和减少所需的数据量。
Jonas Nick指出,使用提议的SIGHASH_ANYPREVOUT签名哈希模式也可以进行类似的优化(我们会注意到,使用以下新闻中描述的替代方案也可以进行同样的优化)。
CTV和APO的可替代方案:Russell O’Connor 发布到Bitcoin-Dev邮件列表,提出了一个软分叉的想法,为比特币的Tapscript语言添加两个新的操作码。一个tapscript可以使用新的OP_TXHASH操作码来指定一个支出交易的哪些部分应该被序列化和散列,散列的摘要被放在评估堆栈中供以后的操作码使用。一个新的OP_CHECKSIGFROMSTACK(CSFS)操作码(如之前提议的)将允许tapscript指定一个公钥,并要求对堆栈上的特定数据进行相应的签名–比如由OP_TXHASH创建的交易的计算摘要。
O’Connor解释了这两个操作码如何允许仿真两个早期的软分叉提案,SIGHASH_ANYPREVOUT(APO,在BIP118中指定)和OP_CHECKTEMPLATEVERIFY(CTV,在BIP119中指定)。对于某些目的来说,这种模拟可能比直接使用CTV或APO的效率要低,但OP_TXHASH和OP_CSFS会使Tapscript语言更加简单,并为未来的脚本编写者提供更多的灵活性,特别是如果与其他简单的tapscript添加内容相结合,如OP_CAT。
在回复中,Anthony Towns建议使用其他替代操作码的类似方法。
在撰写本摘要时,这些想法仍在积极讨论之中。我们期望在未来的通讯中重新讨论这个话题。
版本和候选版本
-
BTCPay服务器1.4.2是新的1.4.x系列的最新版本,其中包括登录验证的改进和一些用户界面的改进。
-
BDK 0.16.0是一个版本,包括一些错误的修复和小的改进。
-
Eclair 0.7.0是一个新的主要版本,增加了对锚点输出的支持,转发洋葱信息,以及在生产中使用PostgreSQL数据库。
-
LND 0.14.2-beta.rc1是维护版的候选版本,包括几个bug的修复和一些小的改进。
值得注意的代码和文档变化
本周值得注意的代码变化 Bitcoin Core, C-Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface HWI, Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), 和 Lightning BOLTs.
-
Bitcoin Core #23201提高了钱包用户用外部输入为交易提供资金的能力(之前在通讯#170中提到),允许他们指定最大权重而不是解决数据。这使得应用程序能够使用 fundrawtransaction、send 和 walletfundpsbt RPCs 来对具有非标准输出的收费提升交易,如 HTLCs (在 Newsletter #184 中描述的 LN 客户端的要求)。
-
Eclair #2141通过在钱包的UTXO不足时选择一个更积极的确认目标,改进了自动费用提升机制(之前在Newsletter #184中涉及)。在这种情况下,重要的是让费用提升快速确认交易,以保留钱包的UTXO数量,以防进一步强制关闭。更多关于Eclair使用的锚定输出式费用提升的细节可以在这里找到。
-
BTCPay服务器#3341允许用户在通过LN请求退款时配置一个BOLT11的有效期,而之前是默认30天。