最近我一直在深入研究区块链的基础知识,我意识到很多人其实并不真正理解什么是随机数加密(nonce crypto),以及它为什么如此重要。让我把它拆开讲清楚,因为如果你想理解挖矿是怎么运作的,这一点确实非常关键。



所以基本上,nonce 就是一个只使用一次的数字。听起来很简单,对吧?但它实际上是工作量证明(proof-of-work)挖矿的支柱。你可以把它想象成一个加密谜题,矿工们会不断地调整它的取值。他们不断重复地改变这个数字,直到找到一个满足特定要求的哈希值——通常是要求哈希结果前面有一定数量的前导零。就像是在锁上尝试不同的组合,直到某个组合“咔哒”一声打开为止。

有趣的地方在这里。矿工们会把待处理的交易拿来,把它们打包成一个区块,加入一个 nonce,然后使用 SHA-256 对全部内容进行哈希。如果这个哈希值不符合网络的难度目标,他们就会递增 nonce 再试一次。这个反复试验的过程会进行数千次,直到有人找到正确的组合。找到之后,这个区块就会被加入到区块链中。也就是说,比特币就是通过这种方式来保障网络安全的。

nonce 之所以对安全如此重要,是因为它让篡改变得极其昂贵。假如有人想要修改过去的某笔交易,他们必须重新计算该区块对应的 nonce,然后还要对其之后的每一个区块都重新计算。高昂的计算成本使其在实践中几乎不可能完成。这就是区块链实现不可篡改性的关键所在。

nonce 还能防御特定的攻击路径。双重支付(double-spending)几乎变得不可能,因为每一笔交易都会通过这个过程被唯一地确认。Sybil 攻击也同样能被抵御,因为攻击者需要海量的计算能力,才能在规模化场景下伪造身份。nonce 本质上就给攻击贴上了“价格标签”。

难度会自动调整,以维持大致一致的出块时间。当更多矿工加入网络时,难度会提高,需要更强的算力才能找到符合要求的 nonce。当矿工离开时,难度会降低,从而保证区块仍然大约每 10 分钟到来一次。这确实是个相当巧妙的系统。

nonce 不只是比特币才有。你在各种加密协议中到处都能看到它们,用来防止重放攻击;在哈希函数中用于改变输出;在编程中用来确保数据的唯一性。但理解“随机数加密(nonce crypto)”到底是什么,能帮助你更好地理解为什么工作量证明(proof-of-work)如此安全。

人们经常混淆的一点,是哈希(hash)和 nonce 之间的区别。哈希是输出,是数据的“指纹”。nonce 是输入变量,矿工们会操纵它来改变这枚“指纹”。它们共同协作。

不过,针对 nonce 确实也存在真实的攻击。nonce 重用攻击(nonce reuse attack)发生在有人在加密运算中重复使用同一个 nonce 时,可能会危及安全。可预测 nonce 攻击(predictable nonce attack)则是在 nonce 遵循某种模式、攻击者可以提前预判的情况下发生。最佳防御是正确的随机数生成,以及拒绝重用 nonce 的协议。加密库也需要定期更新。

如果你认真想理解区块链,那么掌握“随机数加密(nonce crypto)”是什么是基础。它是让整个安全模型能够运转的机制。很不可思议的是:概念上如此简单,却在实际中能发挥如此强大的作用。
BTC-1.53%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论