互联网的中心化发展模式是传统网络安全的的软肋,区块链作为一种去中心化、集体维护、不可篡改的新兴技术,是对互联网底层架构的革新,是对当今生产力和生产关系的变革。区块链也被誉为是继蒸汽机、电力、信息和互联网科技之后,目前最有潜力触发第五轮颠覆性革命浪潮的核心技术。
目前市场上主流的区块链系统有比特币,Ripple,以太坊和 Hyperledger Fabric 。本文的主要目的就是分析当前主要流行的区块链的存储技术以及他们之间的不同。
![640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1](https://mmbiz.qpic.cn/mmbiz_jpg/RwXrJ91JYdsl3UIshKcPogObq0V6GVDtGv3A78EwFy7MSN4ILn6Z3s8g16RpdPwkgWJKtZweBiaOtsBgJr6Kxng/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1)
区块链简介
区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。中本聪于2008年在《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即“创世区块”。区块链包含一张被称为区块的列表,有着持续增长并且排列整齐的记录。每个区块都包含一个时间戳和一个与前一区块的链接,这样设计区块链使得数据不可篡改,一旦记录下来,在一个区块中的数据将不可逆。
其数据结构大致如下:
![640?wx_fmt=png&wxfrom=5&wx_lazy=1](https://mmbiz.qpic.cn/mmbiz_png/RwXrJ91JYdsl3UIshKcPogObq0V6GVDtZ2fPoOJseOoxdEuGuCSZHJYjAyFlIC00icqAhzt6wQ5t2ABaliaYe3ibQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1)
(区块链结构)
数据存储
1、比特币
比特币(英语:Bitcoin)是一种去中心化、全球通用、不需第三方机构或个人,基于区块链作为支付技术的电子加密货币。它由中本聪于2009年1月3日,基于无国界的对等网络,用共识主动性开源软件发明创立,是加密货币及区块链的始祖,也是目前知名度与市场总值最高的加密货币。
比特币存储系统由普通文件和 kv 数据库(levelDB)组成。普通文件用于存储区块链数据,kv 数据库用于存储区块链元数据。
用于存储区块链数据的普通文件以 blk00000.dat , blk00001.dat 文件名格式组成,如图2所示,其中 index 目录存储用于存储区块元数据。
![640?wx_fmt=png&wxfrom=5&wx_lazy=1](https://mmbiz.qpic.cn/mmbiz_png/RwXrJ91JYdsl3UIshKcPogObq0V6GVDticSGjwcoV7PZn37r7UNr3rUIFUFnfn0ta5Em2CLojWgQrnuwKz9EhVg/640?wx_fmt=png&wxfrom=5&wx_lazy=1)
(图2)
为了快速检索区块数据每个文件的大小是128 M Bytes。每个区块的数据(区块头和区块里的所有交易)都会序列成字节码的形式写入 dat 文件中。
在序列化的过程中,如果检测到当前写入文件尺寸加上区块尺寸大于 128 M Bytes,则会重新生成一个 dat 文件。具体的序列化过程如下所述:
•获取当前 dat 文件大小 npos,并将区块大小追加写入至 dat 文件中
•序列化区块数据和区块中的交易数据,并将序列化的数据追加至 dat 文件中。
• 在写入数据的过程中,会生成区块和交易相关的元数据。
区块的元数据格式如 <blockHash,xxxxx+npos> 格式, 其中 xxxxx 为 dat 文件序号,npos 为区块写入 dat 文件的起始位置。
交易的元数据格式如 <txHash, xxxxx+npos+nTxOffset> 格式, 其中 xxxxx、npos 和上面的描述一致,nTxOffset 为写入 dat 文件的起始位置(基于npos 位置)。
上述所有元数据都将写入 kv 数据库中,其中 blockhash/txHash 将作为后续查询具体数据在 dat 文件中的索引使用。
综上所述,在获取链数据的时候只需传入区哈希或是交易哈希,就能很容易的定位到区块数据或是交易数据。
2、瑞波币
Ripple 是世界上第一个开放的支付网络,通过这个支付网络可以转账任意一种货币,包括美元、欧元、人民币、日元或者比特币,简便易行快捷,交易确认在几秒以内完成,交易费用几乎是零,没有所谓的跨行异地以及跨国支付费用。
Ripple 的区块链数据存储系统是由关系型数据库(sqlite)和 kv 数据库组成,其中关系型数据库用来存储区块头信息和每笔交易的具体信息, kv 数据库主要存储区块头、交易和状态表序列化后的数据。 Ripple 这样处理的主要目的是单纯在查询区块头信息和具体每笔交易的时候,可以直接从关系型数据库中查找;而要构造整个区块数据的时候,除了从关系型数据库构造区块头信息外,还要依据区块头里的交易根哈希和状态表根哈希从 kv 数据库中获取具体的交易和状态表信息。这是 Ripple 和其他三种类型区块链系统唯一最大的不同。
区块头信息的序列化具体步骤:
•用区块的哈希作为 Key;
•序列化区块高度、区块哈希、前一个区块哈希、交易根哈希、状态表根哈希等生成的数据作为 value;
•将 <key, value> 存储至 kv 数据库中。
交易的序列化具体步骤:
•用区块头中的交易根哈希作为 Key;
•序列化交易哈希、交易类型、交易数据和 MetaData 等生成的数据作为 value;
• 将 <Key, value> 存储至 kv 数据库中。
下表分别是 Ledgers 和 Transactions 表结构。
列名 |
类型 |
含义 |
LedgerHash |
CHARACTER |
哈希值 |
LedgerSeq |
BIGINT UNSIGNED |
Ledger 序号 |
PrevHash |
CHARACTER |
前个 Ledger 的 Hash 值 |
TotalCoins |
BIGINT UNSIGNED |
当前网络上的 XR P总数(交易会销毁 XRP ) |
ClosingTime |
BIGINT UNSIGNED |
关闭时间 |
PrevClosingTime |
BIGINT UNSIGNED |
前一个区块的关闭时间 |
CloseTimeRes |
BIGINT UNSIGNED |
ledger 关闭时间的解决方案(2-120 S) |
CloseFlags |
BIGINT UNSIGNED |
标识 ledger 的关闭方式,一般都是0 |
AccountSetHash |
CHARACTER |
stateMap 根结点 hash |
TransSetHash |
CHARACTER |
txMap 根节点哈希 |
(表1:Ledgers )
列名 |
类型 |
含义 |
TransID |
CHARACTER |
交易 hash |
TransType |
CHARACTER |
交易类型 |
FromAcct |
CHARACTER |
交易的发起账户 |
FromSeq |
BIGINT UNSIGNED |
交易在账户中的序号 |
LedgerSeq |
BIGINT UNSIGNED |
交易落在哪个区块上 |
Status |
CHARACTER |
交易的状态 V 表示“共识过” |
RawTxn |
BLOB |
交易序列化数据 |
TxnMeta |
BLOB |
交易 metaData 的序列化数据 |
(表2:Transactions )
未完待续......
相关推荐
精品 干货 数据挖掘数据分析配套纯英文版教程课件 chap1_intro 精品 干货 数据挖掘数据分析配套纯英文版教程课件 chap2_data 精品 干货 数据挖掘数据分析配套纯英文版教程课件 chap3_data_exploration 精品 干货 ...
干货保险理赔数据分析PPT课件.pptx
区块链方面的报告
本资源是一个包含数据挖掘与数据分析的精品教程,共分为10个章节,旨在提供全面而深入的理论知识和实践操作指导。教程以纯英文的形式呈现,对于提升专业英语能力也大有裨益。同时,该教程附带了配套的数据源和源代码...
干货保险理赔数据分析PPT学习教案.pptx
Coindesk发布了2018区块链状态报告,其中覆盖了公共区块链、分布式账本技术、联盟链、ICO、交易和投资、以及监管等多个方面。资源共有170页,干货满满。
这份“干货分享据说这是史上最全的大数据分析工具共4页.pdf”文件,虽然我们无法直接查看具体内容,但从标题和描述中可以推测,它可能是一份详尽的大数据分析工具清单,覆盖了各种工具的功能、应用领域以及优缺点。...
数据中心干货 内容实践性强 数据中心干货 内容实践性强
区块链干货资料:区块链的五张面孔-一种可信数据库的观点
【会计干货之财务分享数据“点石成金”】这篇文档深入探讨了如何利用财务数据为企业创造价值。梁志飞老师强调,数据是财务工作的核心,通过对数据的挖掘和分析,财务人员能够揭示隐藏的问题,优化资源配置,提高生产...
一个高价值的数据安全平台,应该能够自动化维护一个持续更新的数据清单,其中包括敏感数据的分类分级。 此外,数据目录、数据清单、数据字典之间存在着紧密的联系。数据目录提供了对数据的概括性信息;数据清单提供...
智慧城市的数据分析方面,我们以城市数据实验室与数据平台的方式系统运营城市数据,一方面,通过数据分析为政府提供大数据智库方式的决策咨询;另一方面,通过市场化研发孵化新的产品甚至企业。 案例一:上海城市...
干货课件,值得拥有,8个章节信息如下: (1)数据挖掘概述 (2)数据预处理 (3)数据挖掘算法-分类与预测 (4)数据挖掘算法-聚类 (5)数据挖掘算法-关联分析 (6)序列模式挖掘 (7)数据挖掘软件 (8)数据...
本文来自作者罗志恒,文章重点讲解了用户画像在数据分析中的应用;如何构建用户画像。在日常商业活动中,有各种各样的职能划分:增长、内容、活动、产品,虽然具体工作和最终目标不一样,但其实都是围绕着“用户”去...
[数据分析实例4]使用python-pandas对历届世界杯数据进行数据分析,并用matplotlib绘图,干货满满,赶紧收藏学习起来! [数据分析实例5]使用python-pandas对历届世界杯数据进行数据分析,并用matplotlib绘图,干货满满...
2020年食品饮料粮油干货行业蛋挞皮领域行业分析报告(市场调查报告).pdf
在数据分析领域,R语言是一种强大的工具,它提供了丰富的统计分析功能和可视化能力。R语言的语法简洁且直观,使得它成为许多数据科学家和统计学者的首选。以下是对R语言中一些基础概念和常用函数的详细解释: 1. **...
会计干货之在预算季说销售数据分析.doc
ANR(Application Not Responding)日志分析是 Android 开发者需要掌握的重要技巧之一。ANR 的产生机制可以分为四类:输入事件超时、广播类型超时、服务超时和 ContentProvider 类型超时。ANR 的原因也可以分为两类...