每个区块包括一些或所有近期交易、前一个区块的引用、以及其他数据。它还包括一个挖矿难度的答案-该答案对每个区块是唯一的。新区块如果没有正确答案,不能被发送到网络中-“挖矿”的过程本质上是在竞争中 “解决”当前区块。每个区块中的数学问题难以解决,但是一旦发现了一个有效解,其他网络节点很容易验证这个解的正确性,对于给定的区块可能有多个有效解-但对于要解决的区块来说只需一个解。
因为每解决一个区块,都会得到新产生的比特币奖励,每个区块包含一个记录,记录中的比特币地址是有权获得比特币奖励的地址。这个纪录被称为生产交易、或者coinbase交易,它经常是每个区块的第一个交易。每个块区生产的比特币数量是50个,每产生21万个区块后减少一半(时间大约是4年)。
发送者在网络中广播比特币交易,所有试图解决区块的矿工节点,收集了这些交易记录,把它们加到矿工节点正在解决的区块中。
挖矿难度由比特币网络自动调整,使之实现平均每小时解决6个区块的目标。每2016个区块(大约两周)后,所有客户端把新区块的实际数目与目标数量相比较,并且按照差异的百分比调整目标HASH值,来增加(或降低)产生区块的难度。
因为所有区块包含前一个区块的引用,现存的所有区块的集合可以说是形成了一条链,然而,块链有可能产生暂时分叉-举个例子,如果两个矿工同时为一个区块产生不同的有效解,两者相互不知。P2P网络会在一段短时间内消除这些分叉,该链仅有一个分支存活。
客户端接受“最长”块链作为有效链,整条块链的“长度”是指具有最大难度的链,而不是指具有最多区块数量的块链,可防止某些人创建大量低难度区块,故意使块链分叉,并且让网络接受它成为“最长”的块链。