从程序员的角度认识区块链

现在有关区块链的文章铺天盖地的,可真正讲清楚区块链技术底层精髓的设计思路和重点的没有几篇。今天我就从技术上(数据库)的层面说说我的看法(不过是引用别人的观点,表示赞同)

从最本质的功能来看,不管是数据库还是区块链,都是用来存数据的技术。因此,区块链的概念可能引申出了很多商业方面的革新,但是抛开这些上层建筑,从底层地基来看,区块链可以认为是一种特殊的数据库技术。

数据库只是一种用来存储和查询数据的工具,仅此而已。SQL是一种大家用的比较多的手段,而当前除了SQL业界还有NoSQL、NewSQL等一大堆变形。因此,大家先把思路放宽,将“数据库”的概念扩展到一切可以保存与获取数据的机制。

那么来看区块链技术,不管是比特币还是以太坊,或者其他变体,其核心本质都是面向交易业务的数据存储于读取能力。

我们就来说说区块链和数据库技术相通的部分,如果大家了解数据库内核结构,可以看到区块链的核心架构是数据库核心架构一个子集。

区块链的“账本”就相当于数据库的“日志”,数据库是将操作按照顺序写入日志,在区块链里面叫做账本。

区块链技术的设计和机制,与传统数据库的内核理念极为相似。譬如,从其传输和存储的数据结构上来看,区块链的链式结构来源于传统数据库的事务日志。任何数据库的DBA都知道,数据库的事务日志本质上就是不可更改的链式结构,事务中的每一条操作记录都会有一个反向指针指向该事务中的上一条记录。因此,区块链的链式结构本质上脱胎于数据库事务日志,同时增加了区块之间的反向哈希值作为指针,且引入了默克尔树结构进行快速数据校验。

因而,我们可以安全地进行认为:区块链的链式结构在存储体系中等价于数据库的事务日志。本质上数据库的任何操作同样是不可篡改的,只不过当前大部分数据库不会对外暴露事务日志的解析工具,仅保存每一条记录的最终状态而已。

此外,区块链的共识部分也脱胎自数据库的一致性管理机制。比如传统数据库的主从结构(例如IBM DB2的HADR、Oracle的DataGuard)就是在多个节点之间实时复制数据的一种方式。

由于没有足够的认知,所以差异部分将下次介绍。

你可能感兴趣的:(从程序员的角度认识区块链)