主页 > imtoken钱包官网app下载 > 通往比特币的漫漫长路:哈希函数在区块链中的应用

通往比特币的漫漫长路:哈希函数在区块链中的应用

imtoken钱包官网app下载 2023-01-17 14:25:34

重大技术创新绝不是政府规划、设计或领导的结果。技术更新换代、创新进化,靠的是少数“先行者”的勇敢试错和市场自发的优胜劣汰机制。

——姚谦(中国人民银行数字货币研究所所长)

通往比特币的漫漫长路是Jeremy Clarek(康考迪亚学院信息系统工程助理教授)在《区块链技术驱动金融》一书的前言中使用的标题,本系列文章也是基于大纲《区块链技术驱动金融》,结合书本和我自己的理解,一般情况下,事物的发展需要经历五个阶段:开始、上升、高峰、下降、消亡,距离中本聪已经9年了中本聪在 2008 年发布比特币白皮书,货币探索的历史始于 1980 年代和 1990 年代,从 David Chaum 的盲签技术问世,区块链成为了家喻户晓的技术,ICO 接近野蛮生长,其发展也是一个漫长的伏笔和积累。我想在这个系列中探索的是区块链技术的悠久历史,从哈希在区块链中的应用开始。

首先,我们来谈谈区块链的结构。区块链的结构大致如下:

比特币哈希由谁产生

区块链是一个由哈希指针构成的 A 链表。所谓哈希指针,可以理解为一个数据向导,它不仅可以告诉你最后一个区块在哪里,还可以告诉你最后一个区块是什么样子的。一个区块记录了一段时间的交易,所以区块链记录了所有的交易,就像一个完整的历史交易账本,我们可以在当前账本的末尾追加新的数据,但是如果有人想篡改之前的交易,我们可以探测。要理解为什么区块链的数据结构是防篡改的,我们先来了解一下哈希函数。

哈希函数

哈希函数是具有以下属性的数学函数:

1.输入可以是任意大小的字符串

2.产生固定大小的输出

比特币哈希由谁产生

3.可以高效计算

在数学上,Addr = H(key),其中 key 是任意字符串,Addr 是等长的字符输出。区块链中使用的哈希函数具有三个附加属性,即1)抗碰撞性; 2)隐身; 3)益智友好。在本文中,我们首先介绍了抗碰撞特性。

防撞

如果找不到两个值,x和y,x不等于y,且H(x) = H(y),则称哈希函数H为耐碰撞性。

虽然找不到,但不代表不存在碰撞,只是说明发现碰撞的代价太高,概率太小,比如256位输出比特币哈希由谁产生,选2 ^256+1个不同的输入,至少存在一对H(x)=H(y)的x和y。

比特币哈希由谁产生

哈希函数抗碰撞的特性可以用来生成信息摘要,区块链中的数据向导——哈希指针利用这个来知道前一个区块“长什么样”,取前一个区块的哈希值作为哈希指针,通过验证前一个区块的哈希值是否等于该区块的哈希指针,可以判断该区块是否是前一个区块之后的节点。

现在我们转向区块链的防篡改机制,我们可以首先假设如果先前的交易数据发生更改会发生什么。假设当前有 m 个块,有人想要篡改第 n 个块的数据。由于第n个块的数据发生了变化,因为哈希函数具有抗碰撞性,我们可以得出结论,原来第n+1个块中记录的第n个块的哈希值和篡改后的第n个块的哈希值不会更长的比赛。我们可以通过检测区块的哈希值和下一个区块的哈希指针来检测篡改。当然,他可以不断改变第n+1个块的hash指针,那么第n+1个块的hash也会改变,所以他需要一直改变到第m个块,我们只需要记住n+1个块的hash即可第m个区块 如果希望指针不能被别人更改,那么更改可以保证整个区块链的数据安全、不可篡改。

除此之外,哈希指针在区块链中的应用还有一个地方,就是构建默克尔树。

默克尔树

比特币哈希由谁产生

默克尔树的结构如下:

在默克尔树的数据结构中,存储在上一层的父节点中,并且这个过程一直持续到最后到达树的根节点。

使用 Merkle 树,block visible 简洁地实现了成员资格证明。假设现在有人需要证明一个数据块属于一棵 Merkle 树,我们只需要记住根节点比特币哈希由谁产生,然后他需要向我们展示该数据块的信息以及哪个数据块通向 Merkle 根的数据块,我们可以忽略 Merkle 树的其余部分,只传递该分支的数据。

在区块链中,我们将交易数据构造成 Melk 数,然后将 Merkle 根的值记录在区块头中。这样,区块链节点只存储区块头信息,也可以实现正常交易。当需要详细的交易数据时,可以有针对性的下载。

比特币哈希由谁产生

Merkle 树是区块链的基本组成部分。虽然理论上当然可以有一个没有 Merkle 树的区块链,但你只需要创建直接包含每个交易的巨大区块头,但这样做无疑会导致潜在的问题。从长远来看,可扩展性挑战可能最终会出现在运行这些去信任区块链的最强大的计算机上。正是因为 Merkle 树,以太坊节点可以在所有计算机、笔记本电脑、智能手机,甚至是 Slock.it 生产的物联网设备上构建和运行。

现在,让我们更新区块链的结构以进一步完善它。

我们将块分为两部分,块头和块体。区块头存储了前一个区块的哈希值(即哈希指针)、交易的默克尔根等数据(稍后会详细介绍),详细的交易数据存储在块体中。

哈希函数与数字签名一起为加密货币奠定了基础,是使加密货币能够运行的双轮。我将在下一章介绍数字签名。