在区块链开发者队伍中,有一批来自传统的互联网开发人员。在区块链圈子里崇尚年轻和「天才」的文化氛围中,这批开发者因经历了两次重大浪潮的洗礼而更加的扎实和沉稳。
戴硕就是其中一位。
戴硕,内容公链Contentos首席科学家,清华毕业,中科院硕士,曾在腾讯任职,后又在猎豹移动负责社交产品LiveMe开发工作。对于底层开发和安全的理解更为深入。正是有了这样的经历,戴硕直言区块链的开发入门成本远高于传统互联网,「不建议刚毕业的年轻人直接从事区块链开发」。
“应届毕业生,不建议直接上手区块链”
营长:在做区块链之前,你的经历是什么?
戴硕:我本科在清华读计算机专业,后来又在中科院拿了硕士学位。毕业后就开始从事软件开发和信息安全有关的工作。先在江民杀毒软件做了很长时间的信息安全,又在腾讯做了一段时间。之后又去了猎豹移动,开始是做「电池医生」App,属于工具类应用,后来主要精力全部放在了直播和短视频类应用的开发工作。
营长:你现在做起区块链的原因是什么?
戴硕:决定从事区块链研究一定不能选择「跟风」。在我的职业生涯里,很长时间都在做信息安全。我发现,用技术解决安全问题,实际上是无法形成闭环的。这就好像把一个要保护的东西放在保险柜里,然后保险柜的钥匙放在另外一个柜子里,以此类推,最后一把钥匙总要交给所谓的“信任”。我一直有一个心结,就是用技术方案解决信任问题,形成闭环。而区块链之所以吸引我,正是因为它是计算机历史上,第一次用技术构建了一种被大家公认的信任机制,并且对其他行业产生颠覆重意义。
营长:作为曾经的移动开发者,在你看来,区块链开发与移动开发的不同点有哪些?
戴硕:我们都知道,在移动开发中有一个理念叫「敏捷开发」,即快速试错,小步快跑。根据用户的反馈不断优化。但这一理念放在区块链当中是不可能的。一款移动App如果一个月不更新一个版本,肯定不是一个好的App。但一条公链,且不说一个月,就算是三个月更新一次版本,就没法用了。所以公链最终的交付目标一定是稳定、安全、高性能的,因为版本更新的代价太高了,而且还有分叉的风险。
营长:从移动开发者到区块链开发者,需要学习哪些技能?成长周期大概是多长时间?
戴硕:区块链开发要学的知识比App开发要多得多。首先要学的就是密码学的知识,之后要学分布式系统原理,包括分布式系统上面的共识原理和技术名词。此外,如果是做公链开发,还涉及存储的问题,所以也要对数据存储有所了解。从我的经验来看,从一个零基础成长为一个合格的公链开发者,至少要三年左右。所以我不建议没有任何开发经验的人或者应届毕业生直接上手区块链开发,至少要有三年左右的开发经验,才能比较顺畅的入门。
营长:这样说来,有什么比较好的学习建议吗?
戴硕:想要做区块链开发,第一步要对一些基本概念有了解,比如区块链是什么?什么是矿工?什么是挖矿?什么是数字代币等,可以去看一些科普类的文章。第二,要从实操入手。任何技术都是这样,你得亲手去试。网上有很多项目,比如加密货币,可以先试着买一些。另外,像智能合约部署等,要明白实现原理,可以亲手试一下。用了一段时间,才能对区块链里的基本概念了解更快。第三,学习源代码。很多项目都是开源的,源代码是最好的学习资料,如果想深入了解区块链开发,至少要研究一下比特币和EOS的源代码。一个是PoW,一个是DPoS。通过研究一些源代码,再配合钱包的使用,智能合约的部署等,结合起来学习,可以更快地了解区块链内部实现的原理。源于Steem,高于Steem
营长:在内容公链中,Steem是绕不开的一个话题,在技术上你们与Steem有哪些不同?
戴硕:刚开始做Contentos这个项目,大家的经验都不是很丰富,我们看了下,Steemit跟我们的业务重合度较高,而且已经很成熟。所以我们先从Steem的源代码入手,通过学习人家的源代码,提升自己的能力。另外,我们也看到了Steem本身的一些欠缺和不足。
营长:能举个例子吗?
戴硕:比如Steemit网站的用户基数不是很大,日活跃用户只有5万左右,但我们想做的内容公链是远超过这个量级的项目。通过分析,我们发现Steem现有的技术选型,并不能达到更高量级的要求。因为Steem最大的特点就是单节点的性能决定了整个网络的性能。
我们都知道区块链是一个链上所有信息的集合,这个集合是存储到单机上的,这个本身没有问题,但问题是它是存储到内存里的。一台机器的内存,要存储这个链上所有的东西。这样做的好处就是快(内存肯定比硬盘要快,比网络也要快),但是缺点也很明显,就是天花板太低了。
如果要接入百万PV的网站,上面所有的操作都要入到我们的状态数据库里面,按照Steem现在运行的状况,如果它的访问量乘以100,那1~2T的内存可以供多长时间?答案就是三个月以内。
如果使用Steem的技术选型,结局注定是失败的。
我们也去研究了一些其他的替代方案,比如以太坊,发现行不通。因为以太坊的数据模型是比较简单的,本质上只存储账户信息。但我们要做的业务类型可能有几十种上百种逻辑上的数据类型彼此交互。所以现有的技术方案,根本无法满足我们的业务需求,我们只好自己重新做了一套存储方案。
营长:能具体说一下这个存储方案的实现机制吗?
戴硕:首先内存型的数据库被我们pass掉了,不能用内存的,我们只好用基于硬盘的。同时,我们也采用了可插拔技术,为今后的多机方案作准备,比如在测试网和主网上线之后,仍然使用单机数据库。在不修改代码只修改配置文件的情况下,把单机数据库直接迁移到一个分布式的存储网络上。
另一方面,我们本质上用的是K-V存储数据库,但在业务逻辑上是一种关系型数据库的需求。因为我们的数据类型很多,彼此间有千丝万缕的联系。所以,我们在K-V数据存储上面直接做了一层类似于关系型数据的中间层的实现。共识算法设计的两大原则营长:Contentos的共识算法是DPoS+saBFT,这种设计是出于哪些原则?
戴硕:所谓共识算法,实际上可以理解为分布式网络上各个独立节点之间彼此通讯的一套规则。所有好的节点都会按照这套规则去操作;恶意节点则相反。因此,规则的制定,要遵循共识算法的两个特性:安全性和可用性。
安全性是在有拜占庭节点(恶意节点)的情况下,好的节点要么达成共识yes,要么达成共识no。不能一个说yes一个说no,这样就发生了分叉。可用性是指,在理论上可以达成共识的情况下,一定可以达成共识。不能说因为恶意节点的存在,就造成了好的节点不知所措,结果被锁死在某个状态而无法达成共识。无法做到这两点的很难称为合格的算法。
营长:那么,DPoS和saBFT两种共识算法的作用分别是什么?以及saBFT和BFT的区别是什么?
戴硕:简单来说,DPoS决定了由谁来出块,saBFT决定了出的块是否有效。与BFT算法相比,saBFT是异步处理,它无需向BFT那样出一个块大家进行投票,通过后再出一个。它的处理方式是一边出块,一边确认。举个例子,我连续出100个块,但在第90个块的时候网络条件出现了抖动,造成共识速度落后于出块的速度,中间差了10个块。saBFT可以跳过第91个块,直接对第100个块进行确认。因为一个块是一个链式结构,你对靠后的块的确认,实际上间接的确认了这个块之前的所有连接点。也就是说,等于一下子把90-100之间的全确认了。
营长:在众多共识算法中,为什么选择了这种模式?
戴硕:从行业发展的角度,区块链行业将来一定是多链协作的模式,而多链协作的本质就是链上数据的共享。但目前困扰区块链行业的一个痛点就是「交易确认时间」。很可惜,基于PoW的交易确认时间是无穷的。还有一个致命的概念叫「相对安全时间」,也就是说你在比特币和以太坊上完成了一笔交易,一段时间后,如果这笔交易没有被逆转,它就「相对安全」了,但这并不是百分之百的。如果这种模式发生在多链数据共享中,一旦有一笔「相对安全」的数据被回滚,就会引发雪崩效应,给所有协作的节点带来灾难。所以,我们在选择共识算法的时候,首先考虑的是以最快的速度达到100%确认的状态。目前,我们的平均确认时间是1秒以内,已经完全接近中心化网站或移动应用的交易确认时间了。
“区块链,往大了说是会造福全人类的”
营长:你如何定义「内容公链」?
戴硕:其实,没有一个非常严格的定义。我觉得,内容公链应该是一个基础设施平台,可以承接所有形式的数字内容,包括文章、图片、音乐、视频等信息。当然,这个基于区块链技术开发的开放内容平台,打破了现有中心化内容平台的信息隔阂,为价值内容交易提供一条高速通道。
营长:去中心化的内容平台与中心化的内容平台区别是什么?
戴硕:去中心化的内容平台更加公平透明,它打破了公司制中心化内容平台的霸权,从而回归价值于内容创作者。因此,特别吸引中长尾的创作者。如果一个视频创作新手想要在中心化的平台上获得粉丝关注,这基本上是很难的。对于中心化平台而言,中长尾创作者不能更好地带给他们商业利益,也根本得不到平台分发过来的流量。但基于区块链技术的内容平台,把内容的价值回归给了用户自己,我们要做的是把决定权回归给用户。
营长:除了内容公链外,你还看好哪些区块链应用方向?
戴硕:还看好区块链金融相关,比如区块链发票、白条。还有存证相关的,法院可以接受的凭证。最后是游戏。
营长:最后,跟区块链大本营(blockchain_camp)的读者说几句话吧?
戴硕:从我个人来讲非常相信区块链有一个非常美好的未来,原因我说了,大家公认的这种信任,信任是整个人类社会合作发展的一个最重要的技术。而且我也算是一种信仰,我相信区块链的未来是非常美好的。人一旦有了信仰,就可以抗住很多的困难和压力,也不容易轻易的放弃。我觉得如果作为区块链的创业者或从业者,如果没有这个信仰支撑,我觉得就不要做了。因为没有信仰的人,看有信仰的人觉得像傻子一样;但是没有信仰的人,在遇到困难和挫折的时候,一定比较容易退却。所以我希望那些对区块链的未来同样有信心的人,可以一起努力。像区块链这样的技术革命,实际上也不常发生。我们能够在年富力强的时候进入这个行业,赶上这个技术革新,也是非常幸运的一件事情,希望大家通过自己的努力,能够推动这个事业的发展。这个事业往大了说,是会造福全人类的。
本文转载自区块链大本营