V神:捍卫区块链安全不需要算力

最近,比特币社群圈子又不太平了,所谓的「Core派」和「Unlimited派」之间起了一次小小的争吵。而如果比特币圈子的粉丝记忆力还行的话,这样的争吵,只是第五次将一个老生常谈的话题再次重演。或者说,之所以说它非常有趣,是因为它再一次地揭示了人们在对「区块链如何工作」上面,持有的微妙的不同看法。

V神:捍卫区块链安全不需要算力

挖矿团体 ViaBTC 就是「Unlimited派」的代表,它近日发推称:「算力(hashpower)即一切」。这是「Unlimited派」最容易拿出来说的一个论据。持有这种观点的人相信:在比特币的管理范畴中,矿工拥有,且应该拥有,一个更加高的权力。毕竟,矿工作为比特币用户中的一个相当重要的群体,他们会伴随着比特币的成功而获得自身经济上的飞跃,而这种飞跃不是那种投机性,中途择机跳车的。

而在另一边,「Core派」中的成员 Greg Maxwell 对此回复道:「比特币的安全机制之所以发挥作用,恰恰就是因为算力并不代表一切」

Core派认为:矿工在比特币系统中所拥有的权力是应当受到一定限制的,这样才能保障交易的安全性。他们在很多方面都不应该拥有话语权,比如「区块链的规模上限」以及其他定义区块基本属性方面。

由用户运行的完整节点使得这种限制成为可能。如果一些矿工现在开始生成了一些区块,这些区块所遵循的规则跟用户节点上所执行的规则不一致,那么,用户运行的这些计算节点就会拒绝这些区块,不管你这些区块背后占据了 10%,60%,抑或是 99% 的算力。统统不好使。

针对这样的限制,「Unlimited派」总是会这么说道:「如果现在出现了一个全新的区块链,背后的算力占据了整个区块链上的 90%,可以提升区块链的容量上限,10% 的算力有可能会在接下来的 5 个月时间都比 90% 的算力慢 10 倍,那么,你真的不愿意让你的客户去接受新的区块链吗?」

V神:捍卫区块链安全不需要算力

区块链向线下的过渡,举步维艰

其实,很多人是反对将公有链用来运行那些涉及现实世界资产,或者存在任何「交易对手风险」的应用上的。(译注:所谓「交易对手风险」,又称信用风险或违约风险,是指借款人、证券发行人或交易对方因种种原因,不愿或无力履行合同条件而构成违约,致使银行、投资者或交易对方遭受损失的可能性。)

反对群体中,要么是全体成员都认为压根没有任何理由用公有链来运行上述范畴里的应用;要么是有部分人认为:尽管在公有链上存储数据是有各种优势的,但是有关商业逻辑的执行必须是在线下的。

之所以人们持有反对的意见,最后的原因都落在:在线上和线下的融合上,存在着严重的信任问题。如果现在有个人,他在现实世界中有着实体资产,而这种实体资产跟链上的被大家所认可的数字资产相挂钩。那么,这个人总是有机会在线下把实体资产给卷跑,或者,哪怕不是出于自身主观意愿,政府或者银行也会采取各种措施,施加的外力也会通过此人将资产冻结。

在区块链上运行现实资产在数字世界中的「等价物」,就好像你付费安装了一个特别安全、特别牢固的防盗门,但是你家的窗户是大开的。相比于用公有链去运行,人们更倾向于采用私有链,或者哪怕是基于服务器的传统解决方案,在传统方案的基础上,加上那么一点点的数字加密技术,提升一下交易过程的可核查性,借此提升效率,以及规避将一切都放在区块链上运行的风险。

V神:捍卫区块链安全不需要算力

从两种极端风险来谈区块链的防护机制

无论是想凭借算力催生「新区块链」的「Unlimited派」,抑或是限制矿工权力,保留既有生态格局的「Core派」,其实他们以上的种种说法都存在着缺陷。确切的一点是,虽然从理论上来说,他们的说法是成立的,但从现实操作角度上来说,都几乎是难如登天的事。这里存在两种极端的风险情况:

第一种情况:矿工是可以合起伙来,将 99% 的算力转移到拥有新规则的区块链上,甚至还可以 spawn-camp(译注:V 神发明的新词,指的是矿工联手形成垄断组织,集体攻击某个区块链使之变得无价值的行为)某个老的区块链,使它永久性的失效。

第二种情况:某个跟现实资产挂钩的虚拟资产中心化的管理者,突然某一天不再认可某一种数字加密货币,将此加密货币的价值完全代换到另外一种全新的加密货币上。除了某个倒霉蛋持有原有加密货币的账户账面价值归零之外,似乎一切都转到了新的轨道上。

再重复一下,这两种情况只是在理论层面成立,放到现实层面来看,难如登天。

在第一种情况中,用户将必须意识到过去的区块链上出现了某些问题,大家都达成共识,集体迁移到矿工目前正在挖矿的新区块链上,同时还要下接受新规则的软件。

