主页 > 最新版imtoken钱包 > P2SH 战争:比特币鲜为人知的第一次软件战争

P2SH 战争:比特币鲜为人知的第一次软件战争

最新版imtoken钱包 2023-01-18 09:41:51

比特币应用_比特币应用_比特币的典型应用

共享理财

传媒|市场营销|咨询

比特币应用_比特币应用_比特币的典型应用

总结:回顾比特币历史上的第一次战争

“把日期往后推两个月,OP_EVAL 还没准备好。”

这是 Gavin Andresen 极力回避的观点,随着 Russell O'Connor 通过键盘敲击斥责,长达数月的比特币升级努力(在比特币创始人中本聪退出后),在实施中突然陷入停顿.

正如 O'Connor 透露的那样,这个被安德烈森称为通往更安全的比特币钱包的“最快路径”的建议命令可用于创建恶意交易,将软件发送到无限数量的计算循环以验证它。 简而言之,OP_EVAL 可以被滥用来破坏比特币节点,从而破坏比特币网络。

奥康纳写道:

“我花了 70 分钟才找到这个错误。 你们需要停下手头的工作,真正了解比特币。”

这是比特币项目新负责人安德烈森的第一次严重挫折,他很快为自己辩护。 在他看来,放弃 OP_EVAL 不仅浪费了数月的编码和审查工作,而且还让用户没有工具来防范抢劫他们数字钱包的木马和病毒。

这是 OP_EVAL 吸引力的核心——简单的多重签名钱包将允许用户恢复比特币,即使他们的备份丢失了; 可以构建服务来发送类似银行的警报以阻止欺诈和盗窃,更好的是,这一切都可以通过表现得像用户知道和理解的交易来实现。

但对于那些看到这种升级的潜在缺点的人来说,奥康纳的警告就足够了。

开发者 Alan Reiner 写道:

“我想提醒大家,我们正在搞一个 2000 万美元以上的项目,这不仅仅是软件问题,任何进展都需要像钻石一样坚硬。”

OP_EVAL的失败会产生更大的影响,的确,中本聪推出了世界上第一个去中心化数字货币,但它的承诺远未实现。 在 2011 年底,很少有人了解它的代码,显然,拥有保护它的技能的人更少。

应该如何组织这些开发人员? 他们对用户有什么责任? 当不清楚谁(如果有的话)应该拥有最终决定权时,他们将如何实施变更?

在比特币软件的第一次大战中,这些问题很快就被推到了风口浪尖。

比特币应用_比特币应用_比特币的典型应用

异端继承

免费和开源项目通常由创始人领导,而创始人又必须使他们的工作与贡献者保持一致。 尽管如此,在风向标之争的时代,创始人仍然拥有为自己的创作做决策的天然权力。

在早期,比特币也不例外。 在比特币诞生的头两年,中本聪扮演着首席开发者和仁慈独裁者的角色。 作为无可争议的比特币领导者,中本聪在没有涉及更广泛讨论的情况下制定了多达 8 项协议变更[1]。 后来,中本聪逐渐退出了比特币项目的维护工作。

2010年底,中本聪删除了他留在Bitcoin.org网站上的化名,让资深3D图形开发者Gavin Andresen宣称他是比特币项目的“事实上的领导者”[2]。

围绕这次过渡的情况是不寻常的,包括简短的公开信息、私下传递职责和交换密钥。

不过,在当时,这对规模虽小但不断壮大的比特币编码员来说并没有什么困难。 大多数人担心关键问题,而终身教授的配偶 Andresen 有时间和热情来领导这项工作 [3]。

事实上,当时有很多紧迫的需求(更快的同步、更好的测试等),但“钱包被盗报告”的增加和盗窃的不良影响很快成为人们最关心的问题。

有一段时间,比特币的新贡献者似乎同意这个目标 [4]。

最基本的多重签名

比特币的典型应用_比特币应用_比特币应用

幸运的是,中本聪提供了解决方案的蓝图,正如安德烈森所了解的那样,比特币的代码已经允许用户创建安全交易,只有在使用多个私钥签名时才能使用 [5]。

