目录
一、内容简介
二、知识点
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 链表则是从数据结构层面保证了账本的不可篡改性。