比特币共识机制的第三个步骤是网络上的每个节点独立验证新区块。当新发现的区块在网络中传播时,每个节点在将其继续发送到它的对等节点前,会进行一系列的测试工作,以验证其有效性。结果就是,只有有效的区块才会被传播到网络当中。独立验证也保证了诚实矿工挖出的新区块能被区块链接纳,并赢得奖励。而那些不诚实的矿工,其区块将被拒绝,不仅失去奖励,也浪费了寻找工作量证明解的努力,甚至连电力成本都无法得到补偿。
当一个节点接收到新区块时,它将依据一个长长的规则列表对其进行验证,如果不符合任一要求,区块将被拒绝。这些规则可以在比特币核心客户端的函数CheckBlock和CheckBlockHeader中查到,主要包括如下内容。
●区块数据结构的语法正确。
●区块头哈希比目标难度小(确保满足工作量证明要求)。
●区块的时间戳早于未来2小时(允许时间错误)。
●区块大小在允许范围内。
●第一个交易(只有第一个)是一个铸币交易。
●区块中的所有交易有效,通过交易检查列表验证(参看本章中“独立交易验证”)。
每个新区块均接受所有节点的独立验证,这样确保了矿工不能进行欺诈。在前面几节中,我们研究了矿工们如何创建一笔特殊交易,以获得在此区块中产生的新比特币和交易费。为什么矿工不能随意创建一个交易给自己发送1000比特币,而只能获得正确的奖励金额呢?原因在于每个节点都是基于相同的规则来验证区块的。一个无效的铸币交易会导致整个区块无效,并被其他节点拒绝,永远无法成为账本的一部分。矿工必须创建完美的区块,基于所有节点接受的公共规则,并且根据正确的工作量证明方法进行挖矿。为了完成这个证明,他们已经投入大量的电力挖矿,如果涉嫌欺诈,所有的电力投入和挖矿努力都将付之东流。这就是为什么独立验证会成为去中心化共识的重要组成部分。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。