
在比特币协议中,最长的链被认为是绝对的正确。如果一个块不是最长链的一部分,那么它被称为是“孤块”。一个孤立的块是一个块,它也是合法的,但是发现的稍晚,或者是网络传输稍慢,而没有能成为最长的链的一部分。在比特币中,孤块没有意义,随后将被抛弃,发现这个孤块的矿工也拿不到采矿相关的奖励。
节点们持续地维护区块链同时也在生成数据块,但每次只有一个数据块能够被认可并继续往下延伸,其他被遗弃的数据块就是孤块。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。当然,试图扭转交易数据的算力攻击(需要足够的哈希算力)也能引发孤块。
区块是比特币中用来记录和确认交易信息的数据结构。它是由比特币系统中一些称为矿工的节点产生的,而矿工构造区块的过程被称为挖矿。主要可以分为区块头部和交易数据两大部分。在一笔交易被创建后,用户会通过点对点网络向全网广播这笔交易,而矿工们则会收集并验证这些交易数据,并将其中合法的交易信息存储在本地交易池中。在交易数目达到一定量后,矿工开始用这些交易数据构造区块。矿工首先会确定要产生的区块应该包含哪些交易数据,并计算交易数据的 Merkle值作为区块交易数据的校验。一般来说,矿工会尽可能多地优先选择交易费较高的交易,因为一旦矿工挖矿成功, 这些交易费都将由他获得。 随后,矿工会根据自己的挖矿协议以及前一个区块数据,填充区块头部的版本、前驱区块哈希值以及区块时间。随后,矿工会获取系统当前的难度值,填入 nBits 字段。这一数值是由系统设定用于调整挖矿难度的数值。一个合法区块的哈希必须符合难度值的要求,在后面介绍影响分叉产生因素时将详细解释这一数值。最后,矿工开始遍历随机数Nonce,试图获得哈希符合当前系统难度值的区块。这一步是挖矿环节最主要的工作。比特币挖矿采用 sha256 算法作为区块的哈希算法,这一算法没有明显的攻击策略和漏洞,矿工们只有通过暴力搜索来寻找符合系统难度值的区块哈希值,这要求矿工具有非常强大的计算能力。而在某些难度值较大的情况下,矿工甚至不得不去调整一些交易数据的组合,以获得更大的哈希搜索范围。
相关导航


一级市场/Primary Market

观察者效应

区块高度

流动性

云储存/Cloud Storage

场外交易
