简单来说,候选区块是挖掘节点(矿工)为了获得区块奖励而尝试挖掘的区块。因此,候选块可以被描述为将被网络验证或丢弃的临时块。矿工们相互竞争以验证下一个区块并将其添加到区块链中,但首先,他们必须创建一个候选区块来参与挖矿竞争。
候选区块是矿工通过从内存池中收集和组织多个未确认的交易来创建的。然后对交易进行哈希处理,形成 Merkle 树结构,最终产生 Merkle 根(或根哈希)。 Merkle 根是一个哈希值,代表该树之前的所有哈希值,因此也代表该特定区块中包含的所有交易。
根哈希值 - 以及前一个块的哈希值和一个称为随机数的随机数 - 然后被放入块的标头中。然后,矿工对块头进行哈希处理,根据这些组件(根哈希、前一个块的哈希和随机数)以及一些其他元素生成输出。结果输出是块哈希,并将作为新生成的块(候选块)的唯一标识符。
要被视为有效,输出(块哈希)必须以一定数量的零开头(小于由协议)。这意味着挖掘过程基于多次尝试(反复试验),因为挖掘节点必须使用不同的随机数值执行无数的哈希函数,直到最终生成有效的块哈希。产生的区块哈希证明矿工完成了工作(因此称为工作量证明)。
矿工找到有效的区块后块哈希,它们的候选块将被广播到网络的其余节点,这将验证哈希的真实性。如果一切顺利,候选区块将被记录到区块链中。此时,每个验证节点都会更新其区块链数据副本以反映最近开采的区块,矿工将获得区块奖励。