在比特币系统中,使用区块链作为交易记账的账本,存储了比特币所有的交易信息。由于比特币的分布式特性,所以可以将区块链视为一个分布式的数据库。
但是与传统的分布式数据库而言,又具有一些差异,目前总结如下:
- 区块链技术中的每一个节点保存的区块链前缀部分都是完全相同的,仅区块链末端有所差异。
- 区块链具有数据不可篡改的特性。源于区块链本身的数据结构和共识机制。数据结构而言:区块链之间的区块都是通过
Hash
,Merkle Tree
,SHA256
,ECC
等密码学证明连接在一起的。因此,当主链足够长时,若要对其中的一个区块的数据进增加,删除,修改等操作,就需要对被修改块之后的所有块全部重新进行密码学的证明。如果被篡改的区块处于主链靠前的位置,那么篡改数据的代价将远远高于篡改过后的获利。 - 区块链较传统分布式数据库而言具有数据公开性,以及可溯源性。原因在于,区块链中除了区块之间是有连续性外,区块链中的数据的每次修改等变更都是通过数字签名合法的记录在区块链上。也就是说,区块链中记录了数据从产生到消亡之间的每次修改,在比特币系统中,体现在比特币的产生到消费的全过程都是有迹可循。这样一来,就提供了数据的可溯源性,保证了过程的公开性,数据的透明性。
事务特性
下面分别针对ACID特性对分布式数据库和区块链进行对比
Atomicity(原子性)
分布式数据库
由全局数据库管理系统控制,保证所有节点均完成或均失败
区块链
由共识机制、分叉理论和最长链原则共同控制。
共识机制尽可能保证所有节点数据的原子性,但也会因为网络延迟和节点作恶导致部分节点更新失败。
如果出现有的节点更新数据成功,有的节点更新数据失败的情况,则发生分叉,各节点根据最长链原则更新自己的数据
Consistency(一致性)
分布式数据库
由业务层或全局数据库管理系统控制
区块链
共识机制控制各节点在一定时间窗口内“同步”更新,更新不成功即分叉
Isolation(隔离性)
分布式数据库
全局管理系统中维护事物序列号,根据序列号判定执行顺序
区块链
不存在隔离性问题。在共识机制控制下,单个时间点只有一个主体完成对区块链的更新操作,因此不存在并发事物操作。
Durability(持久性)
分布式数据库与区块链的单点都是传统的数据库,因此能保证持久性
篡改
- 分布式数据库
- 单个节点能独立管理自己存储的数据;
- 已经提交的数据可以被修改或抹除,但修改或抹除会留下可删除的日志
- 区块链
- 单个节点无法独立管理数据,如果任意更新的话即成为“恶意节点”,此类节点可以通过与其他节点的数据比对发现
- 不可篡改,已经提交的数据会被永久保留,无法被修改或抹除
中心化控制程度
- 分布式数据库
- 由全局数据库管理系统统一控制
- DBA(数据库管理员)有“生杀大权”;
- 区块链
- 去中心化
- 不存在DBA的角色
节点间的关系
- 分布式数据库
- 各节点之间的关系是:信任,协作
- 区块链
- 各节点之间的关系是:怀疑,制约