数据库视角下的区块链技术

article/2025/9/4 19:10:04

数据库视角下的区块链技术

1 overview

本文关注数据库视角下的区块链技术。

首先,我们来看一下数据库和区块链的定义。数据库是数据管理的产物,而数据管理则是数据库的核心任务。当数据规模变得很大、用户变得更多时,单一节点的数据库满足不了用户的需求。分布式数据库便应运而生,目的是存储更多的数据,提供更大的吞吐量。区块链的本质特征是去中心化。区块链技术是一种以密码学技术为基础、以去中心化或多中心化的方式对数据进行存储和管理,从而在不依赖可信中心机构的情况下提供“可信数据”的技术。

从定义上来看,分布式数据库和区块链有相同之处。两者均涉及到数据存储和管理,并涉及到多个节点。在这个意义上,区块链满足分布式数据库的定义,换句话说,区块链是一种分布式数据库。

当然,两者也有明显的区别。一般的分布式数据库存在一个可信中心,要求多个节点协调工作提供更大的吞吐量。区块链的本质特征是去中心化。在不依赖可信中心机构的情况下,区块链要能够提供“可信数据”。总结成一句话,分布式数据库关注性能,而区块链关注的是安全。

从发展趋势看,要想得到更加广泛应用,区块链技术需要借鉴分布式数据库多年来积累的技术。总之,区块链与分布式数据库有很强的关联性。在本文,我们将从数据库的角度来看待区块链。

2 data management

提起数据库,我首先想到的是关系数据库。关系数据库应该是目前使用最广泛的一种数据库之一,它使用了关系模型。在关系模型下,数据存储在了一张张表中,对进行数据的操作,也就是对表进行操作。

在本质上,区块链也是一种特殊的分布式数据库。在区块链中,数据是怎样被组织存储的?在本节,我们通过介绍Hash Chain和Merkle Tree这两个数据结构来回答这个问题。

2.1 Hash Chain

Hash Chain的一个显著特征是,链接列表中的指针不仅包括下一个旧块的标识符,还包括该旧块的哈希。当添加一个块到Hash Chain中时,需要上一个块的地址和上一个块的哈希写入到当前的块中。不难发现,在Hash Chain中,如果任一块的哈希值发生变化,则其后所有节点的哈希值都会变化。

顾名思义,区块链是数据块的链接列表。在区块链中,数据以固定大小的块(block)作为基本储存的单元,一个block中存储多条数据。通过使用Hash Chain,所有的block被组织成一条链。

为什么区块链要使用Hash Chain?在Hash Chain中,如果一个block中的数据被更改,则其后所有节点的哈希值都会变化,这也意味着其后所有节点的数据都要被重写,这就保证了区块链中的数据不会被篡改。因此,区块链是一个 append-only 的数据库。

2.2 Merkle Tree

Merkle Tree由一个根节点(root)、一组中间节点和一组叶节点(leaf)组成。叶节点(leaf)包含存储数据,中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。Merkle Tree也称哈希树。

类似于Hash Chain,Merkle Tree具备防篡改的特性。如果某一个叶子节点中的数据被更改,则一定会传导到根节点,即根节点中的哈希值会改变。

Merkle Tree的效率高于Hash Chain。因为Merkle Tree使用了树形结构, 其查询和更改的时间复杂度为 O ( l o g ( n ) ) O(log(n)) O(log(n))

区块链中使用Merkle Tree,主要是为了提升系统的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据。如下图,比特币系统使用了Hash Chain和Merkle Tree相结合的数据结构。在比特币的系统中,每个block中的数据均使用一个Merkle Tree来维护,而Hash Chain中仅包含Block header。block header保存着对应的Merkle Tree的根哈希值、上一个block的地址和上一个block对应的block header哈希。

3 Sharding

在分布式数据库中,分片技术是提高可扩展性的一项关键技术。通过将数据分散的交给不同节点处理,分布式系统可以达到 scale-out 的效果。也就是说,随着用户和数据量的不断增多,系统整体的吞吐量也随之接近线性增长,分片本身带来的 overhead 几乎可以忽略不计。

然而,区块链中很难应用分片技术。在区块链中,每一个节点均是不可信的。如果在区块链中应用分片技术,那么整个系统的安全性都无法得到保证,也就无从谈起去中心化了。

4 replication

在分布式系统中,至少一个结点出故障的概率远大于单结点系统。因此,分布式系统要求同一数据至少在2个结点有复本,这就涉及到了数据复制,比如,主从数据复制。

第三节中说到,区块链没有应用分片技术。换句话说,每一个节点保存着所有数据的副本。当新的block存入区块链时,每个节点运行泛洪算法,将新写入的block在网络中广播。每个节点对接收到的block检查,以查看block是否已经接收过,如果未接收过,则将block放入本地缓存,并将其转发给其所有的peer节点。

5 transaction

几乎所有人都会将数据库和事务联系起来。数据库系统要保证事务的ACID性质。上文中提到,区块链是一个 append-only 的数据库。在区块链中,一个事务也就是一笔交易。每隔一段时间,区块链系统会根据共识策略选择若干交易,并将这些交易放到一个block中。然后,通过网络广播,将block写入所有节点的持久化存储中。这个过程满足事务的ACID性质。

