编者按:本文系区块链专家王涛讲师,在掘金技术社区主办的《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 活动上的分享整理。掘金 JTalk 目前已举办5期,每期 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。前端
如今区块链所说的“3.0阶段”,实际上更多的是偏向于业务,从数据库角度来看,如今区块链底层技术有不少能够提高的余地。刚开始你们只是作一个数字货币,随着合规的加入,你们能够在上面跑一些业务。 但区块链底层链,包括性能、处理能力、通用功能,离商业化还有很大的距离。若是把区块链技术将来畅想成一个10分的东西,咱们认为如今区块链功能只是在1分到2分的级别,还有很是长的路要走。 从技术角度理解,其实区块链技术就是一个特殊的分布式多活数据库。算法
方向1:从专业化向通用化演进。 如今玩以太坊和比特币,都是为了专门目的设计的一套软件,比特币是专门为转帐设计的,以太坊是转帐+智能合约,通用方面,可使用JAVA、C+ +程序,写任何逻辑。如今区块链基本是为专有系统定制的一套软件,而不是一个通用的软件。数据库
方向2:各自为政向标准化演进。 搞区块链最重要的是协议,而不是软件,你们只要知道比特币之间交互协议,可使用专为比特币设计的矿机,也能够本身写一套东西,只要有协议就行。如今不少人作公链,每一个公链都是独立的通讯协议,这就会形成链与链中间通讯受到影响,能够用跨链机制、侧链机制打破这些壁垒。相信将来在整个协议层可能会有更多通用化、标准化东西。后端
方向3:产品化与模块化不断增强。 如今基本上大部分数据库模块化作的很是好,好比但愿用一种特殊的加密算法,就把这个加密的库替换原来库就能够,这是将来区块链须要提高的地方,就是框架可以作到更好的模块化。安全
方向4,性能与可扩展性。 针对分片、内存计算、磁盘结构等进行优化,从单点磁盘结构到多分片对等多活架构,从而使得性能发挥到极致。这一块须要技术上继续突破才能实现性能的提高。服务器
特性:共识机制、存储机制、智能合约、分片、应用开发接口、安全。这些实际上都是区块链底层老生常谈的一些模块,对应到数据库,有没有一些对应的点? 共识机制。在过去数据库架构里,所谓一致性控制都是有一个主节点,全部写操做会被复制到另一个存节点作高可用配置。区块链上,能够把这个体系扩展,假设主节点并非固定的,而是每10分钟换一次,在主节点MySQL,10分钟换一次主节点,某种程度上是相通的。无论是POW、POS所谓共识机制,真正本质是到底在一段时间以内以谁的信息为准,这个数据库里是以主节点为主,当它挂了之后,怎么选出一个新的节点,这些都不重要,只是实现问题。网络
存储机制。在区块链里,存储说的都是链自己这个事,你们有兴趣看一下比特币、以太坊,除了链自己,还有相似于状态存储,好比链很长,可能有100GB,涉及到某个帐户屡次修改,链自己其实是交易日志,记录每一条记录修改方式,展示形式要归到一个数据库里,都是要内嵌一个小型数据库,把最终结果放到里面。这一套体系对应到数据库里,无外乎就是数据库的存储+事务日志。架构
智能合约。是用户自定义的托管程序,在数据库里托管程序叫存储过程,在区块链里,本质是同样的,最大不一样点在于安全性方面。在数据库里调存储过程,记录最终结果,可是在区块链里,由于不可信任,记录调用。 分片。大部分区块链项目里作得还不太成熟、不稳定,数据库分片是很是成熟的东西,区块链行业,因为分片之间交易很难保障,大部分区块链公链项目很难作好的分片。框架
应用开发接口。在MySQL或Oracle用SQL,无外乎写一段应用程序,扔到系统里,别人调用。而区块链技术也须要一个统一的访问方式,才能更好实现通用化应用。异步
安全机制。在数据库里,一个表单,到底谁能读、谁能写,有一套定义,但在区块链里,安全是行级的安全,好比在比特币里,至关于全局可读,只有输入可写的安全配置。 从这几块来看,区块链和数据库的世界有不少相通之处。
事务日志。数据库里事务日志和区块链的链自己就是一个事情,在区块链里,每个区块对应到数据库,能够认为对应的就是一个日志文件。最本质的区别是在于区块链同步标准以区块为单位,每一次主节点要把交易信息打包成区块,这个区块做为交易日志。当有任何信息之后,马上就能够把数据同步给其余节点。
POW本质是一种自我证实的方法,就是每个节点你们都想让别人跟本身同步,本身想成为主节点,怎么成为主节点?POW方式是给你们很难的题本身去算,算完了之后,告诉你们算出来了,让你们来验证,若是验证是对的,跟我看齐。好处是你们会把大部分时间花在计算过程中,而对于网络没什么太大压力。
POS正好相反,POS没有过多自我计算的过程,至关于一大屋子人都想成为主节点,你们经过某种方式进行投票,这种机制不须要本身去搞,但对网络压力很大,由于每一次投票都要设计上万个节点竞选,网络压力很大,因此为何POS也不可以彻底真正解决高性能问题,由于当节点数太多,POS效率很是低。 DPOS,就是一屋子人选几个表明,你们跟几个表明看齐,从某种程度上是减小了网络压力。但怎么信这个表明,这个表明是否是表明广大人民的利益,是否是靠谱,这又是一个问题。
DAG,这跟咱们一直说了POW、POS是本质的区别,无论是POS仍是POW,作得都是跟我看齐的事,本质是当某一我的在一段时间以内成为一个基准,你们跟基准点看齐。但DAG的思路是一帮菜市场大妈去传播谣言,没有一个基准点,当在DAG网络里,全部传输都是异步的,好处是不须要任何人成为这个基准出块的节点,坏处是没有办法作时序控制,由于每一个人讨论东西顺序不同。DAG惟一能作的事情就是转帐,后面涉及到操做无外乎是加和减,若是菜市场大妈互相传播方式,作一些高阶操做,A和B两我的先作加法再作乘法,C和D两我的先作乘法再作加法,两个结果不同。DAG算法里暂时很难突破排序的问题。传统区块链链式结构没有这个问题,这个节点先作加作作乘,不要紧,只要说好了,他说先加就是先加,他说先乘就是先乘,这块是DAG网络和传统区块链方式最大的区别。
从安全级别来说,区块链有不少机制确保安全性。对于数据库你们的想法是这个东西是跑在数据中内心的,区块链基本上有一个笔记本就能够了,因此除了确保本地安全之外,更重要的是协议层面确保其余对等节点、相邻节点有没有做恶的坏人。在三个层面上确保安全,对于记录级安全,属于交易数字签名、智能合约数字签名,就是当作一笔交易时,必定要经过数字签名来验证账号是否有权利修改这套记录,经过加密,从记录级确保修改这条记录的人必定是本人。区块级的安全机制,当收到块之后怎么确保这个块是正确的,这个块包括默克尔树、挖矿校验,这是对于区块安全的保障。对于链级安全机制,怎么确保这个链是靠谱的,利用前一个区块生成校验码、分叉解决方案。
而在底层技术上,我认为经过二者的技术融合,可能会出现“去中心化数据库”这么一种产品形态。 对于去中心化数据库,其主要的技术点有一下几个:
以上是《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 讲师王涛的分享,若是你对掘金的 JTalk 线下活动感兴趣,能够关注掘金活动页面的 JTalk 活动报名。掘金 JTalk 目前已举办5期,每个月一期的 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。
JTalk 第六期即将在杭州举办。