文章探讨了比特币社区中Core和Unlimited派系之间的争议,讨论了挖矿算力在区块链治理中的作用,以及通过协调问题实现安全性的概念。文章还讨论了公链在处理现实世界资产中的应用,以及轻客户端技术在验证区块链数据中的重要性。
最近,比特币社区的Core和Unlimited派系之间发生了一小段争执,这场争执可能是同一主题被讨论的第五十次,但它的确有趣,因为它突显了关于区块链如何工作的一个非常微妙的哲学观点。
ViaBTC,一个支持Unlimited的矿池,在推特上发文称“算力就是法律”,这是Unlimited方的一个常见论点,他们认为矿工在比特币的治理中扮演着,且应该扮演着很大的角色,通常的论点是矿工是唯一在比特币成功中有很大且流动性不足的财务激励的用户类别。Greg Maxwell(来自Core方)回应道:“比特币的安全性正是因为算力不是法律而有效”。
Core的论点是,矿工在比特币系统中仅有有限的角色,是为了确保交易的顺序,他们不应该有权决定其他任何事情,包括区块大小限制和其他块有效性规则。这些约束是由用户运行的完整节点来执行的——如果矿工开始根据其他规则生成块,而这些规则与用户节点执行的规则不同,那么用户的节点将简单地拒绝这些块,无论有10%还是60%甚至99%的算力支持它们。对此,Unlimited通常会回应:“如果90%的算力支持一个提升了区块限制的新链,而旧链由于只有10%算力在五个月内变得慢十倍直到难度重新调整,你真的不更新你的客户端以接受新的链吗?”
许多人经常反对使用公共区块链来处理涉及真实资产或有对手方风险的应用。批评或者是完全的,称在公共区块链上实现这样的用例毫无意义,或者是部分的,称虽然将数据存储在公共链上可能有优点,但业务逻辑应该在链下执行。
通常使用的论点是在这些应用中,信任点已然存在——有一个人拥有支撑链上许可资产的实体资产,而那个人始终可能选择带着资产逃走,或被政府或银行强制冻结资产,因此在区块链上管理这些资产的数字表示,就像在窗口打开时为房子付钱安装一个加固钢门。相反,这样的系统应该使用私有链,甚至是传统的基于服务器的解决方案,可能添加一些密码学的部分以提高可审计性,从而节省在区块链上放置一切的效率和成本。
上述论点在其纯粹形式中都是有缺陷的,并且它们在相似方面都存在缺陷。虽然从理论上讲,矿工有可能将99%的算力转换到一条具有新规则的链上(为例假设他们提升了区块奖励),甚至可以产出营 旧链使其永久无用,但在实际操作中,这两者都是相当困难的。
在第一种情况下,用户必须意识到现有链出现了问题,达成共识他们应该去新链,矿工现在在上面打矿,同时下载接受新规则的软件。在第二种情况下,所有依赖原始数字代币的客户端和应用将会崩溃,用户需要更新他们的客户端以切换到新的数字代币,而没有能力查看外部世界需要更新的智能合约将完全崩溃。在这一切中,反对者可以发起恐惧不确定和怀疑的运动,试图说服人们可能不应该更新他们的客户端,或者更新他们的客户端到某一第三套规则(例如,更改工作量证明),这使得实施切换更加困难。
因此,我们可以说,在这两种情况下,即使在理论上存在中心化或准中心化的各方可以强制从状态A转换到状态B,其中状态B对用户并不令人满意,但对中心化各方而言是更可取的,这样做也需要突破一个困难的协调问题。协调问题在社会各处都存在,并且通常是坏事——尽管如果英语改掉其高度复杂和不规则的拼写系统,使其变成一种音标系统,或如果美国转向公制,或者如果在衰退发生时我们可以立即将所有价格和工资降低10%,实际上,这需要每个人同时达成一致,而这通常是非常困难的。
然而在区块链应用中,我们做的事情是不同的:我们正在利用协调问题为我们服务,利用协调问题所产生的摩擦作为反对中心化行为者的屏障。我们可以构建具备属性X的系统,并且我们可以保证他们将高度保留属性X,因为将规则从X更改为非X将要求一群人同意同时更新他们的软件。即使存在能够强制变更的行为者,做到这一点也是困难的。这是通过客户端验证区块链共识规则所获得的安全性。
需要注意的是,这种安全性特别依赖于用户的去中心化。即使在世界上只有一个矿工,基于该矿工挖矿的加密货币与类似PayPal的中心化系统仍然存在差别。在后者中,操作者可以选择任意更改规则、冻结人们的钱、提供糟糕的服务、抬高费用或进行其他许多事情,而协调问题则偏向于操作者,因为这样的系统具有实质性的网络效应,因此非常多的用户必须同时达成一致以切换到一个更好的系统。在前者中,客户端验证意味着矿工可能想要从事的许多恶作剧尝试默认被拒绝,而协调问题现在对用户有利。
请注意,上述论点并不,就其自身而言,意味着矿工作为主要行为者协调并决定区块大小(或在以太坊的情况下,煤气限制)是个坏主意。在区块大小/煤气限制的特定案例中,"由具有一致激励的矿工协调治理" 可能是决定这一特定政策参数的最佳方式,这也许是因为矿工滥用权力的风险低于某个具体选择的硬限制在十年后证明完全不适合市场状况的风险。然而,声称矿工治理是决定某一政策参数的最佳方式,同时又表明对于其他参数(例如区块奖励)我们希望依赖客户端验证来确保矿工受到约束,这并没有什么不合理。这正是工程去中心化制度的精髓:战略性地利用协调问题,确保系统继续满足某些期望的属性。
上述论点也并不意味着,即使对于需要信任的服务,将所有内容都放在区块链上也是最佳选择。通过在区块链上运行更多业务逻辑,通常仍然可以获得一定的收益,但这些收益通常远小于效率或隐私的损失。这是可以的;区块链并不是完成每项任务的最佳工具。然而,上述论点确实隐含着,如果你正在构建一个因必要性而包含许多中心化组件的区块链应用,那么通过让用户通过普通区块链客户端访问你的应用(例如,在以太坊的情况下,可能是Mist、Parity、Metamask或Status)来进行信任最小化,就可以获得实质性的进一步收益,而不是让他们使用你个人控制的Web界面。
从理论上讲,如果每个用户都运行一个独立的“理想完整节点”——一个接受所有符合创建系统时每个人同意的协议规则的块,并拒绝所有不符合的块——用户侧验证的好处是最优的。然而,实际上,这需要要求每个用户处理在网络中由每个人运行的每个交易,这显然是不可行的,更别提在发展中国家快速增长的智能手机用户数量。
这里有两个解决方案。第一个是我们可以意识到,虽然从上述论点的角度看,要求每个人运行完整节点是最佳的,但这绝对不是必要的。可以说,任何以全部能力运行的主要区块链将已经达到“普通人”花费五分之一的硬盘空间来运行完整节点并不具有意义的程度,因此剩下的用户成为业余爱好者和企业。只要他们的数量相对较多,并且来源于不同背景,促使这些用户共谋的协调问题仍然会很困难。
其次,我们可以依赖强大的轻客户端技术。
在区块链系统中,通常存在两种级别的“轻客户端”。第一种较弱的轻客户端只是用某种程度的经济保障来说服用户,他们在网络大多数支持的链上。这样做比验证整个链要便宜得多,因为所有客户端只需要在工作量证明方案中验证随机数,或在权益证明方案中验证声明“要么状态的根哈希是我所说的那样,否则你可以将这个证书发布到主链上以删除我大量的资金”的签名证书。一旦轻客户端验证了根哈希,他们可以使用默克尔树验证他们可能想要验证的任何特定数据。
第二个级别是“几乎完全验证”的轻客户端。这种类型的客户端不仅试图跟随大多数所支持的链;而且还试图仅跟随遵循所有规则的链。这是通过一系列策略来完成的;最简单易懂的是轻客户端可以与专门的节点(感谢Gavin Wood为“渔民”这个称谓)合作,这些节点的目的是寻找无效区块并生成“欺诈证明”,简短的信息,基本上说“看看!这个块在这里有个缺陷!”轻客户端然后可以验证块的特定部分并检查其是否确实无效。
如果发现块无效,则将其丢弃;如果轻客户端在几分钟内没有听到特定块的任何欺诈证明,则假设该块可能是合法的。处理问题不在于数据是_坏的_而是缺失的数据还有一些更多的复杂性,但一般来说可以非常接近捕捉到所有矿工或验证者可能违反协议规则的方式。
请注意,在轻客户端能够有效地验证一套应用规则时,这些规则必须在共识中执行——也就是说,它们必须是协议的一部分或执行机制的一部分(如智能合约)。这是支持使用区块链进行数据存储和业务逻辑执行,而不仅仅是数据存储的一个关键论点。
这些轻客户端技术并不完美,因为它们依赖于对网络连接性和网络中其他轻客户端与渔民数量的假设。但实际上,它们并不需要100%地在100%的验证者之间工作。我们所希望的是创造一种情况,任何敌对的矿工/验证者卡特尔试图在没有用户同意的情况下推动无效块的尝试都会给很多人带来很大的麻烦,最终需要每个人更新他们的软件,如果他们希望继续与无效链同步。只要满足这一条件,我们就达到了通过协调摩擦获得安全性的目标。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!