6 consensus

在传统的分布式数据库中,存在一个可信中心。分布式数据库只需要容忍节点宕机,主要采用 Raft、Paxos 等经典共识算法。然而,区块链要容忍节点的拜占庭行为,因此不得不采用代价更高的 PBFT、PoW 等共识算法。本节介绍一些常用的共识算法。

6.1 Paxos

  • 简介

    Paxos 协议的流程较为复杂,但其基本思想却不难理解,类似于人类社会的投票过程。在 Paxos 协议中,有一组完全对等的参与节点,这组节点各自就某一事件做出决议,如果某个决议获得了超过半数节点的同意则生效。只要有超过一半的节点正常,Paxos 协议就可以工作,能很好对抗宕机、网络分化等异常情况。

  • Advantages

    1. 有坚实的理论研究证明,并为其他非拜占庭共识算法提供了理论基础。

    2. 与PBFT等区块链常用共识算法相比,吞吐量更大,即局域网下的吞吐量超过10000 TPS。

  • Disadvantages

    1. 仅有极少数聪明人可以理解这个协议,难以代码实现。

    2. 无法在公共网络环境中高效运行,仅适用于节点数较少的场景,如分布式数据库系统。

6.2 Raft

  • 简介

    Raft协议是对Paxos协议的改进,它的首要目标就是容易理解。当然,Raft增强了可理解性,在性能、可靠性、可用性方面是不弱于于Paxos。

  • Advantages

    1. 易于理解,且易于代码实现。
    2. 与PBFT等区块链常用共识算法相比,吞吐量更大,即局域网下的吞吐量超过10000 TPS。
  • Disadvantages

    1. 无法在公共网络环境中高效运行,仅适用于节点数较少的场景,如分布式数据库系统。

6.3 PoW

  • 简介

    POW协议达成共识的依据是工作量。在比特币的系统中,工作量就是计算的哈希的数量。

  • Advantages

    1. 对参与共识节点的数量没有限制,系统中节点可以动态加入/离开,可以适应公有链的开放环境。
    2. 安全性。可以容忍大量的恶意节点,任何人都需要获得网络一半以上的算力才可以实现恶意攻击。
  • Disadvantages

    1. 浪费资源。在共识过程中,计算机做了大量的无意义的哈希运算。
    2. 效率低下。交易确认缓慢,且存在撤销的可能。

6.4 PBFT

  • 简介

    Raft协议是对Paxos协议的改进,它的首要目标就是容易理解。当然,Raft增强了可理解性,在性能、可靠性、可用性方面不弱于于Paxos。

  • Advantages

    1. 高效。在PBFT算法中发一个交易是无需等待确认的,如果一个区块通过PBFT算法被系统认可,那么这个区块就会是最终区块,不会被撤销。因为各个节点达成共识是在同一时刻决定的,也就意味着用PBFT维护的区块链不容易出现分叉,所以也就不用等待确认以保证当前区块所在的链是最长链。

    2. 节能。PBFT 算法的共识过程也不需要像 PoW 那样需要耗费大量电能。

  • Disadvantages

    1. 不适用于节点数量过大的区块链,扩展性差。PBFT算法的计算效率依赖于参与协议的节点数量,由于每个副本节点都需要和其它节点进行P2P的共识同步,因此随着节点的增多,性能会下降的很快。

    2. 系统中节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私有链环境。

7 concurrency

在数据库领域,为了提高系统的吞吐量,将多个交易或指令并行处理是是非常重要的技术之一。然而,在区块链中,交易仍然是串行执行的。区块链对并行的支持并不好,原因在于在现有的一些区块链中,执行层还不是性能的瓶颈。例如,在比特币中,一个区块的执行时间在毫秒级,相比于 10 分钟的区块产生时间,执行部分几乎可以忽略不计。除此之外,在一些支持智能合约的区块链中,交易之间往往共享合约的状态,为了保证交易执行结果的确定性,串行执行往往是最简单和保险的方式。

8 summery

在本文,我们从数据库的角度来分析了区块链技术。总的来说,区块链是一个不存在可信中心的分布式数据库。区块链会是一个颠覆性的技术吗?时间会给我们答案。


http://chatgpt.dhexx.cn/article/iDFld5Jk.shtml

相关文章

区块链入门(一)------ 区块链简介(持续更新)

1、简介 ​ 区块链是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统…

区块链上的“SQL”

导读 《F1:A Distributed SQL Database That Scales》是Google构建的用于支持广告业务的分布式关系型数据库系统。作为一个混合型数据库系统,它结合了高可用、NoSQL数据库的扩展性以及传统SQL数据库的一致性和可用性。F1数据库整体基于Google Spanner构…

学习区块链经典教程:区块链技术与应用

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 本课程主要讲解区块链的基本概念和实现原理,面向具有计算机相关的基础知识,对区块链技术和应用感兴趣的同学。通过这门课的学习&#xff0c…

