是否总能找到目标哈希的随机数?

Is it always possible to find a nonce for target hash?

我想知道在区块链中挖掘区块时是否总能找到目标哈希的随机数?因为随机数,最大。 32 位,只能有 2^32 个不同的可能值。如果我们没有得到任何随机数的目标哈希怎么办?

如今,随机数只是修改生成区块哈希的一部分。正如您所指出的,由于 nonce 只有 32 位,以今天的难度,不足以生成有效的块哈希。因此,矿工也可能会修改 coinbase 交易(有时称为 extranonce)、区块版本、merkle 树和区块时间戳。另见 ASIC BOOST

  1. 修改一个区块的时间戳,这里是实践Ntime Rolling. But it is not that sufficient now since a block will not be accepted if it's timestamp is not in a period(about 3 hours) of time, see timestamp.

  2. Add/remove一些交易或改变交易的顺序只要它们仍然是拓扑顺序(如果交易A花费交易B的输出之一,那么B必须先于A在交易列表中)

  3. 更改币基交易。 coinbase txinput 的 prevout 脚本是一个 2 到 100 字节的任意字节数组。这个脚本不会被执行,所以你可以放任何你想要的数据。请注意,它必须以正确推送块高度的字节开始,请参见 bip34.

所以基本上你可以说,结合以上所有这些,总能找到一个有效的随机数。