我们的两难困境,以及一个软件工程师的观点

jan   |     |   1969 次阅读

演化

一个复杂的,有弹性和适应能力的,“活的”系统,必然是进化的杰作。这不仅是<失控>带给我的读后感,也是我自己十余年来项目经验的总结。我们理想中的区块链系统,也需要能够适应各种情况,包括现在遇到的和未来将要遇到的数不清的困境,以维持自己的运行。它只能是一个复杂的,有弹性和适应能力的,“活的”系统。这是一个非常高的目标。

一个理想中的区块链系统,也许会像许多人说的,依然是人的共识高于代码,最终还是应该由人来决定一切;也许会像另外许多人所说的,我们应该依赖机器,否则就又回到了我们想要逃脱的过去,机器并不等价于机械,区块链系统可以演化出自己的智能。

很难说那种观点要更加正确,设计未来总是件难事。但必须要清楚的是,那是未来。未来的那个系统,不是现在的这个系统,而是现有系统进化的结果。现在我们在谈论的系统,还远远没有到达我们希望的那个地步,还只是一颗刚刚破土而出的幼苗。

现实中的生态系统,例如北美的杉树林(或是大草原,不确定),在演化过程中曾出现由中间物种构成的形态,现在这些中间物种都消失了。如果没有这些中间物种,杉树林无法进化到现在的形态。工程项目中,我们也常常需要搭建脚手架,在最终交付的产品里面你找不到脚手架的影子。中间状态和后面的中间状态和最终状态(对于一个“活”系统,也许永远只有“中间”状态)并不是一样的。

我们需要弄清楚的不是这颗幼苗是否需要帮助 - 它需要,它很脆弱,我们需要弄清楚的是到底应该提供什么程度的帮助。缺少这些帮助,不仅仅是以太坊,很难会有任何一个系统能长成你期望的那样,何彼浓矣,华若桃李。我们需要小心的提供帮助,以避免揠苗助长。我们需要保持方向和平衡,在钢索上不断前行,直到抵达目的地。

选择

无论是软分叉还是硬分叉,都需要达成共识,一种会改进/修复/破坏先前的共识的共识。软分叉要求矿工/验证人升级客户端,目的是在升级后不再接受某些升级之前允许接受的交易,原有的客户端依然能够在软分叉后正常工作。硬分叉要求所有人都升级客户端,目的是突破和改进原有的(技术层面的)协议,实现软分叉不能完成之事。

软分叉和硬分叉本身没有对错,都是软件升级,网络更新自身的手段,都需要参与者的共识。软分叉可以用于过滤掉一些以前没考虑到的不合理的交易,而以太坊未来的很多改动,都需要硬分叉才能实现。

更重要的是分叉的意图。TheDAO的软分叉方案让网络可以阻止攻击者对TheDAO进行任何操作,实际上是一种多数人对少数人的针对。现有的硬分叉方案则是强行把攻击者托管在智能合约里资产转移,是一种突破底层协议的行为。

两种做法都有自己的代价。反针对可说是公有链的目的之一。而硬分叉的代价有两个,一是为了上层应用而修改底层协议难免大而不倒之嫌,而强行转移资产更是破坏了人们对于智能合约的信任。在比特币的历史上,只发生过近似于第二种目的的软分叉,因为回滚交易等价于强行转移资产。第一种是整个区块链世界遇到的新问题。我们陷入了两难境地。

两害相权取其轻。不作为看似坚持了理想,实则是把理想丢在了荒野之中。软分叉牺牲了一定程度的反针对性,先将被盗资金永久冻结在合约之中,很好的阻止了损害扩大,威慑了攻击者,保护了以太坊和TheDAO的投资者也是支持者的信心。现有的硬分叉方案可以减少投资损失,但是由此付出的信任代价对于整个以太坊和社区来说可能得不偿失。

因此我个人对软分叉表示支持。在软分叉的基础上支持社区保留硬分叉的可能性,同时积极寻找更好的应对方案。我们应该尽最大努力减小硬分叉的影响(如果需要),尽量避免削弱智能合约的信任基础。硬分叉的方式可以有多种,ethcore提出的强行转移走资产的提议在我看来不是最佳的,智能合约的信任基础的价值远高于6000万美元。360万以太被永远冻结我认为是为了保持智能合约信任基础可以接受的代价。

其他

若要数数这个世界上现存的DAO,我想只有运行中的公有链系统可以勉强计入。无论是比特币还是以太坊,都是以经济利益驱使人类提供服务以维持自身运作的自治组织。The DAO, 这个历史上最大的众筹项目,在我看来,仅仅是一个DO, 缺少中间的A。我会在周四的北京区块链大会上做一个关于智能合约和DAO的分享。

祝天下的父亲,节日快乐。

更新

  • 2016/06/21: 经巴比特网友jl2012指正,我在文中描述的比特币回滚事件确实为一次软分叉,而不是硬分叉,原文已更正。
 
8 人喜欢