深入浅出区块链技术

大厂技术 坚持周更 精选好文 本文为纯粹区块链技术分享,没有任何投资建议。希望大家喜欢~ 一、故事导读 开始分享之前,引用自网上一个段子来引导大家。 《小明的故事》 小明是谁?小明是一名前端工程师,也是一个足球迷…

区块链相关技术学习总结(1)——区块链以及区块链技术入门详解

区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰…

p7结构的数字信封

PKCS7的数字信封格式分为两种:带签名的数字信封和不带签名的数字信封。由于这个数字信封的生成过程比较复杂,所以这两种格式比较容易记混,导致都搞不清楚一个数字信封里面到底是存储的什么内容了。下面我就详细的解释一下,这两种数…

数字签名和数字信封

数字签名和数字信封 数字签名定义原理作用签名种类P7签名又分为两类:Attached签名Detached签名P1签名也称为裸签 验证签名验签的原理 数字信封定义原理作用 签名 、数字信封、证书的关系 数字签名 定义 用户用自己的【私钥】对原始数据的哈希摘要进行加密所得的数…

chewing的作业——数字信封实现文件传输

文件安全传输系统设计作业 通信模式:端到端通信 数字信封: 对称密码优点是加解密运算非常快,适合处理大批量数据,但其密码的分发与管理比较复杂。而非对称密码算法的特点是公钥和私钥分离,非常适合密钥的分发和管理。…

什么又是数字证书?(数字证书与数字签名什么关系?)数字信封、PGP又是啥?

什么是非对称加密? 什么是信息摘要? 什么是数字签名? 本节我们接着上面的内容继续,话说有了非对称加密技术、有了信息摘要技术、也有了数字签名技术,信息的安全传输是不是就万无一失了呢? 其实并不完全&a…

sm2格式数字信封加解密详解

sm2格式数字信封 0、参考链接 密码行业标准化技术委员会http://www.gmbz.org.cn/main/bzlb.html SM2密码算法使用规范http://www.gmbz.org.cn/main/viewfile/2018011001400692565.html SM2密码算法应用分析https://blog.csdn.net/arlaichin/article/details/23708155?utm_so…

数字签名和数字信封的比较

参考博客:数字签名与数字信封流程 相同点 都使用了非对称算法对密钥进行了加密 数字签名 重点:防止文本被篡改,防止抵赖 发送方将文本取摘要,再生成一个密钥对摘要加密,同时该密钥使用自己的私钥进行非对称加密&am…

密码学~~~数字信封

#本文仅供参考有不足之处请指出 一、概括 数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。数字信封的功能类似于普通信封,普通信封在法律的约束下保证只有收信人才能阅读信的内容;数…

数字信封工作原理

数字信封是指发送方使用接收方的公钥来加密对称密钥后所得的数据,其目的是用来确保对称密钥传输的安全性。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥。 数字信封的加/解密过程如图1-19所示。甲也要事先获得乙的公钥&#xf…

RSA+AES数字信封加解密设计

登录认证、鉴权这些都做好了过后。就开始我们的加密设计了、这里采用了简化数字信封进行加密。首先客户端(浏览器)先请求一份RSA非对称密钥、如果我们采用了openresty或者有能力在nginx开发C模块的插件,就可以在这里保留一份用户的私钥&#…

数字信封加密

OpenSSL 是目前 PHP 甚至是整个开发圈中的数据加密事实标准,包括 HTTPS/SSL 在内的加密都是它的实际应用, OpenSSL 提供了对称和非对称加密的形式,也就是我们日常中最普遍的两种加密方式。 那么,它和 Hash 类的加密有什么不同吗&…

p7数字信封

PKCS7的数字信封格式分为两种:带签名的数字信封和不带签名的数字信封。由于这个数字信封的生成过程比较复杂,所以这两种格式比较容易记混,导致都搞不清楚一个数字信封里面到底是存储的什么内容了。下面我就详细的解释一下,这两种数…

数字信封原理

数字信封是指发送方使用接收方的公钥来加密对称密钥后所得的数据,其目的是用来确保对称密钥传输的安全性。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥。 数字信封的加/解密过程如图所示。甲也要事先获得乙的公钥,…

PKCS7数字信封简述

1、数字信封的概念 数字信封,英文是Digital Envelope,望文生义,就可以知道将需要传递的数据,通过加密的方式包裹起来。 数字信封的准确定义,在《PKCS #7: Cryptographic Message Syntax Standard》标准的第10章中给出,原话是:“加密的内容,以及对内容解密的密钥被加密…

什么是数字信封?

一、什么是数字信封 数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。 在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公开密钥来加密(这…

数据来源渠道及采集工具_几款简单好用的爬虫抓取数据采集工具

新朋友点上方蓝字“Office交流网”快速关注 1. 火车头采集器 火车采集器我们也一直在用,是老牌的采集工具了。它不仅可做抓取工具,也可以做数据清洗、分析、挖掘已经可视化等工作。数据源可来源于网页,网页中能看到的内容和不可看到都可以通过…