通过多重签名(multisig),私钥可以存储在多个设备上,可以在世界的另一端,也可以在用户和钱包服务之间共享,这意味着黑客将不得不攻击多个目标来窃取比特币.

Andresen 被这个想法深深吸引,以至于他成为了它的首批倡导者之一,在开发人员邮件列表上写了一篇慷慨激昂的行动呼吁,鼓励贡献者采取行动。

他写了:

“我最大的恐惧是我们会说,‘当然,我们只需要几天时间就如何做好这件事达成共识’,而六个月后共识仍然没有,人们的钱包(会)继续丢失或被盗。”

担忧并非没有分量,中本聪实施的多重签名也有明显的缺点。 其中最紧迫的是交易与比特币的标准地址格式不兼容,需要更长的地址。

因此,多重签名交易规模更大,费用也更高。 更重要的是,这些费用不是由使用多重签名钱包接收比特币的人支付的,而是由发送比特币的人支付的。

由于这些属性,多重签名交易在软件中被指定为“非标准”交易,这意味着它们不一定广播到网络上的节点。 如果一个节点收到一个多重签名交易,它会简单地忽略它。 同样,不能保证矿工将这些交易包含在区块中。

如果包含它们,节点将接受它们(多重签名交易最终有效)。 但实际上,这些交易几乎不可能得到确认。

输入 OP_EVAL

为了释放他看到的多重签名的潜力,Andresen 继续倡导一种新的“操作码”,节点可以使用该命令来确定新型交易是否有效以及何时有效。

OP_EVAL 旨在容纳更高级的交易,例如多重签名,它主要依赖于散列法,这是一种加密技巧,可以确定性但不可逆地将数据压缩成唯一的数字字符串。

这个想法最初是由匿名开发商 ByteCoin 提出的,用户可以通过在交易中包含哈希来指定未来如何使用比特币的指令。

Multisig 用户在花费硬币时为增加的交易规模付费,并且所需的额外数据对网络的负担较小。

由于提案收到的积极反馈,Andresen 没有浪费时间比特币应用,他想尽早部署 OP_EVAL。

他写了:

“安全性在优先级列表中名列前茅,我希望在一年内在论坛签名中看到安全的比特币地址。” [7].

然而,并非所有人都同意安德烈森的紧迫感。 对于一个已经价值数千万美元的项目来说,OP_EVAL 代表了一次重大升级。 在大洋彼岸,年轻的阿米尔·塔基 (Amir Taaki) 建议开发商花一些时间来审查该提案。

塔基写道:

“乍一看,这个提议似乎不错,但迅速将其纳入区块链可能不是一个聪明的主意……比特币明天不会爆炸,所以推迟这样一个重大变革并没有太大的损失。”

使事情更加复杂的是,开发人员认为将 OP_EVAL 添加到协议中会带来重大的协调挑战。 从本质上讲,实施它会带来分裂成不兼容网络的风险。

这意味着一旦 OP_EVAL 上线,每个用户都必须切换到新版本的软件和新的区块链,即所谓的“硬分叉”升级。

如果不统一升级,矿工可能会在不知不觉中产生“无效”区块。 更糟糕的是,用户可能会在不知不觉中接受“无效”交易。

一种新型软分叉

但很快,安德烈森意识到他可以安抚他的批评者。

他发现,通过巧妙的技巧,OP_EVAL 是通过重新定义最初由中本聪作为未来命令的占位符包含的少数几个非活动操作码之一来部署的。

令所有人(包括 Andresen 本人)惊讶的是,这也将兼容尚未升级为接受 OP_EVAL 的节点。 这些节点将检查哈希值是否与新指令匹配,但不会强制执行它们,默认情况下接受交易。

比特币的典型应用_比特币应用_比特币应用

只要大多数矿工执行新规则,这意味着新区块链将被升级和未升级的节点视为有效。 升级后的节点会接受区块链,因为它们正在执行新规则,而升级失败的节点也会接受新的区块链,因为它们都不关心新规则。

