首页 > 比特币 > 正文

“将日期推迟两个月。OP_EVAL 只是还没有准备好。”

这是加文·安德烈森 (Gavin Andresen) 努力避免的判决。罗素·奥康纳 (Russell O'Connor) 的键盘发出了一次谴责,长达数月的升级比特币的努力——在创始人中本聪 (Satoshi Nakamoto) 退出后的第一次——在实施之前突然停滞。 

第一次比特币战争的故事

正如 O'Connor 透露的那样,提议的命令 - 被安德烈森称为通往更安全比特币钱包的“最快路径” - 可以被利用来创建交易,将软件发送到无限计算循环中以尝试验证它们。 

简而言之,OP_EVAL 可能会被滥用来使比特币节点崩溃,从而使比特币网络崩溃。

“我花了 70 分钟才找到这个错误,”奥康纳写道,谴责一个将错误代码合并到实时软件中并几乎将其推入实时软件的过程。“你们需要停止正在做的事情,真正了解比特币。”

这是该项目的新负责人安德森的第一次严重挫折,他很快就提出了抗议。在他看来,放弃 OP_EVAL 不仅会浪费数月的编码和审查,还会让用户没有工具来防范木马和病毒,从而掠夺他们的数字钱包。

P2SH 的传奇展示了比特币独特的开发社区、进行此类更改的难度以及未来协议辩论的基调。

这是 OP_EVAL 吸引力的核心——简单的多重签名钱包将允许用户恢复比特币,即使备份丢失;可以构建服务来发送类似银行的警报,阻止欺诈和盗窃;更好的是,这一切都可以在看起来和行为类似于用户所了解和理解的事务中实现。

但是,对于那些已经看到他们对不断升级的发展速度的担忧得到证实的人来说,奥康纳的警告的话已经足够了。

“我想提醒大家,我们正在搞砸 20 多万美元的事情,”开发商 Alan Reiner 写道。“这不仅仅是一个软件的利害关系——任何东西都需要像钻石一样坚硬。”

OP_EVAL 的失败会产生更大的影响。诚然,中本聪推出了世界上第一个去中心化数字货币,但其承诺远未实现。2011 年末,很少有人了解它的代码,而且仍然拥有保护它的技能和熟悉程度的人更少。

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

这些问题很快就会在比特币软件的第一场大战中脱颖而出。

非正统的继承

免费和开源项目通常由创始人领导,而创始人又必须与他们的工作所依赖的贡献者保持一致。尽管如此,当方向出现争议时,他们被赋予了一种自然的权力,可以作为他们创作的决策者。 

早期的比特币也不例外。在其存在的头两年,中本聪扮演着主要开发者和仁慈的独裁者的角色。作为比特币无可争议的领导者,他颁布了多达八项协议变更,但与更广泛的话语没有太大相似之处。也就是,直到他逐渐退出这个项目。 

到 2010 年底,中本聪将在 Bitcoin.org 网站上删除他们的化名,让经验丰富的 3-D 图形开发人员 Gavin Andresen 成为该项目的“事实上的领导者”。 

安德烈森首选的措辞是恰当的,因为围绕这一转变的情况很不寻常,相当于一条简短的公开信息、一次私人的职责转移以及允许用户发送系统范围警报信息的密钥的交换。

不过,在当时,这对比特币规模小但不断增长的编码人员群体来说几乎没有什么困难。大多数人都关心关键的修复,而终身教授的配偶安德烈森有时间和热情来领导这项工作。 

事实上,有许多紧迫的需求——更快的同步,更好的测试——但“越来越多的钱包被盗报告”和盗窃造成的“不良公关”很快成为最受关注的问题。

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

裸多重签名 

幸运的是,中本聪已经提供了解决方案的蓝图。正如安德森所了解的那样,比特币的代码已经使用户能够创建安全交易,这些交易只能在使用多个私钥进行签名时进行

通过多重签名,或简称多重签名,私钥可以存储在世界两端的多个设备上,或者在用户和钱包服务之间共享,这意味着黑客必须妥协多个目标才能窃取硬币。 

被这个想法迷住的安德烈森成为了它的第一个拥护者,在邮件列表上写下热情洋溢的请求,以激励贡献者采取行动。

“我最大的担心是我们会说,‘当然,只需要几天就可以就如何做正确的事情达成一致’,六个月后仍然没有达成共识,”他写道。”人们的钱包 [将] 继续丢失或被盗。”

担忧并非没有压力——正如中本聪所实施的那样,多重签名有明显的缺点。其中最紧迫的是交易与比特币的标准地址格式不兼容,而是需要更长的地址。 

因此,为多重签名钱包提供资金的交易规模更大,需要更高的费用。更重要的是,这些费用不是由使用多重签名钱包接收比特币的人支付,而是由向他们发送比特币的人支付。 

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

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

输入 OP_EVAL

为了释放他所看到的潜力,Andresen 将继续支持一种新的“操作码”,这是一种节点可以用来决定新类型交易是否以及何时有效的命令。

OP_EVAL 旨在适应更高级的交易,如多重签名,严重依赖哈希,这是一种加密技巧,可以确定性地但不可逆转地将数据打乱和压缩成唯一的数字字符串。

最初由化名开发者 ByteCoin提出,其基本思想是用户可以通过在交易中包含此哈希值来散列指令,详细说明以后可以使用比特币的条件(包括进出多重签名钱包)。硬币基本上会被发送到“散列”。

以后花费比特币所需的条件只有在“从”哈希中花费硬币时才会显示。多签用户在花费硬币时会为增加的交易规模付费,而所需的额外数据对网络造成的负担较小。

由于提案得到了积极的反馈,Andresen 没有浪费任何时间,宁愿尽早部署 OP_EVAL。

“安全性在优先级列表中非常重要;我希望在一年内在人们的论坛签名中看到安全的比特币地址,”他写道

然而,并不是所有人都认同安德森的紧迫感。OP_EVAL 将是对已经价值数百万美元的实时系统的重大升级。在安德烈森的大洋彼岸,年轻的Amir Taaki建议开发商花时间审查提案。

“乍一看似乎不错,”Taaki 写道。“但将其快速跟踪到区块链中可能不是一个明智的主意……比特币明天不会爆炸,因此推迟此类重大变化不会有太大损失。”

更复杂的是,开发人员认为向协议添加 OP_EVAL 会带来重大的协调挑战。从本质上讲,实施它需要冒这样的风险,即所有比特币交易的最终记录区块链,由对其软件规则的共享共识强制执行,可能会分裂成不兼容的网络。 

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

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

一种新的软分叉

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

作为一个绝妙的技巧,他发现可以通过重新定义 Nakamoto 最初包含的几个非活动操作码之一作为未来命令的占位符来部署 OP_EVAL。 

出乎所有人的意料,包括 Andresen,这也将兼容未升级为接受 OP_EVAL 的节点。这些节点会检查哈希是否与新指令匹配,但不会强制执行它们,而是默认接受交易。

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

Nakamoto 已经部署了这种向后兼容的升级或“软分叉”,但随着网络规模的增长,开发人员开始担心需要参与任何升级的人数之多。

不出所料,安德烈森意识到这种情况是可以避免的,这受到了其他知名撰稿人的欢迎,并迅速与他们分享了这个消息。

“哇。Gavin 的观点是 [OP_EVAL] 可以在不分裂的情况下完成,”Gregory Maxwell 评论道,实时对这一发现做出反应。“拿出 [原文如此] 香槟。” 

有了这个,开发人员继续设计一种更安全的方法来激活软分叉。他们从理论上说,他们可以进行类似民意调查的活动,以确定某项功能何时获得矿工的足够广泛支持,然后他们可以使用这些支持来确保安全升级。

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

致命缺陷

但是所有这些工作都被奥康纳的发现所推翻

结果是分裂成派系,一些人认为 OP_EVAL 被不必要地延迟了,而另一些人则认为所提出的快速修复会损害比特币基本脚本语言的某些所需属性

包括 Luke Dashjr、Pieter Wuille 和 Maxwell 在内的开发人员提出了替代方案,如 OP_EVAL,利用将硬币“发送到”散列的概念。但挑战仍然是将这种逻辑,他们开始称为“支付脚本哈希”或“P2SH”,作为软分叉进入比特币并避免区块链分裂。

现有的操作码只能到此为止:非- 升级后的节点需要接受从散列中花费硬币的交易,而不理解新规则。

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

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

安德烈森的提议似乎令大多数人满意。“似乎……乍一看可以接受,”奥康纳回答 。Taaki 在提到代码的非常规方法时说:“这个想法是一种 hack ……但我喜欢它。” 

在随后的开发者会议上,与会者一致同意实施 Andresen 的 P2SH 提案。矿工将在 2 月 1 日之前的一周内接受民意调查,如果大多数哈希算力(55%)表示支持,两周后将释放客户以激活软分叉。

和平将持续几天。

为什么不使用美元?

打破共识的是 Dashjr,他不得不提前离开会议,后来才知道 Andresen 的 P2SH 版本是公认的妥协。

Andresen 解决方案的非常规性质激怒了 Dashjr,他认为这会使协议复杂化并带来不确定的后果。他向安德烈森提出了这个问题,但后者不相信他的担忧值得改变计划

他的建议遭到拒绝,Dashjr 将在 1 月中旬在公共 BitcoinTalk 论坛上爆发,谴责 P2SH 并指控安德烈森“独自”支持这一变化

“Gavin 正在强迫每个人使用最新的比特币代码投票给 [P2SH],”他写道。“如果你想反对这种疯狂的协议更改,你将需要修改你的 BitcoinD 源代码,否则你将默认投票赞成它。”

由于他反对的细微差别,他们发表的傲慢男高音以及他对安德森的指责,对帖子的回应并不积极。一些人认为 Dashjr 试图煽动流行的暴民,而不是将技术辩论限制在开发人员身上。

Dashjr 是该项目更不切实际的贡献者之一,以捍卫替代数字系统的长期论据和坚定的基督教信仰而闻名,这并没有帮助。一位论坛用户说 Dashjr 的评论让他看起来“精神不稳定”。另一个人说他根本不想打扰细节。他只是信任安德烈森

作为回应,Dashjr 基于哲学理由持续反对 P2SH 提议,不仅质疑其技术优点,还质疑其对治理的影响。

“如果你想要一种君主货币,为什么不直接使用美联储的美元呢?” Dashjr 向他的批评者提出要求,结果却遭到其他人的追捧,声称是他在争夺权力

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

但对安德烈森来说,现在进行更多辩论为时已晚。他对公众的爆发感到愤怒,他用自己的方式回应,写道: 

“卢克,你试试我的耐心。在我做一些愚蠢的事情之前,我要离开代码几天来冷静下来。”

GENJIX 上市

由于 Andresen 的 P2SH 设计(现在简称为 P2SH)在很大程度上被该项目的主要开发人员视为一个足够好的解决方案,因此 Dashjr 发现自己几乎没有防御者。 

Taaki 将成为认真对待边缘问题的少数声音 - 但不是因为他反对 Andresen 的解决方案或必然同意 Dashjr 的解决方案。 

这位当时 20 岁出头的开发人员已经是比特币最直言不讳的贡献者之一,虽然他还没有成为引人注目的无政府主义者,他从蹲下进行黑客攻击并与 3D 打印的枪手一起旅行,但他对该软件的愿景是一场反建制运动已经将他赶出了项目的核心圈子。 

这反过来又让 Taaki 不信任该项目正在加速的开发过程。如果决策过程需要时间并涉及更广泛的用户群,他更喜欢它。

在他看来,一小群发号施令的开发人员并没有很好地为比特币服务。Taaki 强烈认为,任何对项目感兴趣的人都应该了解权衡,并尽可能参与决策。 

“我宁愿人们在这件事上有发言权,即使这会让开发人员解释他们的决定变得更加困难,”他告诉其他开发人员。“我有点担心告诉我们的用户这就是它的样子,你没有发言权,然后给他们指指点点。”

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

“[M]我担心有一天比特币会损坏。将这种额外的审查视为建立开放文化的机会,”他争辩道。 

为此,Taaki 写了一篇博客文章,其中列出了 P2SH 和 CHV 升级以及两者之间的差异。 

用户有一个选择,是 Taaki 的信息,以及:“投票基于挖矿能力。”

AF*CKED-UP 情况

凭着他的选择,泷明在房间里发现了一头大象。确实,中本聪已经制定了软分叉,但到 2011 年底,该网络不再像早期那样运作。 

当 Nakamoto 在 2008 年发布白皮书时,他认为工作量证明将由通过个人计算机贡献计算的用户提供。“工作量证明本质上是一个 CPU 一票,”中本聪写道。 

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

但在软件推出后的几年里,这种模式已被企业家淘汰。自从 Lazlo Hanyesz(因比特币披萨而出名)想出如何用更强大的图形处理单元生成比特币以来,专家们一直忙于将挖矿从业余爱好转变为小型企业。 

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

到 2011 年底,只有三个矿池——DeepBit、Slush Pool 和 BTC Guild——控制了全球一半以上的算力。现在,大多数“投票”都集中在少数几个矿池运营商身上,而不是一个 CPU 一票,就好像他们是其网络选民的代表一样。 

对某些人来说,这证明比特币网络出了问题。“我认为 [一个矿池] 决定改变网络是一场投票闹剧,”早期矿工 Midnightmagic 争辩道

对于其他人来说,挖矿中心化是一个不幸的拐杖,是一种使软分叉升级更易于管理,从而降低风险的方法。(毕竟,现在安全部署只需要少数矿池运营商的参与。)

例如,麦克斯韦更屈服于手头令人不满意的现实。 

“如果有重大的阻力,开发人员和矿池都会退缩,但无论如何现在似乎没有人反对它,”他回答道。“[I]ts 是一个很好的机制,可用于未来......希望我们不会遇到比特币不再去中心化的这种糟糕情况。”

投票或不投票

Andresen 和 Dashjr 的交战提案将体现对比特币治理的对立观点,只会使问题复杂化。 

在此之前,开发人员一直将即将进行的软分叉升级视为一种投票:矿工可以以算力多数来执行 P2SH(或 OP_EVAL)概述的新规则,因此投票旨在衡量这种情况的可能性结果。 

但是,虽然术语已成为词典的一部分,但它忽略了一些技术上的细微差别。在进行民意调查时,开发人员并没有完全询问矿工他们对新规则的看法。相反,他们认为这是一种查看矿工是否准备好确保安全升级的方式。

从这个角度来看,对开发人员来说,只向软件用户添加一个提案是有意义的,矿工将运行以执行网络规则。

“比特币系统_不_适合多数选举。不是大多数的算力,不是大多数的人,不是大多数的钱,”麦克斯韦争辩道,他对 Taaki 将决定视为投票的框架感到恼火

Maxwell 强烈认为矿工的“投票”应该受到限制,因为它们在软件本身中,以强制执行交易顺序——而不是整个网络的规则。

“如果当前矿工中的绝大多数(甚至 100%)决定补贴永远为 50 BTC,会发生什么?没有什么。从比特币网络的角度来看,在他们的软件中改变该规则的矿工只是停止存在,”他写道。 

Dashjr 并不反对 Maxwell,但在实践中,如果开发人员在没有矿工支持的情况下推动更改,他很难看出比特币将如何保持安全。

“矿工可以简单地拒绝挖掘 P2SH 交易,以免受'开发团队的变化'的影响,”他回应。“如果'开发商'锁定所有矿工,你猜会发生什么?轻松 50% 攻击,网络不安全!”

从这个角度来看,更容易理解为什么 Dashjr 认为 Andresen 通过试图单独推动 P2SH 来滥用他作为首席开发人员的角色。如果矿工使用标准软件挖出一个区块,它会自动投出“投票”支持 P2SH
作为回应,Dashjr 编写了补丁,将他的首选提案纳入算力“选举”,引入了矿工投票支持和反对 P2SH 和 CHV 的选项。

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

他认为开发人员之间显然尚未达成共识,他写道:“我不想成为决定此事的单一实体。”

僵局

在拒绝矿池可以用来影响升级决定的想法时,第谷在手头的辩论中又增加了一个转折点。没有他的支持,占所有算力的 30% 以上,P2SH 将很难被激活。

到 1 月下旬,第一轮 P2SH 投票接近尾声,看起来并没有达到规定的门槛。升级将不得不推迟,这一现实不仅让安德森感到沮丧,也让其他开发人员感到沮丧。

在 IRC 上,麦克斯韦公开感叹,僵局似乎看不到尽头。

“这个'匆忙'的模因是胡说八道,Gavin 开始了 [pay-to-script-hash] 路线,什么,十月?” 他写道。“据我所知,除非有人制定最后期限,否则这个过程永远不会收敛,因为总会有一些 NEXT 人的好主意被排除在外。”

Andresen 将延迟归咎于矿池的出现,而不是 DeepBit 的运营商 Tycho 个人。“现在看来,一个人拥有足够的算力来否决任何更改,”他写道

这让安德烈森感到困扰,他认为第谷的立场是不道德的。“我认为你利用自己作为最大矿池运营商的地位违背普遍共识是错误的,”他写道

事实上,即使安德烈森竟然施加公众压力,推动用户要求他们的矿池升级——并提出在 P2SH 导致任何经济损失的情况下偿还 DeepBit 的所有资金——第谷也不愿意“投票”支持提案

面对延迟,Andresen 试图将公众卷入其中,他坚信在 P2SH 和 CHV 之间做出选择对用户影响不大。

Andresen 写道:

“所有 [P2SH/CHV] 的东西主要是工程师们在争论是否使用钉子、螺丝或胶水将两块木头放在一起更好。任何解决方案都行得通,普通用户不会注意到任何区别。”

从帖子中的回应来看,比特币用户接受了安德烈森的框架,指责第谷阻止了分叉并迫使他激活。

反过来,第谷强烈反对安德烈森的断言。即使拥有 30% 的算力,他也知道剩下的矿工可以否决他,他不想成为决定性因素。

第二轮

由于 P2SH 迄今未能积累足够的算力支持,Andresen 将越来越被迫公开讨论他的提案的策略,并且他开始接受 CHV 作为打破僵局的潜在替代方案。

尽管如此,回应还是在那些认为 P2SH 和 CHV 之间的选择是由矿工做出的人和支持更精英决策的人之间划出了分界线。

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

该论坛的管理员 Themos 完全拒绝了这个想法。“非矿工可以拒绝区块。如果有足够多的客户这样做,矿工开采的硬币将变得一文不值。

相反,他们建议某些专家内部圈子进行为期两周的讨论,并在最后进行投票。无论是因为建议还是偶然,Dashjr 很快就创建了一个 Wiki,让一群受人尊敬的开发人员可以表达他们的偏好。

在接下来的几天里,Maxwell、Thomas 和 Wuille 都表示他们很乐意接受 P2SH 或 CHV,尽管他们明确表示他们更喜欢 P2SH。O'Connor 和 Dashjr 同意 P2SH 是可以接受的,但表示更喜欢 CHV

也许不出所料,安德烈森确保在选票上动摇支持 P2SH,对 CHV 提案发出响亮的“不”。

更重要的是,也许很少有矿工支持 CHV。到 2 月中旬,P2SH 获得了 30% 的算力支持,而 Dashjr 的替代方案则停留在 2% 左右。

在 IRC 的一次会议上,Dashjr 表示他正在考虑是否完全撤回 CHV,不情愿地接受 P2SH 的主导地位。在同一次会议上,与会者同意将第二个投票截止日期定为 3 月 1 日。

随着新截止日期的临近,更多的矿工聚集在 P2SH 后面,使算力支持接近 55% 的门槛。很快,第谷和 Dashjr 都别无选择,只能接受同龄人的偏好

于是,Andresen 宣布软分叉将在 10 天内部署和激活,到 2012 年 4 月 1 日,新规则开始实施

P2SH,自中本聪离开以来的第一次协议升级,已经颁布。

茶壶中的风暴

导致 P2SH 通过的艰难政治过程将继续在软件本身之外产生持久影响。

最终,Andresen 能够部署他设计并喜欢的解决方案。如果可以说他的领导力在危机中受到了质疑,到最后却是牢牢地巩固了下来。

公众舆论不关心具体细节,主要反对 Dashjr 的行为,在较小程度上反对 Taaki,认为它们是不必要的和具有煽动性的。Andresen 甚至要求 Dashjr 完全停止对比特币的贡献,尽管他似乎要么放弃了这一威胁,要么 Dashjr 干脆无视它

与此同时,Maxwell 成为比特币的“核心开发人员”之一,与 Andresen 以及贡献者 Wladimir van der Laan 和 Jeff Garzik 共享对该项目的提交访问权限。

基调已经确定:在比特币开发方面,支持、务实的态度会得到回报,而逆势贡献者则被解雇。虽然意识形态上的分歧已经浮出水面,但它们仍然存在——而且可以说只是被——程序所根深蒂固。

随着越来越多的用户涌入比特币,P2SH 很快就被传开了,尽管它显然会继续成为开发人员之间分歧的导火索。

回顾一年后为应对另一场新危机而发生的事件,Andresen 会夸口说他相信 P2SH 验证了他对该项目的领导力和愿景

“区块大小将增加,”他写道,以回应开发商 Peter Todd 制作的视频,该视频反对 2013 年初的限制增加。“你的视频只会让很多人什么都不担心,就像去年 Luke-Jr 的 [CHV] 提案一样,只会在茶壶里掀起一场风暴。”

第一个去中心化数字货币应该如何决策?如果这个问题最终被提出来,那么将需要一场更广泛的战争,在未来几年内,才能解决这个问题……

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息