美文网首页
我们的两难困境,以及一个软件工程师的观点

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

作者: cryptojan | 来源:发表于2018-06-25 10:30 被阅读64次

按:原文发表于2016年6月20日。

演化

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

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

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

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

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

选择

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

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

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

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

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

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

其他

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

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

更新

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

相关文章

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

    按:原文发表于2016年6月20日。 演化 一个复杂的,有弹性和适应能力的,“活的”系统,必然是进化的杰作。这不仅...

  • Google软件测试之道

    google测试相关的职位有三类:软件测试开发工程师、测试工程师以及测试工程经理。 软件测试开发工程师也是一个开发...

  • 构建之法-3-软件工程师的成长

    本章主要是关于个人成长。如何衡量软件工程师的能力?软件工程师常见的思维误区。职业发展以及技能的反面。 3.1 个人...

  • Economics|我读斯密01

    两难困境与国富论 18世纪,西方资本主义世界面临着前所未有的技术飞跃,以及随之而来的人性困境。作为一位勤勉治学的学...

  • 我们是如何走入两难困境的?

    首先声明一下,文章并非本人原创。是阅读采铜《精进:如何成为一个很厉害的人》里的观点。个人觉得很好,整理出来分享。 ...

  • 零基础转行做软件测试领域,该如何入门?

    我们先理一下测试工程师是什么。 度娘说: 测试工程师,软件质量的把关者,目前传统的软件行业还是以软件测试工程师为主...

  • 代码整洁之道读后感

    作为一个软件工程师,我写过很多项目,也学习过很多语言和框架。对于代码清理每个人都有自己不同的观点。我们都能找到不一...

  • 两难困境

    我觉得自己现在就是处于两难境地,一方面希望成单,但是又想到实施过程中的各种繁琐事情,简直心烦意乱,又想开始投简历了...

  • 框架效应:最严重的认知偏差之一

    减弱我们正确决策能力的最强大持久的认知偏见之一是框架效应。你可以思考下面的两难困境来直接体验这个认知偏见。 困境1...

  • 数据库

    数据库 一、数据库概述 1.为什么软件测试工程师还需要学习数据库以及开发方面的知识? 测试工程师的目的是找出软件的...

网友评论

      本文标题:我们的两难困境,以及一个软件工程师的观点

      本文链接:https://www.haomeiwen.com/subject/ijweyftx.html