【问题标题】:Bitcoin blockchain rookie question: how is nonce (the secret number added to each block) generated?比特币区块链菜鸟问题:nonce(每个区块添加的秘密数字)是如何产生的?
【发布时间】:2021-11-10 02:22:38
【问题描述】:

我的理解是,比特币未成年人本质上都是在寻找一个秘密数字,该数字被添加到每个交易块中,使猜测工作变得更加困难。一旦插入哈希函数,区块和秘密数字就会一起生成正确的哈希值,找到正确哈希值的人将获得奖励。

我的问题是:这个秘密号码是从哪里来的?谁来决定?

【问题讨论】:

  • 我投票结束这个问题,因为它与编程无关。它可能与 Bitcoin 网站上的主题有关,但请务必先阅读他们的帮助中心。

标签: blockchain bitcoin


【解决方案1】:

比特币协议的算法根据difficulty 参数生成这个“秘密”哈希数。查看有关 700670 区块的信息。矿工试图猜测这个数字(有 19 个前导零)以获得奖励并在分类帐中记录“合法”交易。

00000000000000000004b2d8909041ea8c0bd224b7cfa6c03d202fc7682eb93d

【讨论】:

  • 我知道随机数(或者更确切地说是它的哈希 + 块)是矿工正在寻找的。我不明白的是,nonce 是如何让所有人都不知道的,包括创建者?如果有人建立了这个系统并创建了一个协议,这个人不能回溯每个 nonce 是什么吗?
  • 由于其(随机数)随机化的性质。
  • 你无法预测随机数生成器会生成什么数字。同样,您无法预测nonce 将是什么。
  • @dyxdyx 前一个块哈希和随机数的组合结果下一个块哈希。矿工必须找到这样一个随机数,结果哈希将有 19 个前导零。由于 SHA-256 算法的“质量”,这纯粹是运气。首先,有一个数学证明,如果你使用 SHA-256 哈希和 19 个前导零,你不能计算或至少近似原始值和 nonce。例如,假设黑客使用 SHA-256 密码哈希窃取了数据库。即使他知道密码哈希,他也无法“猜测”密码的原始值。
  • @dyxdyx 与比特币随机数相同。矿工和黑客都可能需要几个月的时间来“猜测”正确的随机数或原始密码。您将需要花费如此多的 CPU 能量,以至于“猜测”密码或挖掘比特币的操作对于一名矿工和一名黑客来说变得非常昂贵。当然,如果有 100 万黑客联合起来,同时尝试从 SHA-256 哈希中猜出你的原始密码,其中一个最终会成功。矿工也是如此。如果您想在采矿中取得成功,请与其他矿工联合并分享利润:)
【解决方案2】:

这不是一个秘密号码

这是一个 256 位 SHA256 输出,表示为 64 字符哈希摘要

它是任何以指定数量的零开头的 64 字符哈希值,例如,如果比特币算法指定它必须以八个零开头,那么 00000000a16506ee98e8de04e91638d614546a116580c7d81d5807616cba8096 的 sha256 哈希摘要将挖掘该块,任何以八个或更多零将挖掘该块。

有多个正确答案,第一个猜对正确的答案挖块,获得奖励。

【讨论】:

    【解决方案3】:

    这个“秘密数字”或随机数是绝对随机的。 你可以选择任何你喜欢的随机数,任何数字。 根据正确哈希要求的难度,您可能需要千亿次尝试才能最终猜出正确的哈希。

    有一个数学证明,你尝试的任何 nonce 并不比任何其他的更好。否则 SHA-256 哈希算法很容易被破解。所以你只需要足够的 CPU 能力来尝试尽可能多的数字。

    附:当然,如果您尝试使用百万位数字,每个数字都有百万位数字,那么您的算法将太慢,我猜。

    所以如果我是一名矿工,我会从 0 开始,然后按自然顺序尝试任何可能的数字。数字的位数越少,算法应该越快。

    【讨论】:

      【解决方案4】:

      上一个区块哈希nonce的组合产生下一个区块哈希。矿工必须找到这样一个 nonce,结果哈希将有 19 个前导零。由于 SHA-256 算法的质量,这纯粹是运气。结果哈希必须具有的前导零越多,找到随机数就越难。 (例如,因为有 19 个前导零的数字比有 10 个前导零的数字要少得多)

      首先,有一个数学证明,如果你知道 SHA-256 具有 19 个前导零的散列和 前一个块散列,那么你不能计算或至少近似 nonce。您只能通过尝试任何类型的绝对随机数来“猜测”它。即使你知道 SHA-256 算法是如何实现的(这绝对是公开的资料,你很容易找到),这对你一点帮助也没有。 SHA-256 实际上是这样设计的,即使您知道 产生的哈希,您也无法恢复 原始值。您实际上可以在数学上证明没有公式可以找到甚至近似原始值。或者你可以相信数学家,他们证明了这一点。如果您可以信任这些数学家,或者自己证明,或者只是阅读并理解科学论文或书籍中的证明,那么您就可以自然而然地信任比特币数学

      比特币设计中,使用SHA-256散列算法:

      • r产生的哈希下一个块哈希
      • 原始值前一个区块哈希nonce的串联
      • 生成的哈希必须有 19 个前导零
      • 上一个区块哈希是一个已知值
      • nonce 是未知值,或 X

      再举一个例子,假设黑客使用 SHA-256 密码哈希s 窃取了数据库。他无法“猜测”密码的原始值,即使他知道密码哈希

      比特币 nonce 也是如此。矿工和黑客都可能需要几个月的时间来“猜测”正确的nonce原始密码。 (对于黑客来说,要成功实际上要困难得多,因为“原始密码值”只有一个可能,但是有非常多的数字有19个前导零

      在任何情况下,你都需要花费大量的 CPU 能量,以至于“猜测”密码或挖掘比特币的操作变得非常昂贵一名矿工和一名黑客。当然,如果 100 万黑客联合起来,同时尝试从 SHA-256 哈希中猜出你的原始密码(每个人都尝试不同的数字范围),那么其中一个最终会成功。矿工也是如此。如果你想在挖矿中获得成功,那就购买昂贵的硬件,与其他矿工联合起来分享利润:)

      【讨论】:

        猜你喜欢
        • 2019-11-08
        • 1970-01-01
        • 2018-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        相关资源
        最近更新 更多