当前位置:  首页 →区块链百科 →正文

区块链基础技术——区块数据

2018-11-13 14:51:26 区块链百科

原标题:区块链基础技术——区块数据

区块数据是什么

数据存储主要基于Merkle树,通过区块的方式和链式结构实现,大多以KV数据库的方式实现持久化,比如比特币和以太坊采用的leveldb。账户和交易的实现与安全这个功能基于数字签名、哈希函数和非对称加密技术等多种密码学算法和技术,保证了交易在去中心化的情况下能够安全的进行。

区块数据主要是保存交易数据,不同的系统采用的结构不同,下面以比特币的区块结构为例做介绍。

比特币的交易记录会保存在数据区块之中,比特币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分,如图2-1所示。

比特币的区块结构

区块链的数据结构成员分散存储在底层数据库,最终存储形式是[k,v]键值对,使用的[k,v]型底层数据库是LevelDB;与交易操作相关的数据,其呈现的集合形式是Block;如果以Block为单位链接起来,则构成更大粒度的BlockChain。

 

区块数据相关概念解读

 

区块/Block

区块是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和之前一个区块的哈希值的数据结构,区块经过网络的共识机制验证并确认区块中的交易。

父块/Parent Block

父块是指区块的前一个区块,区块链通过在区块头记录区块以及父块的哈希值来在时间上排序。

区块头/Block Header

记录当前区块的元信息,包含当前版本号、上一区块的哈希值、时间戳、随机数、Merkle Root的哈希值等数据。此外,区块体的数据记录通过Merkle Tree的哈希过程生成唯一的Merkle Root记录于区块头。

区块体/Block Body

记录一定时间内所生成的详细数据,包括当前区块经过验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现形式。

哈希值/散列值/Hash Values/Hash Codes/Hash Sums/Hashes

哈希值通常用一个短的随机字母和数字组成的字符串来代表,是一组任意长度的输入信息通过哈希算法得到的“数据指纹”。因为计算机在底层机器码是采用二进制的模式,因此通过哈希算法得到的任意长度的二进制值映射为较短的固定长度的二进制值,即哈希值。此外,哈希值是一段数据唯一且极其紧凑的数值表示形式,如果通过哈希一段明文得到哈希值,哪怕只更改该段明文中的任意一个字母,随后得到的哈希值都将不同。

区块链时间戳

时间戳/Timestamp

时间戳从区块生成的那一刻起就存在于区块之中,是用于标识交易时间的字符序列,具备唯一性,时间戳用以记录并表明存在的、完整的、可验证的数据,是每一次交易记录的认证。

随机数/一次性的随机数/Nonce

Nonce是指“只使用一次的随机数”,在挖矿中是一种用于挖掘加密货币的自动生成的、毫无意义的随机数,在解决数学难题的问题中被使用一次之后,如果不能解决该难题则该随机数就会被拒绝,而一个新的Nonce也会被测试出来并且直到问题解决,当问题解决时矿工就会得到加密货币作为奖励。在区块结构中,Nonce是基于工作量证明所设计的随机数字,通过难度调整来增加或减少其计算时间;在信息安全中,Nonce是一个在加密通信只能使用一次的数字;在认证协议中,Nonce是一个随机或伪随机数,以避免重放攻击。

梅克尔树/Merkle Tree

梅克尔树(又叫哈希树)是一种二叉树,是一种高效和安全的组织数据的方法,被用来快速查询验证特定交易是否存在,由一个根节点、一组中间节点和一组叶节点组成。它使用哈希算法将大量的书面信息转换成一串独立的字母或数字。最底层的叶节点包含存储数据或其哈希值,每个中间节点是它的两个子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。

区块容量/Block Size

区块链的每个区块,都是用来承载某个时间段内的数据的,每个区块通过时间的先后顺序,使用密码学技术将其串联起来,形成一个完整的分布式数据库,区块容量代表了一个区块能容纳多少数据的能力。

未花费的交易输出/Unspent Transaction Output/UTXO

未花费的交易输出是一个包含交易数据和执行代码的数据结构,可以理解为收到的但尚未花费的加密货币清单。比特币和其他加密货币在其区块链技术中使用UTXO,以验证一个人是否拥有未使用的加密货币可用于支出。

BB财经原创,作者区块链百科,转载请注明出处:http://www.bbcaijing.cn/baike/26265.html