区块链中的哈希到底是什么?
什么是哈希?
哈希是将任意长的输入编程加密的固定长度输出的过程。哈希并不等同于加密方法,因为无法解密哈希值来获取原始数据。事实上哈希是一种单向加密函数。
With the hash function,the data on the Internet can be saved in the form of a fixed length string.One method is SHA-256(secure hash algorithm-256 bits).SHA-256 is the successor of SHA-1,and the output of SHA-1 is 160 bits.Lucky hash game system development and construction,rule mode customization,
哈希是区块链技术和不可篡改和潜力的核心基础和最重要的方面。哈希维护了记录和查看数据的真实性,区块链的完整性也是这样的。
这也是区块链技术最重要的技术特征的一部分,只有理解了哈希才能了解区块链不可篡改性的潜力和价值。
1.确定性如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。
2.散列碰撞(collision)散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同。
3.不可逆性一个哈希值对应无数个明文,理论上你并不知道哪个是。“船长,如果一样东西你知道在哪里,还算不算丢了。”“不算。”“好的,那您的酒壶没有丢。”
4.混淆特性输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。
Merkle Tree(马尔科夫树)是什么?
当有大量数据需要验证时,就需要消耗大量的内存来存储和确保安全,这个过程很难。但是有了马尔科夫树(Merkle tree),就可以轻易解决这些问题。
马尔科夫树是区块链技术的基础,在该结构中,可以很容易地在大量数据中找出哪些数据发生了变化,整个数据验证的过程非常高效。比特币和以太坊中都使用了马尔科夫树。
所有的交易都在底部,最顶部的哈希值叫作Root hash或Merkle root(马尔科夫根)。
Root hash有所有交易的信息。马尔科夫树会重复计算节点对的哈希值,直到只剩下一个哈希值,就是Root hash。
Merkle tree是一个二叉树,所以需要偶数个叶子结点,如果交易数是奇数,那么最后一个哈希值会复制一次来创建偶数个叶子节点。
可以看出奇数值的交易数中有复制的交易进行了哈希,表明Merkle tree会计算奇数的叶子树。
所有交易数据会总结成一个Root hash,保存在区块头(block header)中。数据中有任何改变,整个哈希值就会变化,如果哈希值变化了,Merkle root就会发生变化。Merkle tree可以帮助维护数据的完整性。