2018-04-12 IRC 会议摘要

概述


本次周会上讨论的主题包括项目成员希望审阅者在下周重点关注哪些拉取请求,是否要破坏钱包中一个奇怪且很少使用的功能(IsMine 裸多重签名)的兼容性,如何安全地改进多钱包支持,以及在升级比特币核心可复现二进制版本的构建环境时如何处理一些不支持的软件。

高优先级审查

背景: 每次会议,比特币核心开发者都会讨论哪些拉取请求(PR)会议参与者认为在下周最需要审查。其中一些 PR 与贡献者特别希望在下一版本中看到的代码有关;另一些是阻塞进一步工作的 PR,或者需要大量维护(rebase)才能保持在待处理状态。鼓励所有有能力的审阅者访问项目的当前高优先级 PR 列表

讨论: 本周建议关注以下 PR

  1. 并行验证构建 tx 索引 (#11857) 由 Jim Posen 和 Wladimir van der Laan 提名。此 PR 将可选的交易索引(允许用户通过其 txid 查找历史交易)移入单独的数据库。这将允许用户在节点运行时启用或禁用交易索引,而不是必须等待即使在快速硬件上也可能需要几个小时的时间。此 PR 还为在比特币核心添加其他单独索引奠定了基础,这些索引可以启用功能,例如用于轻量级客户端的改进隐私块过滤,如 BIP 157158 中所述。

    在会议之前,此 PR 已经收到了一些积极的审查,但要求了一些更改,现在这些更改已经完成,因此会议中的讨论集中在审查这些更改本身。

  2. 将非 HD 钱包升级到 HD 的路径 (#12560) 由 Van der Laan 提名。此 PR 添加了一个新的 sethdseed(设置 HD 种子)RPC,允许用户为 BIP32 分层确定性 (HD) 钱包设置种子值。这可以用于请求比特币核心自行生成新的种子,或将种子更改为从当前运行的比特币核心外部获取的值(例如,从备份中获取)。此外,此 PR 允许使用旧的非 HD 比特币核心钱包的用户使用 -upgradewallet 命令行参数升级到 HD 钱包。

    会议中的讨论表明,此 PR 可能存在一个未解决的问题,但此 PR 主要需要来自其他贡献者的审查。

  3. 将费用估算器移入 validationinterface/cscheduler 线程 (#11775) 由 Van der Laan 提名。此 PR 对比特币核心代码中的一些内部接口进行了后端更改,然后更改比特币核心的费用估算器以使用其中一个接口,从而使其能够访问对费用估算有用的其他信息。此 PR 还对费用估算器在处理边缘情况的方式上进行了一些细微的改进。

    在会议之前,PR 的作者(Matt Corallo)已经提出将 PR 分成单独的较小的 PR,以针对更改的不同部分。会议期间的讨论表明,审阅者正在等待这种情况发生,然后再进一步审查。

  4. 引入 getblockstats RPC 以 [提供可用于] 绘制事物的数据 (#10757) 由 Jorge Timón 提名。此 PR 添加了一个新的 RPC,它返回有关指定块的各种详细信息和统计信息。

    会议中的讨论看到一位贡献者同意审查此 PR。

讨论中提到的一个问题是 GitHub 最近出现的页面无法加载很长时间的问题。这个问题已经变得足够频繁,以至于会议参与者会通过引用 GitHub 在错误页面上显示的图画——一只独角兽——来提及这个问题。

如何处理裸多重签名上的 IsMine

背景: 裸多重签名是指向多个公钥的支付,不使用更常见的 P2SH 或 segwit 地址。比特币核心的钱包目前会扫描任何裸多重签名支付,以查看所有使用的公钥是否都是用户钱包的一部分,如果是,则将支付分类为InMine,表示用户可以支配它。

讨论: Pieter Wuille 要求讨论这个主题。他将当前的行为描述为,“愚蠢、烦人、无意义,而且难以维护。” 对于愚蠢无意义,问题可能是当所有公钥都属于同一个钱包时,多重签名没有提供比单签名更多的安全性,但使用多重签名确实比单签名成本更高。对于烦人难以维护,问题是这种行为需要额外的代码,并且正在使开发人员更难朝着 Wuille 之前描述的改进的钱包设计努力。

然后 Wuille 描述了他的担忧:“可能存在对它的现有输出。我不知道是否真的这样,但这听起来很可怕,我们不能直接停止支持它。” 经过一番讨论,Wuille 澄清说他并不是建议删除允许这些支付所有者消费它们的代码;相反,情况将是比特币核心不再自动查看这些支付。

Matt Corallo 和 Wuille 之间的进一步讨论生动地描述了这个问题:要在期望的新钱包模型中支持这种旧行为,需要生成 N3 个组合,其中N 是用户拥有的私钥数量。默认情况下,比特币核心生成 2,000 个私钥,因此钱包需要生成无法管理的 80 亿个组合。

持续的讨论围绕着 Wuille 的 PR #12874,它禁用了当前的行为并为需要它的用户提供了解决方法。Corallo 提到现有的 RPC importaddress 已经提供了解决方法所需的必要功能。

结论: 尽管会议参与者都赞成保留现有功能,如果有一种合理的方法可以做到这一点,但讨论似乎倾向于删除裸多重签名上的 IsMine,并在发行说明中提及解决方法。

动态钱包加载/卸载

背景: 旧版本的比特币核心只能使用特定节点的内置钱包的单个实例。这在版本 0.15.0中得到了扩展,允许在单个节点上运行多个钱包实例,但比特币核心的旧部分(例如启动时读取的命令行选项)假设用户只有一个钱包实例,因此它们会对所有加载的钱包同时操作。John Newbery 的拉取请求 #10740 通过允许用户使用新提出的 RPC 在运行时加载、卸载甚至创建钱包来解决这个问题。

讨论: Joao Barbosa 要求讨论这个主题,建议“......钱包管理应该使用共享指针”。这将有助于确保如果用户请求在运行时卸载钱包,则在卸载钱包之前可以处理涉及该钱包的挂起请求。另一种方法可能是钱包在操作过程中意外消失,这会导致意想不到的有害影响。Barbosa 已经打开了 PR #11402 来进行此提议的更改。

此提议似乎没有争议,讨论转移到了其他改进以及这些改进的实现顺序。Jonas Schnelli 建议比特币核心首先需要一个 createwallet RPC,以便可以在运行时创建钱包,并且可以退休命令行钱包选项(或可能限制为仅供单钱包使用)。Pieter Wuille 指出,如果没有在运行时加载钱包的方法,在运行时进行 createwallet 会很奇怪,因为您需要重新启动比特币核心才能使用刚创建的钱包。

Luke Dashjr 建议按照“加载 -> 创建 -> 卸载”的顺序,“卸载是最复杂的部分”,这可能是因为在多个进程同时处理加载的钱包时可能出现问题。Newbery 同意,并对 Schnelli 的建议“将卸载从现有的 PR 中分离出来”做出了积极的回应。

Wladimir van der Laan 建议“卸载可能应该分两个阶段:请求后,RPC 和 GUI 无法访问它。然后它等待当前操作完成。然后它真的会 [卸载]”。

结论: Newbery 同意他将修改他的 PR,并在 PR 本身上说他将“将此 PR 的范围缩小到仅一个 loadwallet RPC。接下来应该是一个 createwallet RPC,然后是 unloadwallet。(unloadwallet 是最困难的部分)”。

Gitian 更新

背景: 比特币核心使用一个名为 Gitian 的系统以一种完全可复现的方式构建其发布二进制文件,任何拥有计算机和互联网连接的人都可以复现这种方式,允许任何人验证发布二进制文件是否是同行评审的源代码的产物。随着比特币核心的变化,构建目标的操作系统会发生变化,其他软件的可用性也会发生变化,因此需要更新 Gitian 构建环境以处理这些变化。

讨论: Luke Dashjr 要求讨论这个主题,这似乎与项目希望将 Gitian 使用的操作系统切换到即将发布的 Ubuntu 18.04 LTS 有关。Dashjr 的担忧是“我们需要一个 vmbuilder 的替代品,或者其他什么东西,因为 Canonical 没有更新它来支持任何最近的东西。” Vmbuilder 是一种工具,允许您在常规操作系统下创建和运行一个辅助操作系统,以便在其中构建软件。vmbuilder 的一个理想特性是它可以在虚拟机中创建子操作系统,使其与您的主操作系统完全隔离,有助于防止您构建的代码中的任何问题影响您的实际操作系统。

Wladimir van der Laan 建议使用 debbootstrap(Debian 引导),这是一种早于 vmbuilder 的工具,它使用 chroot 而不是虚拟机,使它能够欺骗普通软件认为它是在一个单独的操作系统中构建的,但它没有做任何重大的事情来防止恶意软件攻击主要操作系统。虽然其他开发者(如 Cory Fields)赞成迁移到 debootstrap,但 Dashjr 仍然担心,他说,“我认为修复 vmbuilder 的努力可能不会太不合理,也许我会尝试一下。”

Andrew Chow补充说,他正在“考虑在Gitian中添加Docker支持,这样我们就可以使用默认的Ubuntu Docker镜像,然后从那里开始构建”。Docker比chroot更安全,但通常不如虚拟机安全。Dashjr指出,Docker也仅限于大多数桌面和服务器使用的x86_64平台,而一些项目贡献者认为,在其他平台上创建一些可重复构建将是有利的,这些平台可能没有x86_64上发现的问题,例如与英特尔管理引擎相关的问题。

结论:切换到debootstrap,同时Dashjr可能正在努力让vmbuilder再次运行。从长远来看,Fields正在努力彻底改造这个系统。

轻松一刻

<wumpus>      #topic dynamic wallet load/unload (promag)
<instagibbs_> what's the controversy in this topic :)
<sipa>        it should happen, duh
<sipa>        how and when is another :)

参与者

IRC昵称 姓名/匿名
sipa Pieter Wuille
wumpus Wladimir van der Laan
jonasschnelli Jonas Schnelli
luke-jr Luke Dashjr
BlueMatt Matt Corallo
promag Joao Barbosa
jnewbery John Newbery
jtimon Jorge Timón
jimpo Jim Posen
achow101 Andrew Chow
randolf Randolf Richardson
instagibbs Gregory Sanders
cfields Cory Fields
sdaftuar Suhas Daftuar
meshcollider Samuel Dobson
jcorgan Johnathan Corgan
kanzure Bryan Bishop

免责声明

本摘要是在没有讨论参与者的任何输入的情况下编写的,因此任何错误都是摘要作者的责任,而不是讨论参与者的责任。