皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

专访美图林添毅:用 DPos 共识改造以太坊,工程型人才转型区块链开发中的探索

作者 林添毅

美图公司成立于2008年,公司开发的影像类产品如美图秀秀、美颜相机等覆盖了全球十亿多的独立移动终端,在海内外的总用户过亿。

在拥有海量用户海量数据的情况下,美图希望连接数字世界和真实世界。如何在保护好用户隐私的条件下,能更好的利用这些大数据信息?他们借助了当下大热的区块链技术。并于今年初发布了区块链白皮书,阐述了美图的区块链应用方案:基于沉淀多年的人脸影像技术和AI算法,在区块链平台上为用户创建一个专属的美图智能通行证(MIP),使得用户能够在区块链上用人脸特征作为通证密钥,进行去中心化用户身份验证(KYC)。

美图结合自身的业务,更多的是面向C端用户,考虑兼顾安全又能融入各DApp的应用场景,更需要底层基础平台的基石力量支持。

对于区块链,作为一位技术人,美图技术经理林添毅,有一些深刻的思考值得和大家分享。

区块链前哨:请问您的个人职业背景是怎么样的?如何转到区块链行业?转向区块链的开发中,您有什么样的体会,区块链研发最大的壁垒您觉得是什么?

林添毅:我之前在新浪微博主要是参与 NoSQL 相关服务的研发,后面到美图也主要是负责基础相关,包括消息队列,NoSQL, 美图 DNS 等基础服务的研发。今年公司把区块链等前沿技术的研究作为基础服务之一,所以就很自然的转到区块链的相关研发。

在转向区块链开发的过程中,主要的体会是区块链技术上涉及技术面会比较广,深入学习的曲线比之前特定领域的技术学习会更加陡峭一些。最大壁垒还是作为工程出身的我在对于一些偏学术领域的知识点快速吸收上会有些吃力。同时区块链当前应用很多跟金融领域知识有很大的关系,这个也是对于我们作为计算机出身的研发人员也是有一些挑战的。

区块链前哨:这几年的区块链的发展,您主要关注的是什么?

林添毅:我自己本身一方面技术上比较关注当前公链的性能和演进方向,另一方面比较关注的是区块链本身以及 DApp 的落地情况。性能方面,像 off chain 的代表 lightning,主要通过减少主链上的交易来缓解主链性能瓶颈问题。也有一些链很早之前也在通过分片的方式来解决性能,包括以太坊本身也在做分片相关的探索(预计是 2020 年左右会落地)。另外一个解决性能问题的方式是优化共识算法本身,比如一些免 CPU 计算的算法 PoS, DPoS 等等。

DApp 方面,目前大多数区块链公司都在寻找一款杀手级的 DApp ,以及很多公链也在各个方向上寻找突破点。如果有一款杀手级的应用出来那么可能就是公链或者区块链技术大规模普及的时候。当然也有可能公链技术性能不高,限制了 DApp 只能做一些低频的应用,所以在公链的性能得到比较大的突破之前杀手级的 DApp 出现的概率比较小。

区块链前哨:美图区块链基础平台为什么选择以太坊来实现?除以太坊外,还平行对比过哪些平台?

林添毅:之前对比过 Bitcoin, Fabric 以及一些分叉链的实现。后面选择以太坊主要是美图想在 DApp 方向上有些探索。

Bitcoin 本身定位是数字货币链不是 DApp 链,在支持的脚本是非图灵完备的,同时从账号模型上用来做 DApp 也相对麻烦一些。而以太坊自己本身的定位就是下一代的智能合约和 DApp 平台,账号模型相比于 Bitcoin 的 UTXOs 会在实现智能合约的时候会简单不少,同时支持的脚本语言也是图灵完备的。

而另一个 Fabric 定位是联盟链,联盟链在当时不是我们想深入探索的方向,也就比较自然的不会选择它。整体来看太坊本身的定位上更加贴近美图想要探索的方向,最终也就选择以太坊作为我们探索的基础平台。

区块链前哨:用以太坊之后共识为什么选DPoS,开发过程中经历了哪些坑?

林添毅:选择 DPoS 主要是因为以太坊本身已经是 PoW 共识算法, 而 PoW 性能低问题也是共识,尤其是对DApp 链来说是一个较大的问题。 同时也在往 PoS(Casper) 方向上演进,而 DPoS 被 BM 提出,之后应用到 BitShares 以及 Steemit 里面,性能上有比较大的提升。所以我们就考虑基于以太坊来实现 DPoS 的基本功能,主要是想在探索同时也希望能够给社区提供另一种思路。我个人还是认为共识算法跟开发语言有一样,在没有特定场景的情况下并没有哪个共识算法更好,我们更多从中立的角度去看待这些技术的场景和发展。DPoS 算法本身并不难,大部分踩的坑主要还是团队本身之前对于以太坊的一些细节了解不是特别深入,所以在以太坊的一些特性上踩了坑,比如 fast sync。

