哈希算法在区块链中的应用(哈希算法在区块链中的应用)
简言之,哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。比特币则是使用SHA-256摘要算法对任意长度的输入给出的是256bit的输出。那么,加密货币中哈希算法的应用有哪些?加密哈希函数数据
简言之,哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。比特币则是使用SHA-256摘要算法对任意长度的输入给出的是256bit的输出。那么,加密货币中哈希算法的应用有哪些?
加密哈希函数
数据结构
挖矿
加密哈希函数:
一个加密哈希函数有如下特性:
确定性 :无论在同一个哈希函数中解析多少次,输入同一个A总是能得到相同的输出h(A)。
高效操作:计算哈希值的过程是高效的。
抗原图像攻击(隐藏):对于给定的输出h(A),推导输入A在计算上是不可行的.
抗碰撞性(弱抗碰撞性):对于任意给定的A和B,寻找满足B≠A且h(A)=h(B)的B在计算上是不可行的。
细微变化的影响:输入端的任何细微变化都会对哈希函数的输出结果产生剧烈的影响。
难题友好性:对于任意给定的哈希码Y和输入值X,要找到一个满足H (k | x) = Y的k值在计算上是不可行的
密码哈希函数对区块链和挖掘的安全性有很大的帮助。
数据结构:
有两种数据结构对于理解区块链非常重要:链表和哈希指针。
链表:链表是按顺序连接的数据块,如下图:
在链表中的每个区块都通过一个指针指向另一个区块。
指针:指针是包含其他变量地址的变量。因此,正如其名,指针就是指向其他变量的变量。
哈希指针:哈希指针不仅有其他变量的地址,还有该变量中数据的哈希值。那么,这对区块链而言有何帮助呢?
区块链的构成如下图所示:
区块链本质上是一个链表,其中的每个新区块都包含一个哈希指针。指针指向前一区块及其含有的所有数据的哈希值。借此特性,区块链拥有了不可更改性(immutability)的伟大特质。
区块链如何实现其不可更改性?
假设在上面的图表中,有人尝试篡改1号区块中的数据。请记住加密哈希函数的一个重要特质是任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。
那么,即使有人试图稍微重写块1中的数据,存储在块2中的块1的哈希值也会发生很大的变化。接下来,这将导致块2的散列值改变,从而影响存储在块3中的散列值。以此类推,最终整个区块链的数据都会改变。通过冻结整个链来修改数据几乎是不可能的。因此,区块链被认为是防篡改的。
每个块都有自己的Merkle根。现在,正如您已经知道的,每个块包含多个事务。如果这些事务是线性存储的,那么在所有事务中找到一个特定事务的过程将变得极其漫长。
这就是我们使用梅克尔树的原因。
在梅克尔树中,所有个体交易通过哈希算法都能向上追溯至同一个根。这就使得搜索变得非常容易。因此,如果想要在区块里获取某一特定的数据,我们可以直接通过梅克尔树里的哈希值来进行搜索,而不用进行线性访问。
挖矿
加密谜题被用来挖掘新的区块,因此哈希算法仍然至关重要。其工作原理是调整难度值的设定。随后,一个被命名为“nonce”的随机字符串被添加到新区块的哈希值上,然后被再次哈希。接着,再来检验其是否低于已设定的难度值水平。如果低于,那么产生的新区块会被添加至链上,而负责挖矿的矿工就会获得奖励。如果没有低于,则矿工继续修改随即字符串“nouce”,直至低于难度值水平的值出现。
正如你所见,哈希算法是区块链和加密经济学中一个至关重要的部分。
加密哈希函数
数据结构
挖矿
加密哈希函数:
一个加密哈希函数有如下特性:
确定性 :无论在同一个哈希函数中解析多少次,输入同一个A总是能得到相同的输出h(A)。
高效操作:计算哈希值的过程是高效的。
抗原图像攻击(隐藏):对于给定的输出h(A),推导输入A在计算上是不可行的.
抗碰撞性(弱抗碰撞性):对于任意给定的A和B,寻找满足B≠A且h(A)=h(B)的B在计算上是不可行的。
细微变化的影响:输入端的任何细微变化都会对哈希函数的输出结果产生剧烈的影响。
难题友好性:对于任意给定的哈希码Y和输入值X,要找到一个满足H (k | x) = Y的k值在计算上是不可行的
密码哈希函数对区块链和挖掘的安全性有很大的帮助。
数据结构:
有两种数据结构对于理解区块链非常重要:链表和哈希指针。
链表:链表是按顺序连接的数据块,如下图:
在链表中的每个区块都通过一个指针指向另一个区块。
指针:指针是包含其他变量地址的变量。因此,正如其名,指针就是指向其他变量的变量。
哈希指针:哈希指针不仅有其他变量的地址,还有该变量中数据的哈希值。那么,这对区块链而言有何帮助呢?
区块链的构成如下图所示:
区块链本质上是一个链表,其中的每个新区块都包含一个哈希指针。指针指向前一区块及其含有的所有数据的哈希值。借此特性,区块链拥有了不可更改性(immutability)的伟大特质。
区块链如何实现其不可更改性?
假设在上面的图表中,有人尝试篡改1号区块中的数据。请记住加密哈希函数的一个重要特质是任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。
那么,即使有人试图稍微重写块1中的数据,存储在块2中的块1的哈希值也会发生很大的变化。接下来,这将导致块2的散列值改变,从而影响存储在块3中的散列值。以此类推,最终整个区块链的数据都会改变。通过冻结整个链来修改数据几乎是不可能的。因此,区块链被认为是防篡改的。
每个块都有自己的Merkle根。现在,正如您已经知道的,每个块包含多个事务。如果这些事务是线性存储的,那么在所有事务中找到一个特定事务的过程将变得极其漫长。
这就是我们使用梅克尔树的原因。
在梅克尔树中,所有个体交易通过哈希算法都能向上追溯至同一个根。这就使得搜索变得非常容易。因此,如果想要在区块里获取某一特定的数据,我们可以直接通过梅克尔树里的哈希值来进行搜索,而不用进行线性访问。
挖矿
加密谜题被用来挖掘新的区块,因此哈希算法仍然至关重要。其工作原理是调整难度值的设定。随后,一个被命名为“nonce”的随机字符串被添加到新区块的哈希值上,然后被再次哈希。接着,再来检验其是否低于已设定的难度值水平。如果低于,那么产生的新区块会被添加至链上,而负责挖矿的矿工就会获得奖励。如果没有低于,则矿工继续修改随即字符串“nouce”,直至低于难度值水平的值出现。
正如你所见,哈希算法是区块链和加密经济学中一个至关重要的部分。