中本聪已经部署了这种向后兼容的升级或“软分叉”,但随着网络规模的扩大,开发人员开始有了一些担忧。

不出所料,Andresen 意识到这是可以避免的,受到了其他著名代码贡献者的欢迎,他很快就与他们分享了这个消息。 作为回应,格雷戈里麦克斯韦评论道:

“哇,Gavin 关于 [OP_EVAL] 可以在不分裂网络的情况下完成的想法让我大吃一惊。拿出香槟庆祝一下。”

有了它,开发人员继续设计一种更安全的方式来激活软分叉。 他们的理论是,他们可以做一些类似民意调查的事情来确定某个功能何时获得矿工足够广泛的支持,然后他们可以使用该支持来确保安全升级。

矿工将被要求在开采的区块中包含一些数据,以表明他们将执行新规则。 当大多数人准备就绪时,可以激活更改 [10]。

致命缺陷

但所有这些工作都被奥康纳的发现推翻了[13]。

结果,开发人员分成了几个派别,一些人认为 OP_EVAL 被不必要地延迟了,而另一些人则认为提议的快速修复会损害比特币基本脚本语言 [14] 的一些理想属性。

包括 Luke Dashjr、Pieter Wuille 和 Maxwell 在内的开发人员提出了一种替代方案,类似于 OP_EVAL,使用将硬币发送到哈希的概念。 但挑战仍然是如何将这种逻辑(他们最初称之为“Pay to Script Hash”或简称为“P2SH”)转化为比特币软分叉以避免区块链分裂。

现有的操作码只能到此为止:未升级的节点将需要在不知道新规则的情况下接受从哈希中花费硬币的交易。

是 Andresen 找到了前进的方向,他的特殊 P2SH 解决方案根本不需要新的操作码。 相反,安德烈森的想法是,可以对比特币进行编程以识别某种交易格式,然后以非常规的方式解释该格式,以使用新指令对其进行验证。

任何未升级的节点将使用正常逻辑来解释非标准格式。 与 OP_EVAL 一样,未升级的节点始终认为交易有效。 这意味着 P2SH 可以部署为软分叉:只要大多数算力执行新规则,新旧节点将在同一区块链上达成共识。

大多数人似乎都满意安德烈森的提议。 奥康纳评论 [15]:

” “看,这似乎可以接受。 “

Taaki 谈到代码的非常规方法时说:

“这个想法有点像黑客……但我喜欢它。”

在随后的开发者会议上,与会者一致同意实施 Andresen 的 P2SH 提案。 矿工们将在 2 月 1 日之前的一周进行投票。 如果大多数算力(超过55%)支持,那么两周后,将发布客户端激活软分叉。

但和平只持续了几天。

为什么不是美元?

是 Dashjr 打破了共识。 他因为有事提前离开了会议,后来才知道安德烈森的P2SH版本计划被认可为妥协。

Andresen 提议的非常规性质激怒了 Dashjr,他认为这会使协议复杂化并带来不确定的后果。 Dashjr 向 Andresen 提出了这个问题,但后者认为 Dashjr 的顾虑不值得改变计划[16]。

遭到拒绝后,Dashjr 于 1 月中旬在公共 BitcoinTalk 论坛上大发雷霆,他在论坛上谴责 P2SH 提议,并指责 Andresen“单枪匹马”支持这一变革 [17]。

达什尔写道:

“Gavin 强迫所有使用最新比特币代码的人投票给 [P2SH],如果你想反对这种疯狂的协议更改,那么你将需要修改你的 BitcoinD 源代码,或者默认投票给它。”

由于 Dashjr 没有令人信服的反对意见和他对 Andresen 的谴责,对该帖子的反应并不积极。 一些人认为 Dashjr 并没有将技术辩论限制在开发人员之内,而是试图煽动大众。

Dashjr 是比特币项目的一个类似堂吉诃德的代码贡献者,他说一位论坛用户认为 Dashjr 的评论让他看起来“精神不稳定”,而另一位则表示他根本不想理会细节。 ,他只是信任安德烈森 [19]。

