新交易不断地从用户钱包和其他应用流入比特币网络。当比特币网络上的节点看到这些交易时,会先将它们放到节点自行维护的一个临时的未经验证的交易池中。当矿工构建一个新区块时, 会将这些交易从这个交易池中拿出来放到一个新区块中,然后通过尝试解决一个难题(也叫工作量证明)以证明这个新区块的有效性。挖矿过程的细节会在“挖矿简介”一节中详加描述。
这些交易被加进新区块时,以交易费用和其它的一些规则进行排序。矿工一旦从网络上收到一个新区块, 就知道自己在这个区块上的解题竞赛已经输掉了,然后马上开始下一个新区块的挖矿。它会立刻将一些交易和最新那个区块的数字指纹放在一起开始构建下一个新区块,并开始工作量证明计算。每个矿工会在他的区块中包含一个特殊的交易,将新生成的比特币(当前每区块为12.5比特币)作为矿工费支付到他自己的比特币地址,再加上块中所有交易的交易费用的总和作为自己的报酬。如果他找到了使得新区块有效的解法,他就会得到这笔报酬,因为这个新区块被加入到了区块链总账中,他添加的这笔报酬交易也会变成可消费的。 参与矿池挖矿的Jing设置了他的软件,构建新区块时会将报酬地址设为整个矿池的地址。然后根据各自上一轮贡献的工作量将所得的报酬分给Jing和其他参与矿池挖矿的矿工。
Alice的交易被网络拿到后放进未验证交易池中。一旦被挖矿软件验证,它就被包含在由Jing的矿池生成的新区块(称为候选块)中。 参与该矿池的所有矿工立即开始计算候选块的工作证明。大约在Alice的钱包将这个交易发送出来五分钟后,Jing的ASIC矿机发现了新区块的正解并将这个新区块发布到网络上,一旦结果被其它矿机验证成功,它们就会立即开始下一个新区块的竞赛。
Jing的ASIC矿机发现了新区块的正解并将之发布为第277,316号区块,包含420个交易,包括Alice的交易。将Alice交易包含在区块中就算做对该交易的一次”确认”。
提示:你可以查看包含Alice交易记录的这个区块的信息。
{"blocks":[{"hash":"0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4","ver":2,"prev_block":"0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569","mrkl_root":"c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e","time":1388185914,"bits":419668748,"next_block":["000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"],"fee":9094928,"nonce":924591752,"n_tx":419,"size":218629,"block_index":277316,"main_chain":true,"height":277316,"weight":874516,"tx":[{"hash":"d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f","ver":1,"vin_sz":1,"vout_sz":1,"size":110,"weight":440,"fee":0,"relayed_by":"0.0.0.0","lock_time":0,"tx_index":1679323162382286,"double_spend":false,"time":1388185914,"block_index":277316,"block_height":277316,"inputs":[{"sequence":4294967295,"witness":"","script":"03443b0403858402062f503253482f","index":0,"prev_out":{"spent":true,"script":"","spending_outpoints":[{"tx_index":1679323162382286,"n":0}],"tx_index":0,"value":0,"n":4294967295,"type":0}}],"out":[{"type":0,"spent":true,"value":2509094928,"spending_outpoints":[{"tx_index":1582075375083783,"n":0}],"n":0,"tx_index":1679323162382286,"script":"2102aa970c592640d19de03ff6f329d6fd2eecb023263b9ba5d1b81c29b523da8b21ac","addr":"1MxTkeEP2PmHSMze5tUZ1hAV3YTKu2Gh1N"}]},{"hash":"b268b45c59b39d759614757718b9918caf0ba9d97c56f3b91956ff877c503fbe","ver":1,"vin_sz":1,"vout_sz":1,"size":223,"weight":892,"fee":0,"relayed_by":"0.0.0.0","lock_time":0,"tx_index":6693732561780714,"double_spend":false,"time":1388185914,"block_index":277316,"block_height":277316,"inputs":
...
大约19分钟后,第277,317号新区块诞生在另一个挖矿节点中。因为这个新区块是在包含Alice交易的第277,316号区块的上层(栈),在这个区块的基础上增加了更多的计算,因此就加强了这些交易的可信度。基于这个区块每产生一个新区块,对Alice这个交易来说就会增加了一次”确认”。当区块一个个堆上来时,这个交易被推翻的难度就会指数级增加,因此它在网络中越来越被信任。
在图2-9中,我们可以看到包含Alice的交易的第277,316号区块。在它之下有277,316个区块(包括0号区块),像链子 一样一个连着一个(区块链),一直连到0号区块,即创世区块。随着时间变长,这个区块链的高度也随之增长,每个区块和整个区块链的计算难度也随之增加。包含Alice的交易的区块后面形成的新区块使得信任度进一步增加,因为他们叠加了更多的计算在这个越来越长的链上。按惯例来说,一个区块获得六次以上“确认”时就被认为是不可撤销的了,因为要撤销和重建六个区块需要巨量的计算。在第10章我们会详细描述挖矿和信任建立的过程。

图2-9Alice的交易包括在区块277316