总之,哈希算法将任何长度的字符串映射到较短的固定长度。使用比特币SHA-256摘要算法给出任何长度的输入256bit输出。哈希算法在加密货币中的应用是什么?
加密哈希函数
数据结构
挖矿
加密哈希函数:
加密哈希函数具有以下特点:
确定性:无论在同一个哈希函数中分析多少次,输入同一个A总能得到相同的输出h(A)。
高效运算:计算哈希值的过程是有效的。
抗原像攻击(隐匿性):给定输出结果h(A),逆推输入A,计算不可行。
抗碰撞性(抗弱碰撞性):任何给定A和B,找到满足B≠A且h(A)=h(B)的B,计算不可行。
影响细微变化:任何输入端的细微变化都会对哈希函数的输出结果产生重大影响。
谜题友好性:任意给定Hash码Y和输入值x找个满足感h(k|x)=Y的k值在计算上是不可行的。
加密哈希函数对区块链安全块链的安全有很大帮助。
数据结构:
了解新手如何炒硬币视频区块链有两种数据结构非常重要:链表和哈希指针。
链表:链表是一个数据块,如下图所示:
链表中的每个块都用一个指针指向另一个块。
指针:指针是包含其他变量地址的变量。因此,就像它的名字一样,指针指向其他变量。
哈希指针:哈希指针不仅有其他变量地址,还有变量中数据的哈希值。那么,这对区块链有什么帮助呢?
如下图所示:
区块链本质上是一个链表,每个新区块都包含一个哈希指针。该指针指向前一个和所有数据的哈希值。区块链具有不可改变的特点(immutability)伟大的特点。
如何实现区块链不可改变?
假设有人试图篡改1号块中的数据。请记住,加密哈希函数的一个重要特征是,任何输入端的细微变化都会严重影响哈希函数的输出结果。
然后,即使有人试图微妙地重写1号块中的数据,也会对存储在2号块中的1号块的哈希值发生巨大的变化。接下来,这将导致2号块的哈希值发生变化,从而影响存储在3号块中的哈希值。以此类推,整个区块链上的数据最终会发生变化。几乎不可能通过冻结整个链来修改数据。因此,区块链被认定为不可篡改。
每个块都有自己的梅克尔根(Merkle
Root)。现在,正如你所知,每个块都包含多笔交易。如果这些交易是线性存储的,那么在所有交易中寻找特定交易的过程将变得非常漫长。
这就是为什么我们使用梅克尔树。
在梅克尔树中,所有的个人交易都可以通过哈希算法追溯到同一个。这使得搜索变得非常容易。因此,如果我们想在块中获得特定的数据,我们可以直接有线性访问的情况下搜索梅克尔树中的哈希值。
挖矿
加密谜题被用来挖掘新块,所以哈希算法仍然非常重要。其工作原理是调整难度值的设置。然后,一个被命名为nonce在新区块的哈希值中加入随机字符串,然后再加入哈希值。然后,检查它是否低于设定的难度值。如果低于,新区块将添加到链中,矿主将获得奖励。如果不低于,矿主将继续修改字符串nouce直到出现低于难度值水平的值。
正如你所看到的,哈希算法是区块链和加密经济学的重要组成部分。