写点什么

什么是区块哈希?哈希游戏开发技术原理方案(源码搭建)

作者:Geek_acdf7b
  • 2022 年 5 月 27 日
  • 本文字数:1341 字

    阅读完需:约 4 分钟

什么是区块哈希?哈希游戏开发技术原理方案(源码搭建)

什么是哈希?

哈希是将任意长的输入编程加密的固定长度输出的过程。哈希并不等同于加密方法,因为无法解密哈希值来获取原始数据。事实上哈希是一种单向加密函数。

有了哈希函数,就可以将互联网上的数据以固定长度字符串的形式来保存。其中一种方法就是 SHA-256(安全哈希算法-256 位),SHA-256 是 SHA-1 的后继者,SHA-1 的输出是 160 位的。

幸运哈希游戏系统开发搭建,规则模式定制,欢迎随时打扰小编薇芯:hkkf5566



哈希是如何应用在区块链中的?

在区块链中,每个区块中都有前一个区块的哈希值,前一个区块叫作当前区块的父区块。由于每个区块都有前一个区块的哈希值,当修改当前区块的任意数据都会导致区块的哈希值发生变化,这会对前一个区块产生影响,因为其中含有前一个区块的地址。

比如,当前有两个区块,一个是当前区块,一个是父区块。当前区块中有父区块的地址,如果需要修改当前区块的数据,就需要对父区块链进行修改。如果只有两个区块就比较好修改数据,但事实上区块链上有很多的区块。

截至 2020 年 1 月 24 日 12:32,一共有 614272 个区块,第 614272 个区块的哈希值为 00000000000000000007a6be31011560f1e3abe8f125e356a31db6051753334e。如果想要修改第 614272 个区块的数据,那么 614271 区块的哈希地址就会发生改变,但是修改所有 614271 个区块的哈希值是不可能的,因此区块链中数据的不可篡改和可信赖的。区块链的第一个区块叫作 Genesis(创始)区块。

研究人员对该过程进行了可视化:



如果对输入产生小的修改,都可能会导致输出产生大的改变。

哈希是区块链技术和不可篡改和潜力的核心基础和最重要的方面。哈希维护了记录和查看数据的真实性,区块链的完整性也是这样的。

这也是区块链技术最重要的技术特征的一部分,只有理解了哈希才能了解区块链不可篡改性的潜力和价值。

Merkle Tree(马尔科夫树)是什么?

当有大量数据需要验证时,就需要消耗大量的内存来存储和确保安全,这个过程很难。但是有了马尔科夫树(Merkle tree),就可以轻易解决这些问题。

马尔科夫树是区块链技术的基础,在该结构中,可以很容易地在大量数据中找出哪些数据发生了变化,整个数据验证的过程非常高效。比特币和以太坊中都使用了马尔科夫树。



从上图可以看出,所有的交易都在底部,最顶部的哈希值叫作 Root hash 或 Merkle root(马尔科夫根)。

如上图所示,有 4 个交易 A、B、C、D。A 和 B 哈希后会形成一个哈希值,C 和 D 会形成另一个哈希值,AB 的哈希结果和 CD 哈希结果会组合来形成一个新的哈希值——Root hash 或 Merkle RootABCD。

Root hash 有所有交易的信息。马尔科夫树会重复计算节点对的哈希值,直到只剩下一个哈希值,就是 Root hash。

Merkle tree 是一个二叉树,所以需要偶数个叶子结点,如果交易数是奇数,那么最后一个哈希值会复制一次来创建偶数个叶子节点。



如上图所示,可以看出奇数值的交易数中有复制的交易进行了哈希,表明 Merkle tree 会计算奇数的叶子树。

所有交易数据会总结成一个 Root hash,保存在区块头(block header)中。数据中有任何改变,整个哈希值就会变化,如果哈希值变化了,Merkle root 就会发生变化。Merkle tree 可以帮助维护数据的完整性。

Merkle tree 的另一个好处是如果想要了解特定交易的状态,无需下载整个区块链,只需要请求竖直证明(vertical proof)和树的特定分支,验证一个特定的交易分支。

用户头像

Geek_acdf7b

关注

还未添加个人签名 2022.05.23 加入

还未添加个人简介

评论

发布
暂无评论
什么是区块哈希?哈希游戏开发技术原理方案(源码搭建)_Geek_acdf7b_InfoQ写作社区