目录

一、内容简介

二、知识点

hash 函数

区块数据结构

hash 函数特性

hash 函数和区块链的联系

三、什么是 hash 函数,区块链用 hash 函数做什么

1、hash 函数

2、哈希函数的特性

(1)输入可任意长度,输出是固定长度

(2)计算速度快

(3)防碰撞

(4)隐藏性或者单向性 

(5)谜题友好 puzzlefriendly

3、区块链与 hash 函数的关系


一、内容简介

区块链主要是一种链式数据结构,hash 函数加密数据,确保了区块链数据的不可篡改等特性,在区块链中占据了很重要的地位。

二、知识点

  • hash 函数

  • 区块数据结构

  • hash 函数特性

  • hash 函数和区块链的联系

三、什么是 hash 函数,区块链用 hash 函数做什么

1、hash 函数

单向散列函数 one-wayhash function,通常被称为哈希函数。比特币领域中提到的 哈希函数 是指特定算法支持的 hash 函数,一般使用 SHA-256 算法。这个函数的特点是对于不同的输入 X, 都可以得到一个固定长度的 256bit 的二进制 Y 值, Y = hash(X),如图所示:

2、哈希函数的特性

(1)输入可任意长度,输出是固定长度

哈希函数不用知道输入信息代表的是什么意思,也无所谓信息的长度有多长,只要输入hash函数出来的都是固定长度的比特值。输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。

(2)计算速度快

(3)防碰撞

对于不同的输入 X, 一定要产生不同的值 Y。 不管怎样 hash 函数肯定会存在碰撞,这里就涉及碰撞概率问题。

当 Y 是 22 个字符串长度时,300万亿次结算结果里面,碰撞概率是 1000 亿分之 1。随着 Y 长度增加,碰撞概率会更低, SHA-256 是 64 位字符串,因此发生碰撞概率极低。

(4)隐藏性或者单向性 

hash 函数的计算过程是单向不可逆的,可以通过 X 计算得到 一个 Y,但是反过来很难通过 Y 去反推出来 X 的值。区块链需要保证用户的隐私和安全,所以 hash 函数在这方面的作用非常突出。

(5)谜题友好 puzzlefriendly

Y = H(X),这个说的是看 X 不知道 H 是什么。也就是说知道了 X,没法一眼看出来输出的 H(X) 是什么。因此知道输入信息 X 也不知道哈希值 Y 是多少,虽然可以很快计算出来,但是无法预判,反向计算也是很困难的。

3、区块链与 hash 函数的关系

在比特币网络中的计算机上都保留着一条区块链表,每个区块的生成的生成都要填写 hash 值。

这个 hash 值的输入包括 区块编号,区块的多条交易数据,前一区块的 hash 值,一个随机数。

通过这种链式结构,在知道一个区块的情况下,就可以一直追溯到第一个区块,这样形成的链条就是区块链。

通过以上介绍,我们知道了 hash 函数在区块链结构中的重要作用,如果说分布式账本节点从架构上保证了比特币账本的安全性,那么 hash 链表则是从数据结构层面保证了账本的不可篡改性。