比特币的典型应用_比特币应用_比特币应用

作为回应,Dashjr 对 P2SH 提案提出了持续的哲学反对意见,不仅质疑 P2SH 的技术价值,还质疑其对治理的影响。

“如果你想要一种主权货币,为什么不直接使用美联储的美元呢?” Dashjr 用这样的话回应那些攻击他的人,结果却被其他认为 Dashjr 是在为权力而战的人围攻[20]。

但 Dashjr 没有退缩,写了一个 P2SH 的替代版本,叫做 CheckHashVerify (CHV)。 本质上,CHV 是 P2SH 的另一种实现,但不需要对交易输出进行非常规解释。 相反,CHV 添加了一个新的操作码,与 OP_EVAL 一样,可以“伪装”为占位符操作码。

但对安德烈森来说,为时已晚[21],他觉得没有进一步的辩论可以进行了。 对于公众的愤怒,他以自己的方式回应:

“路克,你这是在挑战我的耐心,我要离开代码几天冷静下来,然后再做傻事。”

参数扩展

由于 Andresen 的 P2SH 设计在很大程度上被项目的主要开发人员视为一个足够好的解决方案,因此 Dashjr 发现自己处于孤立的位置。

只有 Taaki 有点担心,但他并不反对 Andresen 的解决方案,也没有说他同意 Dashjr 的解决方案。

这也让 Taaki 对项目的加速开发过程不信任,如果决策过程需要时间并且涉及更广泛的用户群,他更喜欢这种方式。

在他看来,由一小群开发者来决定比特币的道路是不合适的,Taaki 坚信任何对该项目感兴趣的人都应该意识到权衡取舍并尽可能地参与决策.

他告诉其他开发人员:

“我希望人们在这件事上有发言权,即使这会让开发商难以解释他们的决定。”

尽管 Taaki 同意 Andresen 的 P2SH 和 Dashjr 的 CHV 提案之间的差异很小,但他坚持认为让用户参与开发过程是一项重要的工作,并指出:

“我担心有一天比特币会崩溃,而这种额外的审查可以被视为建立开放文化的机会。”

为此,Taaki 写了一篇博文,列出了 P2SH 和 CHV 的升级以及两者之间的区别 [23]。

Taaki 的信息是用户可以选择,投票是基于算力的。

混乱局面

Taaki 的这番话产生了巨大的影响。 诚然,中本聪实施了软分叉,但到 2011 年底,网络不再像以前那样运行。

中本聪在 2008 年发布白皮书时,假设工作量证明(PoW)是由用户通过个人电脑贡献计算来提供的,他写道:“工作量证明实际上是一个 CPU 一票”

在这种设计下,任何用户都可以成为矿工并通过提议区块、验证节点发送的交易以及执行开发人员编写的代码来保护网络。

但在软件推出后的几年里,这种模式已经被企业家们淘汰了。 自从 Lazlo Hanyesz(比特币换披萨的开发者)想出了如何使用更强大的图形处理单元 (GPU) 来挖掘比特币以来,专家们一直忙于将采矿从业余爱好者转移到业余爱好者。 爱好变成了公司的工作。

大约在同一时间,Marek“Slush”Palatinus 提出了一种方法,允许矿工集中提出区块所需的计算能力并分享利润。 这有效地使挖矿工作不再是彩票,而是更多的稳定收入来源。

到2011年底,全球只有DeepBit、Slush Pool和BTC Guild这三个矿池,而这些矿池控制着比特币网络一半以上的算力。 当时,大部分“选票”都集中在少数矿池运营商手中。 这不再是“一个CPU,一票”的制度,矿池成为了网络选民的代表。

对于一些人来说,这证明比特币网络出了问题。 “我认为由矿池决定对网络进行更改是一场闹剧,”早期矿工 Midnightmagic [24] 认为。

对于其他人来说,挖矿中心化是一种不幸的依赖,使“软分叉”升级更易于管理,因此风险更小。 (毕竟,现在安全上线只需要少数矿池运营商参与)

例如麦克斯韦就更愿意接受眼前不尽如人意的现实[25],他回答说:

