区块链基础概念(2)

区块数据

区块/Block

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

父块/Parent Block

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

区块头/Block Header

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

区块体/Block Body

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

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

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

哈希函数哈希算法/ Hash Function

一般的线性表中 ,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系因此在结构中查找记录时需进行一系列和关键字的比较。这一查找方法建立在“比较"的基础上,查找的效率依赖于查找过程中所进行的比较次数。理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立-一个确定的对应关系f ,使每个关键字和结构中一个唯一的存储位置相对应。 这个对应关系f就是哈希函数。例如,全体的长整数的取值作为一个取值空间 ,映射到全部的字节整数的取值的空间,这个映射函数就是HASH函数。通常这种映射函数是从-一个非常大的取值空间映射到一个非常小的取值空间,由于不是一对- 一的映射, HASH函数转换后不可逆,即不可能通过逆操作和HASH值还原出原始的值,而且受到计算能力限制也无法还原出所有可能的全部原始值。HASH函数运用在字典表等需要快速查找的数据结构中,他的计算复杂度几乎是0(1) ,不会随着数据量增加而增加。另外-种用途就是文件签名,文件内容很多,将文件内容通过HASH函数处理后得到个HASH值,验证这个文件是否被修改过,只需要把文件内容用同样的HASH函数处理后得到HASH值再比对和文件一起传 送的HASH值即可,如不公开HASH算法,那么信道是无法篡改文件内容的时候篡改文件HASH值,-般应用的时候 , HASH算法是公开的,这时候会用一个非对称加密算法加密一下这个HASH值,这样即便能够计算HASH值,但没有加密密钥依然无法篡改加密后HASH值。HASH算法的另外-一个很广泛的用途,就是很多程序员都会使用的在数据库中保存用户密码的算法,通常不会直接保存用户密码(这样DBA就能看到用户密码啦,好危险啊) , 而是保存密码的HASH值,验证的时候,用相同的HASH函数计算用户输入的密码得到计算HASH值然后比对数据库中存储的HASH值是否一致,从而完成验证。由于用户的密码的一样的可能性是很高的,防止DBA猜测用户密码,我们还会用一种俗称“撒盐” 的过程,就是计算密码的HASH值之前,把密码和另外-个会比较发散的数据拼接,通常我们会用用户创建时间的毫秒部分。这样计算的HASH值不大会都是一样的,会很发散。 

时间戳/Timestamp

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

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

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

梅克尔树/MerkLe Tree

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

区块容量/Block Size

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

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

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

                   

添加BSN运营微信号或关注BSN研习社公众号,一手干货,技术交流,等待着你来发掘......

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>