Mining Target 是验证工作量证明时用于区块头哈希的非负数值阈值。有效网络目标必须为正且符合规则,哈希不能超过它。目标越低,寻找越困难。
Bitcoin Core v29.0 在工作量证明检查中拒绝大于解码目标的哈希。因此条件是 hash ≤ target,而不只是严格小于。比较的是整个区块头哈希的数值,并非只有 nonce。 [Bitcoin Core v29.0 — Proof-of-work checks]
不同数值的哈希可以拥有相同数量的前导零。其余数字及整个数值与目标的关系同样重要。零可以帮助理解稀有程度,但不能代替完整的 hash ≤ target 比较。 [Bitcoin Core v29.0 — Proof-of-work checks]
nBits 字段为 32 位,目标则在 256 位空间中解释。编码包含指数及带符号位的系数。例如 0x04123456 解码为 0x12345600;这只是编码示例,并非网络当前要求的目标。 [Bitcoin Core v29.0 — Compact arithmetic]
在 80 字节区块头中,nBits 序列化为四个 little-endian 字节。因此数值 0x1d00ffff 对应 ff ff 00 1d。读取数据时,不要把字节顺序与显示数字的位序混淆。 [Bitcoin Developer Reference — Block headers and nBits]
Bitcoin Core v29.0 的 DeriveTarget 会拒绝负目标、零、溢出以及超过网络 powLimit 的值。因此随意增大 nBits 不够。成功解开紧凑编码并不能证明目标有效。 [Bitcoin Core v29.0 — Proof-of-work checks]
上下文验证根据前一区块和网络规则,将 nBits 与 GetNextWorkRequired 比较。不一致会产生 bad-diffbits。即使哈希低于自行选择的更容易目标,也不能使区块头中的错误 nBits 合法。 [Bitcoin Core v29.0 — Contextual and block validation]
在均匀 256 位哈希模型及允许目标 T 下,每次尝试的概率为 p = (T + 1) / 2^256:零到 T(含两端)的值均可接受。这由比较规则推导而来;目标本身不决定算力,也不决定下一区块出现的准确时间。 [Bitcoin Core v29.0 — Proof-of-work checks]
除区块头外,Bitcoin Core 还检查交易根、coinbase、区块限制及交易有效性。满足正确目标是必要条件,却不能代替这些检查。低哈希无法修复无效的区块内容。 [Bitcoin Core v29.0 — Contextual and block validation]
要获得更完整的理解,请将本词条与以下词条结合阅读: Share Difficulty, Proof of Work, Nonce, 区块头. 反向关联还来自: Nonce, Mining Share, Share Difficulty.