“把日期往后推两个月,
OP_EVAL
还没有预备好。”
这是Gavin Andresen竭力想避免的定见,跟着Russell O’Connor经过键盘打出一段责备语后,长达数月之久的比特币晋级努力(在比特币开创人中本聪退出后),在施行前突然堕入停滞。
正如O’Connor所揭示的那样,这个提议的指令(被Andresen称为通向更安全的比特币钱包的“最快途径”),可被用来创建歹意买卖,其将软件发送到无限的计算循环中,以对其进行验证。简而言之,OP_EVAL
或许会被乱用,损坏比特币节点,进而损坏比特币网络。
O'Connor写道:
“我花了整整70分钟,才找到这个缝隙。你们需求中止现在的行为,并真实了解比特币。”
这是比特币项意图新带头人Andresen第一次严重受挫,他很快就提出申辩。在他看来,抛弃OP_EVAL
不只浪费了数月的编码和检查作业,还会让用户没有东西去防备木马和病毒,进而掠夺他们的数字钱包。
这正是OP_EVAL
吸引力的中心地点 —— 简单的多签名钱包将答应用户恢复比特币,即便其备份丢掉;能够构建服务来发送相似银行的警报,以阻止诈骗和偷盗,而且更好的是,这一切都能够经过行为相似于用户所了解和了解的买卖来完成的。
可是,关于那些看到这一晋级所带来的潜在负面影响的人来说,O’Connor的正告之言满足了。
开发者Alan Reiner写道:
OP_EVAL
的失败将产生更大的影响,的确,中本聪推出了国际上第一个去中心化的数字钱银,但它的承诺远未完成。在2011年末,很少有人能了解它的代码,而具有保护它的技能的人明显更少。
这些开发人员应如何组织?他们对用户负有什么责任?当不清楚谁(假如有的话)应该具有终究决议权时,他们将如何制定变更?
在比特币软件的第一场大战中,这些问题很快就被推到最前面。
非正统的承继
自在和开源项目通常是由开创人领导,而开创人又有必要使他们的作业与奉献者坚持一致。虽然如此,在出现方向性纠纷的时分,开创人仍具有着天然的权力,能够担任其创作的决议计划者。
在前期,比特币也不破例。在比特币存在的头两年里,中本聪扮演着首席开发者和仁慈独裁者的人物。作为比特币无可争议的带头人,中本聪制定了多达8项协议更改,而没有涉及更广泛的评论[1]。再后来,中本聪就逐渐退出了比特币项意图保护。
到了2010年末,中本聪删除了他在Bitcoin.org网站上留下的笔名,并让资深3D图形开发人员Gavin Andresen宣称他是比特币项目“事实上的领导者”[2]。
环绕这次过渡的状况很不寻常,包含简略的公共音讯,暗里传递职责以及密钥交换。
不过,其时这关于规模虽小,但不断在增长的比特币编码人员来说,这简直没有什么困难。大大都人都在忧虑关键问题,而Andresen,一位终身教授的配偶,有时刻和热心来领导这项作业[3]。
事实上,其时有许多迫切的需求(更快的同步,更好的测试等),但“钱包被盗报告”的增加以及偷盗形成的不良影响,很快成了一个首要问题。
曾有一段时刻,比特币的新奉献者好像都赞同这个目标[4]。
最底子的多重签名
幸运的是,中本聪供给了解决计划的蓝图,正如Andresen所了解到的,比特币的代码已答应用户创建安全的买卖,这些买卖只需在运用多个私钥签名时才能运用[5]。
有了多重签名(multisig),私钥能够存储在多个设备上,或许存储在国际的另一端,或许在用户和钱包服务之间同享,这意味着黑客将不得不进犯多个目标才能盗取比特币。
Andresen被这个主意迷住了,他成为了该主意的第一个拥护者,在开发者邮件列表上,Andresen写下了一封慷慨激昂的呼吁书,鼓励奉献者采取行动。
他写道:
“我最忧虑的是,咱们会说,‘当然,咱们只需求几天时刻就能够就如何做好这件事达成一致’,六个月后一致仍然没有达成,人们的钱包(将)继续丢掉或被盗。”
忧虑并非没有重担,正如中本聪所施行的,多重签名具有明显的缺陷。其间最紧迫的是买卖与比特币的规范地址格局不兼容,这需求更长的地址。
因而,多重签名买卖更大,费用也要更高。更重要的是,这些费用不是由运用多重签名钱包接收比特币的人付出的,而是由向他们发送比特币的人付出的。
因为这些特点,多重签名买卖在软件中被指定为“非规范”买卖,这意味着它们纷歧定会广播到网络上的节点。假如一个节点接收到一笔多重签名买卖,它将直接忽视它。同样,不能保证矿工将这些买卖归入到区块。
假如将它们包含在内,则节点将承受它们(多重签名买卖终究有用)。但在实践中,这些买卖简直不或许得到确认。
进入 OP_EVAL
Andresen为了开释他所看到的多重签名的潜力,他继续倡导了一种新的“操作码op-code”,这是一种指令,节点能够运用该指令来确认新型买卖是否有用以及何时有用。
OP_EVAL
旨在容纳诸如多重签名之类的更高级的买卖,其主要依靠哈希,这是一种密码学技巧,能够确认地对数据进行压缩,但不可逆地压缩成一个唯一的数字字符串。
这个主意开端是由匿名开发者ByteCoin提出的,其底子思想是用户可经过将哈希包含在买卖中,来详细说明比特币日后花费条件的指令。
多重签名用户在花费币时会为增加的买卖巨细付费,而所需的额定数据对网络的负担变小了。
因为该提议得到了活跃反响,Andresen没有浪费任何时刻,他期望尽早布置OP_EVAL
。
他写道:
“安全性在优先级列表上的确很高,我期望在一年之内在论坛签名中看到安全的比特币地址。” [7]。
可是,并非一切人都认同Andresen的紧迫感,关于一个已具有数千万美元价值的项目而言,OP_EVAL
意味着一次严重晋级。而在大洋彼岸,年青的Amir Taaki主张开发者花些时刻来检查该提案。
Taaki写道:
“乍一看,这个提案好像不错,但快速将其归入区块链或许不是一个明智的主意……比特币不会在明天爆炸式增长,因而推延此类严重更改不会形成严重损失。”
使问题进一步复杂化的是,开发人员假定将OP_EVAL
添加到协议中将带来巨大的协调应战。从本质上讲,施行它需求冒危险,有或许会割裂成不兼容的网络。
这意味着一旦OP_EVAL
上线,每个用户都有必要切换到新版别的软件和新的区块链,这便是所谓的“硬分叉”晋级。
假如不能统一晋级,矿工或许会在不知不觉中产生“无效”区块。更糟糕的是,用户或许在不知不觉中承受了“无效”买卖。
一种新的软分叉
但很快,Andresen就意识到能够安抚他的批评者。
他发现,经过一个巧妙的技巧,经过从头定义中本聪开端包含的几个不活动的操作码中的一个,作为未来指令的占位符来布置OP_EVAL
。
出乎一切人的意料(包含Andresen自己),这也将兼容那些没有晋级到承受OP_EVAL
的节点。这些节点将检查哈希是否与新指令匹配,但不会强制履行它们,而是默许承受买卖。
只需大大都矿工履行新规矩,这意味着新区块链将被晋级节点和未晋级节点都视为有用。晋级后的节点将承受区块链,因为它们正在履行新规矩,而没能晋级的节点也将承受新的区块链,因为它们都不关怀新规矩。
中本聪已布置过这种向后兼容的晋级或“软分叉”,可是跟着网络规模的扩展,开发者们开端产生了一些忧虑。
不出所料, Andresen意识到这是能够避免的,这一点受到了其他知名代码奉献者的欢迎,他很快与他们共享了这一音讯。对此,Gregory Maxwell评论道:
“哇,Gavin以为 [
OP_EVAL
] 不需求割裂网络就能够完成的观点,让我大吃一惊,拿出香槟庆祝吧。”
有了它,开发人员便继续规划出一种愈加安全的办法来激活软分叉。他们的理论是,他们能够进行相似民意调查,以确认某个功用何时得到矿工们满足广泛的支撑,然后他们能够利用这些支撑来确保安全晋级。
矿工将被要求在挖掘的区块中参加一点数据,以表明他们将履行新的规矩。当大大都人预备好时,更改就能够激活了[10]。
丧命的缺陷
但一切的这些作业,都被O’Connor的发现所推翻[13]。
成果导致开发者们割裂成了不同的派别,一些人以为OP_EVAL
被不用要地延迟了,另一些人则以为提议的快速修复会危害比特币底子脚本语言的某些所需特点[14]。
包含Luke Dashjr、Pieter Wuille以及Maxwell在内的开发人员提出了代替计划,其与 OP_EVAL相似,采用了将币发送至一个哈希的概念。但应战仍然是如何将这种逻辑(他们开端称之为“Pay to Script Hash”或简称为“P2SH”)转化为比特币软分叉,以避免区块链割裂。
现有的操作码只能走到这一步:未晋级的节点将需求承受从哈希中花费币的买卖,而无需了解新规矩。
是Andresen找到了行进的路途,而他特定的P2SH解决计划底子不需求新的操作码。相反,Andresen的主意是,能够对比特币进行编程以辨认某种买卖格局,然后以一种非常规的办法解说这种格局,以运用新的指令对其进行验证。
任何未晋级的节点都将运用常规逻辑来解说非常规格局。与OP_EVAL
相同,未晋级的节点始终将买卖视为有用。这意味着P2SH能够作为软分叉布置:只需大大都算力强制履行新规矩,新旧节点都将在同一区块链上达成一致。
Andresen的提案对大大都人而言好像令人满意的。O’Connor评论称[15]:
““看起来,这好像是能够承受的。”
Taaki在谈到该代码的非常规办法时表明:
“这个主意是一种黑客行为……但我喜爱它。”
在随后的一次开发者会议上,与会者一致赞同施行Andresen的P2SH提案。而矿工们将在2月1日之前的一周进行民意调查,假如大大都算力(超越55%)表明支撑,那么两周后,就会开释一个客户端来激活软分叉。
但平和只继续了几天时刻。
为什么不用美元?
打破一致的是Dashjr,他因为有事提前离开了会议,后来才得知Andresen的P2SH版别计划被公以为折衷计划。
而Andresen计划的非常规性质,激怒了Dashjr,他以为这会使协议变得复杂,并带来了不确认的后果。Dashjr向Andresen提出了这个问题,但后者以为Dashjr的忧虑不值得改变计划[16]。
在遭到回绝后,Dashjr于一月中旬在揭露的BitcoinTalk论坛上爆发,他斥责P2SH提案并指控Andresen“单独”支撑了这一改变[17]。
Dashjr写道:
“Gavin强迫一切运用最新比特币代码的人投票支撑[P2SH],假如你想敌对这种张狂的协议更改,那么你将需求修改你的BitcoinD源代码,或许在默许状况下投票拥护它。”
因为Dashjr的敌对定见并没有太有说服力,以及他对Andresen的斥责声,人们对这篇帖子的反响并不活跃。一些人以为Dashjr并没有将技能争辩局限于开发人员,而是企图鼓动群众。
Dashjr是比特币项目傍边一位相似唐吉诃德的代码奉献者,一位论坛用户表明,Dashjr的言论让他看起来“精力不安稳”,另一位用户则表明,他底子不想为细节操心,他只是信任Andresen[19]。
作为回应,Dashjr从哲学的视点对P2SH提案提出了继续的敌对定见,他不只对P2SH的技能价值提出了质疑,还对其对管理的影响提出了质疑。
“假如你想要一种君主钱银,为什么不直接运用美联储的美元呢?” Dashjr 用这样的话来回应那些进犯他的人,而成果天然是遭到了别人的围攻,他们以为Dashjr是在争夺权力[20]。
但Dashjr 并没有畏缩,其编写了P2SH的代替版别,称为CheckHashVerify(CHV)
,本质上,CHV是P2SH的另一种完成办法,可是并不需求对买卖输出进行非常规的解说。取而代之的是,,CHV添加了一个新的操作码,就像OP_EVAL相同,可“假装”为占位符操作码。
但对Andresen而言,这现已太晚了[21],他以为不能再进行更多的争辩。而关于大众的愤恨,他以自己的办法回应道:
“Luke,你在应战我的耐心,在我做一些愚蠢的作业之前,我将离开代码几天,以冷静下来。”
争论延伸
因为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]。
而对其别人来说,挖矿中心化是一个不幸的依赖,这使得“软分叉”晋级更易于办理,然后下降危险。(究竟,现在安全推出只需求少量矿池运营商参加)
例如,Maxwell更愿意承受眼前不尽善尽美的实际[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矿池的运营者Tycho开端对自己在评价竞赛代码方面的人物感到不安。
很明显,开发者之间尚未达成一致,他写道:
“我不想成为对此做出决议的单一实体。” [29]
堕入僵局
在提出回绝用矿池来影响晋级决议的主意后,Tycho给其时的争论增加了一个转折点,假如没有他的支撑,P2SH将很难被激活。
到了1月下旬,第一轮P2SH投票行将结束,而支撑P2SH的算力并没有到达激活阈值。晋级明显要被推延了,这一实际不只使Andresen感到懊丧,也使其他开发人员感到懊丧。
在IRC上,Maxwell揭露表明,僵局好像没有结束的迹象,他写道:
“以为这是急着上线的说法是胡言乱语,Gavin在去年10月份就开端了P2SH路线,据我所知,除非有人确认终究期限,否则这就没有成果,因为总会有一些人的好主意会在下一刻蹦出来。”
Andresen并没有将延迟的责任归咎于矿池的出现,而是怪到了DeepBit运营者Tycho的身上,Andresen写道:
“现在来看,好像有人具有满足的算力来否决任何改变。” [31]。
这让Andresen感到不安,他以为Tycho的立场不道德,Andresen写道:
“我以为,利用自己最大矿池运营商的权力违反普遍的一致是不对的。”[32]
事实上,即便Andresen向大众施加压力,迫运用户要求他们的矿池晋级,并提出在P2SH导致任何财务损失的状况下归还DeepBit的一切资金时,Tycho 也不愿意“投票”经过这一提案[33]。
面对延迟,Andresen企图引起大众的重视,并坚持以为P2SH和CHV之间的挑选对用户简直没有影响。
他写道:
“ [P2SH/CHV]这两个提案,相当于工程师们在争论把两块木头拼在一起,是用钉子、螺丝钉仍是胶水。任何解决计划都会奏效,普通用户不会注意到任何差异。”
从回帖的状况来看,比特币用户们承受了Andresen的说法,责备Tycho阻碍了晋级,并向他施压以使其激活提案。
而Tycho则反过来激烈敌对Andresen的的说法。他说,即便自己掌握了30%的算力,其他的矿工也能够否决他,他不想成为决议因素。
第二轮投票
因为P2SH迟迟未能获得满足的算力支撑,Andresen被逼揭露评论其提议的策略,而且他开端承受CHV作为打破僵局的潜在代替计划。
虽然如此,社区成员之间的反响,形成了一道界线。
BitcoinTalk用户dooglus以为:“终究,矿工是唯一对此类问题有发言权的人。他们是唯一决议哪些买卖进入区块的人。”
但BitcoinTalk论坛的办理员Theymos彻底回绝了这个主意,他提出“非矿工也能够回绝区块,假如有满足多的客户端这样做,矿工们挖取的币将一文不值。”
他们提出主张,应在内部进行为期两周的评论,并在终究进行投票[37]。不管是出于主张仍是偶然,Dashjr很快创建了一个Wiki页面,在那里,受人尊敬的开发人员能够表达他们的偏好。
在接下来的几天里,Maxwell、Thomas以及Wuille都表明,他们很愿意承受P2SH或CHV,虽然他们明确表明自己更喜爱P2SH。而O’Connor和Dashjr赞同P2SH是可承受的,但他们更倾向于CHV[38]。
家常便饭的是,Andresen仍旧投票支撑了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的领导能力在危机中受到质疑,那么到终究,他的领导能力又得到了很好的稳固。
之后,Andresen甚至要求Dashjr彻底中止对比特币进行奉献,虽然看起来他要么抛弃了这种威胁,要么Dashjr爽性置之脑后[43]。
与此同时,Maxwell成为了比特币的“中心开发者”之一,他与Andresen、Wladimir van der Laan以及Jeff Garzik共享了比特币项意图commit保护权限。
基调现已定好了:谈到比特币的开发时,务实的情绪会得到回报,而相反的奉献者则会遭到辞退。
跟着越来越多的用户涌向比特币,P2SH很快就得到了采用,虽然它会继续成为开发者之间不合的*****。
回顾一年后在应对另一场危机时产生的工作,Andresen会夸口说,他信任P2SH验证了他对该项意图领导能力以及愿景[44]。
2013年初,开发者Peter Todd制作了一段视频,Andresen在回应这段视频时写道:
“区块巨细将会进步,你的视频只会让很多人对一些没有的作业感到忧虑,就像去年Luke-Jr的 [CHV] 提案相同,只会在茶壶里引起一场风暴。”
如何为第一个去中心化的数字钱银做出决议计划?假如这个问题终究被问到,那将需求一场更广泛的战役,而这需求数年的时刻,才能解决它 …
视野开拓
Much of the moal fevo behid the dive fo equality of outcome comes fom the widespead belief that it is ot fai that some childe should have a geat advatage ove othes simply because they happe to have wealthy paets. Of couse it is ot fai. Howeve, ufaiess ca take may foms. It ca take the fom of the iheitace of popety—bods ad stocks, houses, factoies; it ca also take the fom of the iheitace of talet—musical ability, stegth, mathematical geius. The iheitace of popety ca be itefeed with moe eadily tha the iheitace of talet. But fom a ethical poit of view, is thee ay diffeece betwee the two? Yet may people eset the iheitace of popety but ot the iheitace of talet.-《自由选择》