“如果面临更重大的变化,开发人员和矿池将退缩,但现在似乎没有人反对它。这是未来的一个很好的机制......希望我们不会在比特币不再存在的情况下陷入困境分散的情况。”

比特币应用_比特币的典型应用_比特币应用

投票还是不投票?

Andresen 和 Dashjr 的敌意提议反映了对比特币治理的对立观点,只会使事情复杂化。

到目前为止,开发人员一直将即将到来的软分叉升级称为一种投票:矿工可以用多数算力执行 P2SH(或 OP_EVAL)的新规则,因此投票旨在衡量这种结果的概率.

虽然这个术语正在慢慢为人所知,但它忽略了一些技术上的细微差别。 在进行民意调查时,开发人员没有询问矿工他们对他们的新提议的看法。 相反,他们将其视为查看矿工是否准备好进行安全升级的一种方式。

从这个角度来看,对于开发者来说,只是在软件中加入一个提案,而用户和矿工将执行网络的规则。

Maxwell 对 Taaki 对投票的定义感到恼火[26],他认为:

“比特币系统不适合多数选举,它不是由多数算力决定的,也不是由多数人决定的,也不是由多数货币决定的。”

Maxwell 坚信矿工的“投票”应该像软件本身一样受限于交易执行的顺序,而不是受整个网络规则的约束。

“如果今天绝大多数(甚至 100%)的矿工决定区块补贴永远是 50 BTC,会发生什么?从比特币网络的角度来看,软件矿工不再存在改变这一规则的任何东西。”

Dashjr 并不反对 Maxwell,但实际上,他很难想象如果开发人员在没有矿工支持的情况下推动变革,比特币将如何保持安全。

“矿工可以简单地拒绝 P2SH 交易以避免‘开发团队变动’,”他回应道 [27],“如果开发者阻止所有矿工,你猜怎么着? 网络容易受到 50% 的攻击,变得不安全。”

从这个角度来看,更容易理解为什么 Dashjr 认为 Andresen 滥用其首席开发人员的角色,试图单独推动 P2SH。 如果矿工使用标准软件开采一个区块,它会自动投出支持 P2SH 的“投票”[28]。

作为回应,Dashjr 编写了一个补丁,介绍了矿工可以投票支持和反对 P2SH 和 CHV 的选项。

尽管很少有矿工使用该代码,但 Dashjr 的反对产生了影响。 DeepBit 矿池的运营商第谷开始对自己在评估竞争代码中的角色感到不安。

显然,开发人员之间没有达成共识,他写道:

“我不想成为一个单独的实体来做决定。”[29]

僵持

在提出拒绝利用矿池影响升级决定的想法后,第谷为当时的争论添加了一个转折点,如果没有他的支持,P2SH 将很难启动。

1月下旬,第一轮P2SH投票即将结束,支持P2SH的算力还没有达到激活门槛。 升级显然被推迟的事实不仅让 Andresen 感到沮丧,也让其他开发人员感到沮丧。

在 IRC 上,Maxwell 公开表示僵局似乎没有结束的迹象,写道:

“这种急于上线的想法是胡说八道,Gavin 去年 10 月就开始了 P2SH 路线,据我所知,除非有人设定最后期限,否则不会成功,因为总会有人有好主意,下一刻就会冒出来。”

Andresen 没有将延迟归因于矿池的出现,而是归因于 DeepBit 运营商 Tycho,Andresen 写道:

“目前,似乎有人拥有足够的计算能力来否决任何更改。” [31]。

这让安德烈森很不高兴,他认为第谷的立场是不道德的,安德烈森写道:

“我认为违背普遍共识使用自己最大矿池运营商的权力是不对的。”[32]

事实上,即使当 Andresen 向公众施压,迫使用户升级他们的矿池,并提出如果 P2SH 造成任何经济损失,他将向 DeepBit 偿还所有资金,Tycho 也不愿意“投票”该提案 [33] .

面对延迟,安德烈森试图引起公众的注意,坚称在 P2SH 和 CHV 之间进行选择对用户影响不大。

