区块链现状
“新华社北京10月25日电,区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。我们要把区块链作为核心技术自主创新的重要突破口,明确主
攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展。”目前国家比较重视区块链技术的自主创新,而且也明鼓励技术突破。而且我国成为了首个发行数字货币的国家。DCEP(Digital Currency Electronic Payment),是中国人民银行研发的电子货币。有利于人民币的流通和国际化。同时DCEP可以实现货币创造、记账、流动等数据的实时采集。
最近随着国家对区块链技术的重视,不少虚拟货币也随之增值
说点我自己的看法,区块链技术是现有技术的组合(分布式设计,P2P网络,共识算法等),是思想上的创新和变革。但是币圈很乱,也很浮躁,百分之九十的
公司并没有研发区块链相关技术,而是致力于发币,发币割韭菜。早些年,有些公司结合区块链技术写个白皮书就能拉来投资,至于白皮书的技术和设想能否实现,他们自己也不知道。我加入的几个群,讨论技术的少之又少,多半都是哪个公司发币了,要不要炒币。目前没看到国内哪个公司发行高可用的区块链操作系统,比特币定位越来越明确,就是作为虚拟的加密数字货币。而EOS(柚子链),Ethereum(以太坊)等则定位为区块链操作系统,类似于Linux,Windows等操作系统,可以在上面跑应用,而这些应用叫做dapp,目前这些区块链成熟产品都不是国产的,目前技术这块,还有待突破。
没有成熟区块链产品
无论国内还是国外,没有成熟的区块链产品落地。我查看了几款区块链相关的dapp,大部分是结合交易所开发相关钱包,钱包就是一款dapp,支持购买相应
的虚拟货币。还有一部分dapp是区块链小游戏,说是小游戏都有点过,就是博彩类转骰子的功能,说白了还不过是满足大部分的赌徒心里。就目前成熟的三款区块链产品来谈,比特币定位为虚拟货币,不做操作系统发展,剩下两个EOS和Ethereum是区块链操作系统,EOS比Ethereum效率更好一些,毕竟不是完全去中心化,EOS通过部分中心化的共识算法,提升了效率。目前基于EOS开发的dapp也没什么两点,而且没有得到推广和应用。
究竟什么原因呢?我认为主要原因是性能瓶颈并未突破。性能方面,CPU,RAM,NET等都受限于节点配置(所谓节点打个比方就好比是P2P网络中的节点),拿
EOS举例,开发者想要基于EOS做dapp并发布(就好比我们开发一款app上android应用市场一样),需要支付一定的费用购买相应的EOS代币,再通过EOS代币抵押给EOS系统,租赁CPU,NET,购买RAM。就这操蛋的设计,不说开发一款应用难度,单说资金这块就能卡死一部分开发者。EOS的资源购买和抵押是非常贵的,这也是没有成熟dapp落地的主要原因。大部分公司都没有这么多资金试水,何况独立开发者。换句话说,我有相同的钱能做一款爆款互联网app,上android和ios市场,还有资金运维,干嘛非要跟自己过不去,拿一个技术有瓶颈的区块链操作系统试水啊?有钱烧的?烧钱不是这么烧的。EOS提供了合约机制,所谓合约其实就是规则,告诉每个节点执行那些操作,处理那些请求,可悲的是,合约所支持的数据结构也有限,而且RAM,NET,CPU等使用也要谨慎。比如把现在成熟的一些手游移植到EOS中,受限的不是玩法实现的难度,反而是合约所限制的内存带宽等资源。
到现在还不懂区块链是什么
有很多人,我相信至少70%的人不知道区块链是什么。我的很多搞开发的朋友也不知道,更何况平民老百姓了。很多资料上说区块链就是分布式账本,
我给大家解释一下,传统的服务器和客户端模型是C/S结构,C/S结构就是多个Client对应一个Server,如下图
多个Client向一个Server请求数据,这是传统的C/S框架。后来为了解决单个Server的瓶颈和限制,提出了分布式设计的思想,可部署多个Server,这些Server协同处理客户端请求,如下图
当客户端大量请求时,优先将请求发送给balancer负载均衡器,负载均衡器通过负载均衡算法(轮询,随机等)派发给空闲服务器。服务器处理好后再互相同步。
目前,大部分的互联网公司都采用这种结构。只是随着云技术的推广和应用,将Server中不同的服务处理独立成一个服务Service,部署到docker中独立运行,思路大体相同。
接下来谈谈区块链,区块链其实和分布式进程类似,就是将上面的Server独立成节点,各个节点之间通过同步算法同步数据。同步算法涉及安全性,高效性,去冗余等规则,这些算法就是我们经常听到的共识算法,大部分算法都用到了拜占庭协议,感兴趣的可以了解下。
节点之间通过共识算法同步数据,每个节点都记录了区块信息,这些区块信息在节点中是通过链表组织的,后一个块记录了前一个块的信息,所以当某个节点
篡改区块链信息时,其他节点可以通过共识算法判断出它是内鬼,就会将这个节点信息修复。
一个节点中区块的组织形式如下
那么当一个请求过来,节点收到请求后该如何处理呢?这就要谈到合约机制了。合约其实就是一串代码,定义了一系列函数,这些函数可被节点调用。我们只需要将写好的合约编译,发布在指定节点,之后节点通过同步算法同步给其他节点,这样网络中大部分节点就能处理客户端请求了。
区块链的知识并不复杂,感兴趣的读者可以了解下EOS,这里有我对EOS源码的剖析
http://www.limerence2017.com/categories/blockchain/
是否有必要转行做区块链开发
不少开发者都会有疑问是否要转行做区块链开发,毕竟区块链是新兴的技术,而且薪水也不低,我认为还是取决于自己吧,区块链技术目前还在发展之中,落地应用少之又少,如果你觉得这是风口浪尖,可以搏一搏,而且你又对区块链相关技术特别感兴趣,那么可以试着做一下转型,区块链目前招聘的岗位也不多,大部分招聘合约开发,钱包开发,也有招聘跨链研究的,如果你觉得目前操之过急,那么你可以安心做好目前的工作,业余时间了解相关技术和知识,见风使舵也不迟。
感兴趣的读者可以先了解下区块链相关知识:共识算法, P2P网络, boost::asio , EOS合约写法等。这是我用boost::asio写的异步服务器,和EOS网络层
实现方式差不多。
https://github.com/secondtonone1/boostserver