比特币操作码技术新闻通讯184期
翻译:DeepL,Google Translate,校对: 李林
本周的新闻通讯描述了一个扩展PSBT字段的建议,用来花费那些用向合约付款协议构建的输出;并包括我们的常规部分,其中有来自Bitcoin Stack Exchange的顶级帖子的摘要和流行的比特币基础设施项目的显著变化。
新闻
P2C字段的PSBT扩展:Maxim Orlovsky提出了一个新的BIP,为PSBT增加可选的字段,用于花费使用向合约付款(P2C)协议创建的输出,正如之前在Newsletter #37中提到的。P2C允许支出方和接收方就合约文本(或其他任何东西)达成一致,然后创建一个承诺该文本的公钥。付款人随后可以证明,付款人承诺了该文本,并且如果没有接收人的合作,该承诺根本算不出来。简而言之,花钱的人可以向法院或公众证明他们所支付的东西。
然而,为了让接收者随后构建一个签名能花费他们收到的资金,除了他们使用的密钥(该密钥通常是分层确定性密钥串的一部分)之外,他们还需要合同的哈希值。Orlovsky的提议允许将该哈希值添加到PSBT中,以便签名钱包或硬件设备能够产生有效的签名。
Bitcoin Stack Exchange的精选问答
Bitcoin Stack Exchange是Optech贡献者寻找答案的首选,在这上面我们也会花空闲时间来帮助好奇或困惑的用户。在这个月度专题中,我们将重点介绍一些自上次更新以来被投票最多的问题和答案。
- 是否有办法把一个taproot地址转换成原生隔离见证地址?在一个交易所由于不支持taproot将用户的P2TR(native segwit v1)taproot提款地址改为P2WSH(native segwit v0)地址后,用户问是否有办法要求得到由此产生的v0输出中的比特币。Pieter Wuille指出,这些比特币是无法收回的,因为用户需要找到一个脚本来哈希到P2TR地址中的公钥,这是一个计算上不可行的操作。
- Bitcoin 0.3.7 是一个硬分叉?用户BA20D731B5806B1D想知道是什么导致比特币的0.3.7版本被归类为硬分叉。Antoine Poinsot给出了scriptPubKey和scriptSig值的例子,说明在0.3.7对scriptSig+scriptPubKey分开评估的bug修复后,以前无效的签名可以有效。
- 什么是签名研磨?Murch解释说,ECDSA签名研磨是一个反复签名的过程,直到你得到一个r值在下半区的签名,根据比特币用于ECSDA的序列化格式,会产生一个少1个字节的签名(32字节对33字节)。这种更小的签名带来更低的费用,而且当签名长度是熟知的32字节时,能够更准确的估算费用。
- 如何避免的链之间的网络冲突默奇解释了节点如何使用P2P消息结构中规定的魔数,以识别它们是否连接到同一网络(主网、测试网、信号网)上的节点。
- 2021年标准客户端采用了多少BIP?Pieter Wuille链接到Bitcoin Core的BIPs文档,记录了在Bitcoin Core中实现的BIPs。
值得注意的代码和文档变化
本周值得注意的代码变化 Bitcoin Core, C-Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface HWI, Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), 和 Lightning BOLTs.
-
Eclair #2134 默认支持 anchor outputs, 当一笔交易手续费过低时,允许提高手续费费用. 因为anchor outputs-style 需要通过CPFP来实现提高手续费, 用户必须在他们自己的bitcoind钱包里面保存UTXO.
-
Eclair #2113增加了自动管理费用提升的功能。这包括按照及时确认的重要性对交易进行分类,在每个区块后重新评估交易以确定是否适合提升费用,也重新评估当前的网络费率,以防交易的费率需要增加,并在必要时为交易增加额外的输入,以增加交易的费率。该变化还呼吁改进Bitcoin Core的钱包API,可以减少Eclair等外部程序对附加钱包的管理工作。
-
Eclair #2133开始默认转发洋葱消息。在新闻通讯 181期中提到的速率限制是用来防止任何滥用LN协议的实验性部分的问题。
-
BTCPay Server #3083允许管理员使用LNURL认证(也可在非LN软件中实现)登录BTCPay实例。
-
BIPs #1270澄清了PSBT规范中关于签名字段的可接受值。在Rust Bitcoin最近的一次更新引入了更严格的签名字段解析后,人们讨论了PSBT中的签名字段是否可以包含一个占位符,或者只允许有效的签名。最终决定PSBTs应该只包含有效的签名。
-
BOLTs #917扩展了BOLT1定义的init消息,使节点能够告诉连接的节点正在使用什么IPv4或IPv6地址。由于NAT后面的节点不能看到他们自己的IP地址,这允许节点在地址改变时更新它向网络宣布的IP地址。