区块链前哨:您觉得区块链到底给IT互联网带来了什么样的改变?您觉得区块链最有价值的地方在哪里?

林添毅:IT互联网最大的贡献是通过信息把全世界online化了,人、商业、媒体都已经online化了,减少了巨大的信息鸿沟。一个在上海生活的青年所能获取到的信息与一个有网络的小镇青年所能获得到的信息,已经差别较少了。信息可以随意拷贝,可以随意投递。但在信息这么发达的时代,一个人想把一笔钱从一个国家转移到另一个国家,则困难重重,这个是因为什么?因为在价值转移的链路上,存在较多的第三方,从而存在很大的摩擦力,这些第三方从各自风险和利益角度出发,即使无意,也会设置一些审核的障碍等。

区块链最有价值的地方就是能够在信息可以随意拷贝的时代,能够通过网络存储价值,而且这些价值的存在和转移不依赖于第三方中介。从互联网发展来看,我们已经在慢慢构建一些虚拟世界,比如微信,微博以及各种游戏,在这些虚拟世界中,有一些人已经慢慢积累了一些价值,如微信大的公众号,微博大号,这些价值的沉淀和变现,存在两个问题:

  1. 在当前可更改的虚拟世界中,价值的沉淀是建立在沙地上的,基础不稳固。
  2. 价值的变现,还是需要虚拟世界与现实世界的价值交换来完成。

也许,在可以想象的未来,可能会存在与实现世界平行的一个或多个虚拟世界,就像《头号玩家》中的绿洲一样,人们可以在虚拟世界中能够去冒险,能够去交友,感受到喜怒哀乐,这样的体验会比现实世界的体验会差一些,但已经很大程度上能够满足人们的心理需求,那时人类沉浸在虚拟世界中,而不愿意回到现实世界是有可能的。区块链则为虚拟世界所需要的价值沉淀和积累带来了坚实的基础,我们在虚拟世界中也期望有规则,期望公平,也需要在虚拟世界中进行消费,购买服务(比如去坐过山车,看戏剧),这些需求通过区块链可以很好的满足。

区块链前哨:一个标准的区块链团队组成中,需要哪几类人才?与传统软件团队不同之处在哪里?程序员转行区块链应该如何准备?现在招聘平台上都在说区块链人才荒,您觉得传统程序员值得转向区块链开发吗?

林添毅:区块链团队,会根据目标不同而有不同的人才配置,但一般来说需要如下几类人才:

  1. 系统工程师 能从底层掌握公链的原理,机制,从而进行相应的改造并部署。
  2. 应用开发工程师 能进行应用的开发,智能合约的编写。
  3. 安全工程师 能从整体上把控安全风险,进行智能合约的安全审计。
  4. 运维工程师 能很好地理解区块链原理,对各种公链熟悉,能进行相应的部署和运维。
  5. 数据工程师 区块链数据一般都公开,如果数据工程师能够较好地理解区块链的相关点,进行相关分析后,能够提炼出不少有价值的内容,为团队提供数据支撑。

传统的软件团队很多情况下不需要系统开发工程师的,安全工程师的比重也比较少。传统的软件团队,大家只要关注自己这一块就可以,但作为区块链团队,各个角色都要对区块链技术有很好的理解,同时也需要有好奇心和热情,才有可能一起把事情做好。

程序员转区块链进行的准备有:

  1. 区块链与传统软件不一样的点,区块链社区属性强,信息更新非常快,需要非常主动去寻找和更新自己的信息与知识,手段则有主动去结交一些业内人士,加入社区,关注公众号,微博等。
  2. 去研究经典的白皮书,比如以太坊等。
  3. 研究经典的一些公链代码,如以太坊。

关于区块链的未来,没有量化指标的预测是不太负责任的,真的要预测,要给出来区块链爆发的时间点和参与的人数的占比。如果我们说区块链是未来,一定要投入,但如果是几十年以后才爆发,我们是不是就应该现在投身其中?所以区块链未来的预测确实比较困难,但对于程序员来说,区块链是一个很有挑战的事情,比如做公链的开发,涉及到P2P技术,底层存储,共识算法,以及虚拟机技术,这些都是非常有难度而且有意思的事情,所以不管未来是怎样,我们如果能够在这些技术上有积累,也是一个非常值得的事情。

转自 http://www.infoq.com/cn/news/2018/08/meitu-DirectorLin-DPos-Ethereum

分享到:更多 ()