区块链中的哈希是什么?区块链哈希指南

  • getblock
  • 发布于 2024-03-01 23:18
  • 阅读 25

本文深入探讨了区块链中哈希的概念,解释了哈希在区块链安全中的作用。文章详细介绍了哈希的工作原理、哈希函数,以及哈希在交易识别、区块安全和共识机制中的应用。此外,还提及了不同的哈希算法及其在不同区块链项目中的应用。

文章封面

在本篇博客文章中,我们将重新审视区块链的基本概念,了解它是如何从内部进行保护的。

由于密码学和区块链中的大部分安全性都来自密码学哈希函数,因此深入研究这个概念总是值得的。

哈希区块链:重点

由于其独特的属性,哈希对于 P2P 网络至关重要,它不仅用于验证数据,还用于保持整个网络的安全和防止篡改。

  • 哈希是将任何类型的数据输入算法,获得对该数据唯一的输出的过程;
  • 在此过程中使用了多种旨在加密数据的算法——哈希函数;
  • 它简化了数据验证和输入数据中任何更改的检测;
  • 哈希使数据更容易和更快地验证,然后在去中心化网络中安全地存储。

让我们一点一点地分解哈希的工作原理,以及它如何应用于区块链并帮助保护数据。

什么是区块链中的哈希?

哈希是通用密码学的一部分,更具体地说,是将任何数据类型格式化为固定长度输出的过程。

给定数据集(通常是字符串)的哈希是一个唯一值,理想情况下,该值仅由该数据集产生。

example_of_a_hash_value

区块链哈希示例

哈希是在区块链中保持防篡改能力的核心方法。

区块链哈希如何工作

让我们讨论哈希的一些独特品质,以更好地理解它为什么以及如何保护区块链安全,并证明存储数据的真实性。

  • 生成的输出与提交的数据没有明显的关联:

仅通过哈希值来尝试生成原始数据是非常不切实际的。尝试逆转这个过程需要巨大的计算资源。

  • 特定输入每次都会产生相同的输出:

如果原始数据的任何一个位出于任何原因发生更改,哈希值也会发生更改——这是一个检测源数据或文件是否被篡改的快速方法。

  • 不应有两个不同的输入产生相同的哈希值:

这种称为抗冲突性的属性是区块链哈希函数的关键要求。虽然不能保证绝对不可能发生冲突,但它可以确保查找冲突需要计算上不可行的资源。

  • 无论输入大小如何,输出大小都是固定的:

这简化了数据处理,因为哈希值总是占用固定的空间量,使其易于管理和计算。

  • 快速执行:

算法完成不需要很长时间,这加快了各种计算任务,特别是那些涉及大型数据集或频繁数据比较的任务。

总而言之,创建哈希的过程旨在快速实现,但对于查找原始输入来说,速度很慢且资源密集。

什么是哈希函数?

一种密码学算法,它接受一个输入,通过某些轮次的操作,并产生一种特定的输出,称为哈希函数。

how_hashing_works_the_scheme

哈希函数示例

有多种算法,每种算法都有其自己的结构和操作,从而导致输入数据的处理和转换为哈希值的方式有所不同。

例如,不同的函数可以产生不同长度的输出,通常以位为单位进行测量。

SHA-256 是迄今为止区块链技术中使用最广泛的算法。下面提供了用户和开发人员在某些情况下可能遇到的一些区块链哈希函数的列表。

算法 哈希值(位) 用例
SHA-256 256 编码交易、区块头和各种密码学操作
SHA-512 512 需要更多的计算资源;在优先考虑安全性和抵抗密码学攻击的协议中实施
Keccak256 256 在以太坊中用于哈希验证区块、交易和智能合约代码
RIPEMD-160 160 通常与 SHA-256 一起用于比特币等加密货币的地址生成
Blake2 8–512 用于去中心化存储解决方案,例如 IPFS(InterPlanetary File System),用于内容寻址

某些函数可能特定于某些协议或新兴技术,从而导致它们在生态系统中的使用和接受度有所不同。

哈希在区块链中是如何使用的?

哈希函数几乎参与了加密货币网络的每个方面。虽然实际上不可能列出所有的用例,但我们将按照交易的生命周期来剖析哈希的作用。

1. 交易识别

在包含在网络中之前,每笔交易都会被分配一个唯一的标识符。此哈希是通过将交易数据(包括发送者、接收者、金额等)提交给协议采用的算法来生成的。

transaction_hash_example

图片来自 Etherescan

计算完成后,它将包含在下一个区块中,并成为账本的一部分。

2. 保护区块

区块头(包括有关区块及其内容的信息)使用相同的算法进行哈希处理。

让我们通过直接调用 ETH 节点 来直接查看一个以太坊区块的内部:

1234567891011
curl --location --request POST 'https://go.getblock.io/<access-token>\--header 'Content-Type: application/json' \--data-raw ‘{    "jsonrpc": "2.0",    "method": "eth_getBlockByHash",    "params": [        "0x29fa42e9aeab0ac75049300ac7d8a390b34350c771c44e0e9aeed2b089e5e2c9",        false    ],    "id": "getblock.io"}

每个区块都包含对前一个区块的引用,称为“哈希指针”或“父哈希”,它是根据存储在该前一个区块中的数据生成的。

retrieving_a_block_hash

这意味着更改区块中的任何数据都必须更改其哈希,从而影响后续区块的标识符。

这种级联效应在整个区块链中持续存在,使得篡改历史记录变得异常困难。

3. 增强共识

在像比特币这样的工作量证明网络中,哈希函数用于计算区块头的值,作为挖矿过程的一部分。

矿工搜索一个称为 nonce 的特定数字,计算随机哈希值,直到找到与协议规定的某些标准匹配的哈希值。

此过程需要大量的电力和计算能力,因此可以防止攻击并增强对网络运行的信任。

注意:智能合约可以使用其哈希验证数据真实性和完整性,而无需直接进行链上存储,类似于 NFT 元数据存储在 IPFS 上,而仅将其哈希发送到区块链的方式。在我们的 IPFS 指南 中进一步探索。

总结

哈希在区块链中的应用范围比仅仅是交易或区块识别和验证更广泛。基于相同的原则,它减少了存储需求而不会丢失任何数据,有助于验证部署到网络的智能合约的完整性等等,最终使加密货币网络能够抵抗操纵。

想要深入了解?借助可信赖的节点提供商,访问区块链数据变得毫不费力且即时。立即加入 GetBlock,免费访问以太坊、比特币和 Solana RPC,或探索 50 多个其他网络。让我们的工具指导你完成这段旅程!

常见问题解答

  • 尽管从理论上讲是可能的,但两个不同的数据输入生成相同值的可能性极低。但是,概率可能会受到所选哈希函数的影响。

  • 在加密货币网络中,信息被组织成区块并通过哈希链接,任何修改此数据的尝试都会破坏互连结构,从而揭示更改。此功能可防止篡改数据。

  • 对于账本中的每个区块,都有一个对紧接在它之前的区块的引用,称为“指针”,它本质上是前一个区块的哈希,该哈希是从它包含的全部数据范围派生的。

还有其他问题?联系 chevron-right

  • 原文链接: getblock.io/blog/what-is...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
getblock
getblock
江湖只有他的大名,没有他的介绍。