而在第二种情况中,所有依赖于原有代币的客户端以及应用将全面崩溃,用户必须更新自己的客户端来全面迎合新的数字代币,当然还有彻底的更新智能协议。任何没有更新的东西都将全面作废。在这个过程中,对这种改变持否定态度的反对者们还会发起声势浩大的宣传攻势,往往以人们对不确定性的恐惧作为切入点,说服人们不应该去做更新,又或者是说服人们更新客户端来适应第三种规则。这一系列的变数就让改变变得更加困难了。

为区块链竖起高高的防护屏障的双刃剑:「协调性问题」

于是谈到此处,我们完全可以得出这样的结论:尽管从理论上我们可以看到一个中心化的,或者半中心化的团体,可以出于自利的目的,强迫从 A 到 B 的过渡转变,但是在这个过程当中,存在着大量棘手的「协调性问题」。

这种协调性的问题在我们的社会自古就有之。你可以将它想象成为:美国的语言彻底地将高度个性化,不规则的拼音系统进行了重整统一;或者美国完全达成共识全面拥抱公吨制,又或者我们在面对经济衰退的时候,都能够同意将自己的工资,以及各种商品价格下降 10%。这些转变发生的难度,跟区块链上之前所预计的那种变革难度,完全相当。

不过,虽说「协调性问题」在人类社会上来说一直是棘手的,令人苦恼的,但是在区块链上,它却成为了双刃剑。我们可以利用「协调性问题」,将其为我们所用,从而将问题化作优势。正因为协调性中所存在着的种种摩擦、冲突,我们利用这一切,使之成为阻止中心化巨头操纵局势的障碍。

从这个思路出发,我们可以开发出一个系统,它拥有的是 X 特性,我们可以确保这个 X 特性拥有很高的价值,因为要将 X 特性改变成为非 X 特性,需要海量的人力来同意,在同一时间对他们的软件进行更新。即使现在存在一个幕后推手,一个只手遮天的「导演」来推动这样的改变,其过程都会是漫长艰辛的。这就是你能从区块链上所能获得的安全性保障。

请注意,这样的安全性完全是建立在个体用户的去中心化特点之上。哪怕现在这个世界上只有一个矿工,那么这个矿工所挖出来的一个加密货币都能跟以 Paypal 为代表的中心化金融系统能够分庭抗礼。

Paypal 的这种中心化的金融系统,也许会肆意地改变规则,冻结人们的钱财,提供糟糕的服务,提供各种杂七杂八的服务然后提升费率。在这个时候,「协调性问题」就是有利于 Paypal 系统背后的运营者的,因为一团散沙的用户,无法达成共识,无法统一地去切换到更好的服务上面。而在加密货币的系统上,以从客户端出发的验证机制保证了任何出于恶意的尝试(有可能是矿工自己搞出来的)都是天然地被拒绝掉了。所以这一次,「协调性问题」是站在用户这一边的。

V神:捍卫区块链安全不需要算力

请注意:上面的一番论断,并不是在说不应该让矿工成为决定区块规模以及协调机制的主要影响者。就拿区块规模这个具体例子来说好了,更有可能出现的情况是:「由一些可以相互协调,步调一致,有着相同动机的矿工来进行管理。」这有可能成为在区块链政策制定及管理上最优的解决方案。也许是因为在一定前提存在的条件下,这样挑选出来的矿工滥用权力的风险确实就低了很多,总好过你精心考虑后的上限,在十年后,完全不满足市场需求所出现的风险。

其实,多维度的去考虑管理区块链,这样的思路不无不妥。就比如一方面让矿工介入到管理,成为政策管理上的一条线;而在另外一方面,政策管理上的其他条线,比如区块链的回报奖励,我们有可能就需要尽可能发挥「客户端的验证机制」,以确保矿工的权限也是被制约的。这就是去中心化工程机制的核心要义:相机选择,适时地利用「协调性问题」,以确保系统能持续性的满足特定标的的特定需求。

上面的论断同样也没有暗示说:我们就应该把所有的东西都放到区块链上,这永远是最好的方案,哪怕所支持的服务是需要信任背书的。确实,将更多的商业逻辑放到区块链上去运行,是会有很多好处的,但是总体来说是利小于弊。所谓的「弊」,就是在效率以及隐私等方面所做出的让步与牺牲。

这其实没什么。区块链并不是说对任何任务都是最优秀的工具。

上面澄清了本文容易产生的种种误会,现在更要强调一些本文真正想要让人们意识到什么:如果你现在正在开发一款基于区块链的应用,这个应用本身还包含着若干必要的中心化的内容,这个时候你可以试着考虑通过一个日常使用的区块链客户端(在以太坊的例子中,这个客户端有可能是 Mist、Parity、Metamask 或者 Status),使得用户获得直接进入应用的路径,而最终实现对信任需求最低化的目的,从而获得更多的好处,而不是让他们进入到一款 Web 交互页面,而这个交互页面完全是由你一个人把控。