比特币应用_比特币应用_比特币的典型应用

他写了:

“[P2SH/CHV] 这两个提议相当于工程师争论是否将两块木头用钉子、螺丝或胶水放在一起。任何解决方案都可以,普通用户不会注意到任何差异。”

从回复来看,比特币支持者接受了安德烈森的说法,指责第谷阻止升级并向他施压以启动该提案。

反过来,第谷强烈反对安德烈森的说法。 他说,即使他有30%的算力,其他矿工也可以否决他,他不想成为决定因素。

第二轮投票

由于 P2SH 延迟获得足够的算力,Andresen 被迫公开讨论他提出的策略,他开始接受 CHV 作为打破僵局的潜在替代方案。

尽管如此,社区成员的反应之间还是存在界限。

BitcoinTalk 用户 dooglus 认为:“最终,矿工是唯一对此类问题有发言权的人。 他们是唯一决定哪些交易进入区块的人。”

但 BitcoinTalk 论坛的管理员 Theymos 完全拒绝了这个想法。 他提出“非矿工也可以拒绝区块。如果有足够多的客户这样做,矿工开采的币将一文不值”。

他们提出了一个建议,应该在内部讨论两周,最后进行表决[37]。 无论是出于建议还是意外,Dashjr 迅速创建了一个 wiki 页面,受人尊敬的开发人员可以在其中表达他们的偏好。

在接下来的几天里比特币应用,Maxwell、Thomas 和 Wuille 都表示他们很高兴接受 P2SH 或 CHV,尽管他们明确表示他们更喜欢 P2SH。 虽然 O'Connor 和 Dashjr 同意 P2SH 是可以接受的,但他们更喜欢 CHV [38]。

不出所料,安德烈森仍然投票支持 P2SH,并对 CHV 提案提出强烈反对。

更重要的是,很少有矿工支持 CHV 提议,到 2 月中旬,P2SH 得到了 30% 的算力支持,而 Dashjr 替代方案只有 2% 的算力支持。

在 IRC 会议上,Dashjr 表示正在考虑是否彻底退出 CHV,勉强接受了 P2SH 的主导地位 [39]。 在同一次会议上,与会者同意将第二次投票的截止日期定在 3 月 1 日。

随着新期限的临近,更多矿工支持P2SH,算力逼近55%的门槛。 很快,Tycho 和 Dashjr 别无选择,只能接受大多数人的偏好[40]。

据此,Andresen 宣布软分叉将在 10 天内部署和激活,新规则将于 2012 年 4 月 1 日实施 [41]。

P2SH 是中本聪退出后实施的第一个比特币提案升级。

茶壶里的风暴

P2SH 艰难的政治进程将在该提案之外继续产生持久影响。

最终,Andresen 能够部署他设计并喜欢的解决方案。 如果说危机期间安德烈森的领导能力受到质疑,那么到最后,他的领导能力得到了很好的巩固。

之后,Andresen 甚至要求 Dashjr 完全停止对比特币的贡献,尽管看起来他要么放弃了威胁,要么 Dashjr 只是忽略了它[43]。

同时,麦克斯韦成为比特币的“核心开发者”之一。 他与 Andresen、Wladimir van der Laan 和 Jeff Garzik 共享比特币项目的提交维护权限。

基调已定:就比特币的发展而言,务实的​​做法将受到奖励,相反的贡献者将被解雇。

随着越来越多的用户涌向比特币,P2SH 迅速获得采用,尽管这将继续成为开发人员之间的分歧点。

一年后回顾事件以应对另一场危机时,安德烈森会夸口说他相信 P2SH 验证了他对该项目的领导能力和愿景 [44]。

在回应开发者 Peter Todd 在 2013 年初制作的视频时,Andresen 写道:

“块大小将会增加,你的视频只会让很多人担心一些不会发生的事情,就像去年 Luke-Jr 的 [CHV] 提案刚刚引起了茶壶风暴一样。”

第一个去中心化数字货币如何决策? 如果最终提出这个问题,将需要更广泛的战争,需要数年时间才能解决……