区块链的数据是存储在链上,还是在数据库中?(答案是这个问题并不成立,来一起了解一下吧)

很多人都想了解区块链的数据到底什么时候是存储在链上,什么时候又储存在相应节点的数据库中间呢?

今天我们就来解决这个有趣的问题!!!

首先我们必须了解清楚两个概念:

  1. 区块链数据;
  2. 链上数据;

首先:区块链数据包括区块数据状态数据两者

  1. 区块数据描述的实际是区块链上面发生的每一笔交易的记录(如小帅给小王转账了50元,小帅充值了20元之类的数据)
  2. 而状态数据则是记录了每个账户和智能合约的当前状态(如小帅余额200元,小王20元)

而无论是区块数据还是状态数据都是由我们的区块链节点使用和储存的,区块链节点是一个程序,允许在我们的电脑,虚拟机等上,而多个节点通过网络的方式进行链接最终形成了完整的区块链网络。

而这其中区块链节点的数据存储最普遍的方式就是存入我们的磁盘中间,而我们的区块链不会直接的访问我们的磁盘,而是通过特定的数据库如LevelIDB,RocksDB,MySQL等独立和分布式的数据库来操作我们的数据(目前最重要的另外一个技术就是加入缓存区域,减少磁盘的寻道时间,加快区块链对磁盘数据的使用和存储),而相比于直接访问磁盘,用数据库作为中间媒介的特定数据访问模型对区块链节点更加的友好。
所以数据存储的过程可以解释为数据储存方式
而数据库分为独立和嵌入式:其最大的区别就是是否需要独立的部署,嵌入式的数据库和区块链节点整合在同一个进程中间,同动同停,基本感受不到独立的存在感。

而其次:链上数据

解释:链上数据是直接或者间接由区块链共识产生的数据;

1.而回到我们的问题,我们会发现区块链中间的区块数据和状态数据并不是凭空的产生的,区块中间的数据是因为不同节点之间的交易数据存储然后被广播到所有区块链节点的共识状态,所以区块数据也是因为共识而产生的数据之一;

2.而反观状态数据,由于交易的产生,共识的一致,最终会引起状态的改变,所以在此角度中间,状态数据也一样可以被认为是链上数据;

总结:所以回到最初的问题,区块链数据可以看成为共识交易产生的数据,是链上数据的一部分!

所以链上数据储存和数据库储存问题是不成立的,因为链上数据和数据库不是一个层面的概念,所有的因为共识而产生的数据库储存的数据都可以称为链上数据!

猜你喜欢

转载自blog.csdn.net/gaoyanwangxin/article/details/100026289
今日推荐