理论上来说,如果每一个用户都运行着一个独立的、理想意义的「全节点」,那么用户端的验证所带来的好处就能达到最大化。在这里所指的「全节点」就是:对于所有人都同意的协议规则,遵循这种规则的所有区块链,这个节点全都接受。不遵循这种规则的区块链,这个节点全盘拒绝。

这如果是要落到实际操作层面,就意味着每一笔交易,都需要询问网路上的每一位用户,让他们所提供的节点进行计算处理。这当然是不现实的,尤其是现在发展中国家,智能手机这个硬件端口的数量正在爆发式的增长。

虽说理论和实际存在着一定的差距,但是这并不是不能解决的。首先,虽说从上面的理论出发,每一位运行全节点的用户都要对交易进行验证,但其实完全没有必要。因为如今任何一个具备完整功能的大型区块链网络,它们如今发展出来的规模,已经不需要让普通人将自己硬盘上五分之一的空间来运行全节点,剩下的发烧友以及企业级用户也不需要。只要用户的数量够大,并且具有足够的差异化背景,那么他们之间「合谋」的机率就会大大降低,你只需要经过一部分用户运行节点,同样能够确保整个网络的安全性。

除此之外,我们还有第二个办法:依赖强大的「轻客户端技术」。

「轻客户端技术」还能分成两个级别的技术。第一个级别较为简单一些,通过某种程度上提供保证金的方式,来让用户相信,现在你们所在的这个区块链,是被整个网路上绝大多数的用户所认可的。这比验证整个链条的成本要低多了。其方式要么是通过「工作量证明」(POW)来验证 nonces,要么是通过「权益证明」(POS)来验证已签的证书。验证到最后的结果无非是:「要么,这个 State 上的根哈希值确实跟我所说的一致;要么,你可以把这个不一致的结果发布到主链上,然后把我的一大部分钱给删除干净。」

一旦轻客户端认证了一个根哈希值,那么它们就能利用 Merkle 树来验证他们想要验证的任何一段特定的数据。

V神:捍卫区块链安全不需要算力

第二个级别的「轻客户端技术」近乎于全面验证。这种类型的客户端并不仅仅试着去跟随绝大多数人所遵循的链,而且它还试着去找出哪些链,是遵循着所有规则的,然后跟随这些链。这么做的方式就比较复杂了,简单点说就是:一个轻客户端可以跟某些特殊的节点进行协作,然后寻找出那些不合规的区块,或者产生「错误证明」的区块,它们协作后发出的信息翻译过来就是这个意思:「看!这个区块有瑕疵!」

如果发现了某个区块是不合规的,那么它就会被弃用;如果一个轻客户端在几分钟内没有发现任何的「错误证明」,那么它就会认定这段区块很可能是合规的。这虽然并不能覆盖数据虽然不是坏的,但是是缺失的案例,但通常来说,它能将所有违反协议规则的可能性(无论是矿工还是验证者所做出的)几乎全部捕捉到。

请注意:为了能让这个轻客户端非常高效地去验证一系列的应用规则,这些规则必须在某些共识中进行执行,也就是说,要么它们是协议中的一部分;要么它们是在协议中某种执行机制的一部分(最典型的例子比如智能协议)。在支持用区块链进行数据存储和商业逻辑执行上(而不仅仅是数据存储),这个说法占据了非常重要的地位。

当然,轻客户端技术也不是十全十美的。原因是它们成立的前提是:你必须保证整个网络的连接性要非常好,并且在这个网路中同样还有一定数量的其他轻客户端以及「渔民」(Fishermen)。但这其实不重要,毕竟它们不需要全天 24 小时不间断工作,对每一个交易进行全面的验证。我们只需要构建出一个环境出来,任何矿工(验证者)所合谋形成的团体,如果在未经过用户同意的前提下,无法轻而易举地将不合规的区块链推送出来,就算推送出来了,也因为「协作性难题」而无法轻易获得大家的共识。只要达到这一点,区块链上的安全性也就得到保证。

区块律动BlockBeats答应大家的翻译如期到来,这是V神2017年的一篇文章,部分技术内容可能已经过时。

|原文作者:Vitalik Buterin

|原文标题:Engineering Security Through Coordination Problems

|发布时间:2017年5月8日

|翻译:区块律动 BlockBeats 0x5 (作者微信 blockbeats_cathy)

|原文巨长无比而且充满术语,为了更好的阅读体验,译者将全文在不影响原意的情况下分节。

本文来源: 要发车 文章作者: 佚名
    下一篇

如果把EOS比作一个产品,技术只是EOS获得短期价值,或者说吸引大众眼球的一部分,真正能让EOS走向巅峰的一定是EOS的长期价值部分—生态。