区块链的密码学知识科普:公钥加密货币、加密货币Hash散列、Merkle树等等
什么是密码学?
密码学是开发防止第三方查看私人数据的学科。现代密码学结合了数学、计算机科学、物理、工程等学科。一些重要术语的定义如下:
- 加密货币:将文本编码成不可读的格式。
- 解密:将混乱的信息转换为其原始形式。
- Cipher密码:一种用于执行加密货币或解密的算法,通常是一组可履行的、定义明确的步骤。
公钥加密货币
-
Alice使用Bob的公钥来加密货币消息; -
Alice将加密货币后的消息发送给Bob,如果被第三方拦截,那么第三方只能看到随机的数字和字母; -
Bob使用他的私钥来解密和读取收到的消息;
来源:Wellesley College
加密货币Hash散列
加密货币Hash散列是区块链技术的另一个基本要素,它直接保障了区块链的不可变性,这是区块链最重要的特性之一。
Hash是计算机科学中的一个术语,意思是输入任意长度的字符串,然后产生一个固定长度的输出。无论某个Hash散列函数的输入是3个字符还是10个字符,其输出的长度始终是相同的。
加密货币Hash散列函数具有以下几个关键特性:
-
确定性:无论给函数多少次特定的输入,它都始终会得到相同的输出; -
不可逆性:无法根据函数的输出来确定输入的内容; -
抗冲击性:没有任何两个输入可以得到相同的输出;
一直以来,这就是保证区块链中数据具有不可变性的原因。如果有人想在前面的区块中哪怕更改一位数据,那么不仅会改变该区块数据的Hash散列输出,还会改变后面的每一个区块。网络上的矿工和节点会立刻注意到所产生的Hash散列与其链的版本不匹配,并拒绝此次更改。
供参考:比特币使用的是名为SHA-256的加密货币Hash 散列函数,Ethereum使用的是名为 keccak256的加密货币Hash 散列函数。
Merkle 树
上面的图是区块链的一种简化版本,它省略了一些重要信息。图中有三个向上的箭头,表示每个区块的交易都被储存在一个Merkle根中,而这就是Merkle树的根节点。
树是计算机科学中的一个术语,代表以分层树状结构储存数据,其中,数据位被称为节点。有一个根(顶)节点,下面连接着“子”节点(Child Node),子节点本身也有子节点,依此类推。下图展示了一个典型的树型数据结构:
Tutorials Point
来源:Shaan Ray
每个叶节点表示交易A、B、C和D的数据的Hash散列,然后将Hash A 和Hash B组合并求散列以生成Hash( A,B),并且以相同的方式生成Hash( C,D)。最终,Hash ( AB)和Hash ( CD)被组合到一起求散列Hash ( Hash ( A,B), Hash ( C,D)),最终形成树的Merkle根。
那么,为什么Merkle树对区块链技术来说是十分重要呢?
使用Merkle根并且应用加密货币Hash散列函数的性质,可以快速判断给定区块中的交易是否已被篡改,并识别正在被篡改的特定交易。
如果已确认区块中的单个交易已经被更改,那么Merkle根最终将与“正确的” Merkle根截然不同,并且改动是十分显而易见的。
Merkle树还允许用户在不下载整个区块链的情况下验证他们的的交易是否被包含在区块中。简单支付证明技术可以扫扫描Merkle树中的所有分支,并检查某个特定的交易是否已经被散列存储到该树中。如果不是在每个区块中包含一个Merkle根,区块链技术是不可能实现这种效率水平的。
下K线走势图示的是在区块链中有4笔交易的Merkle树 (在此图中,Tx_Root表示Merkle根)
来源:Block Geeks
结语
本文来源于:CSDN区块链大本营