区块链总览 | Block Chain Overview

简化的比特币区块链

上图展现了一个简化版的区块链。一个或多个新的交易被收集到一起成为了一个区块(block)的交易数据部分。每个交易的副本都会被哈希,然后这些哈希被配对,被哈希,再配对,再哈希,直到只有一个哈希值,这就是 merkle 树的 merkle 根节点。

merkle 根节点存储在区块头。每个区块同时存储着上一个区块头的哈希值,从而将区块连接成链。这样确保了一个交易在没有对纪录其的区块及所有之后区块更改前是不可被更改的。

交易也是被链在一起的。比特币钱包给人的印象是聪(satoshis)从钱包发出再到钱包,然而比特币实际上是从一个交易到另一个交易。每笔交易花费着从之前的一笔或多笔交易中收到的聪,所以一笔交易的输入是上一笔交易的输出。

区块链总览 - 图2

一笔交易可以有多个输出,就好像同时发送给多个地址一样,但是在区块链中一笔交易的每个输出只能被当作输入使用一次。任何后续的引用都是被禁止的双花(一种将同一笔聪花费两次的尝试)。

输出与交易 id(TXIDs)绑定在一起,交易 id 是签名的交易的哈希值。

因为一笔交易的每个输出只能被花费一次,所以在区块链中的所有交易的输出可以被分类为已花费交易输出和未花费交易输出(UTXOs)。为了让支付有效,必须使用 UTXOs 作为输入。

除了 coinbase 交易(稍后描述)外,如果一笔交易的输出值超过了输入值,这笔交易将被拒绝,但是如果输入值大于输出值,那么其间的差值将会被创建包含该笔交易区块的比特币挖矿工认定为交易手续费。比如,在上图中,每笔交易的花费都比其输入的总和少 10,000 聪,显而易见的支付了 10,000 聪的交易手续费。