在比特币系统中,有三个非常重要的数据结构,分别是交易、区块和区块链。
交易是最一个很重要的概念,其它都是为了确保交易可以被生成、能在网络中得以传播和通过验证,并最终添加入交易总账簿中。交易的本质是数据结构,为了方便对交易记录进行管理,设计了一个容器叫区块。区块是存储了大量交易信息数据结构。区块链则是一个从后向前连接的数据结构,可以被存储在数据中,在比特币中使用了Google的LevelDB数据库存储区块链元数据。区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块。
为了便于理解我们使用集装箱来进行类比。我们可以将交易理解为商品,而区块就是箱子,方便比特币系统进行交易数据的管理,区块链则是一节节连接在一起的集装箱。与集装箱不同的地方是区块之间首尾相连,而不是上下堆砌。区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块。
区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在其他区块之上。用栈来形象化表示区块依次堆叠这一概念后,我们便可以使用一些术语,例如:“高度”来表示区块与首区块之间的距离;以及“顶部”或“顶端”来表示最新添加的区块。
交易、区块和区块链就构成了区块链世界里的基本数据结构即比特币的总账簿。有了交易、区块及区块链这些概念,如果只把区块链当成一个数据库来看,使用这些概念我们就可以构造一个区块链系统了。我们可以用交易的数据结构存储交易数据(支票、博客等),通过区块打包交易数据,最后通过计算区块头哈希将区块连接起来,这就是我们通常说的区块链。
智能合约与事务都是存储在区块链上,与事务不同的地方是,智能合约是将代码存储在区块链上。由于比特币是非图灵完备的公链,不涉及智能合约,后面我们在讲其它公链再详细介绍。
由于区块链是去中心化的,怎样保证系统安全,防止欺诈交易,避免双重支付,双重支付是指多次花费同一笔比特币,这里面就引入了区块链技术里最重要的概念共识机制。
在比特币系统使用的是工作量证明机制(POW)。它的工作原理有点类似打麻将,四个矿工自发的组织在一起,通过掷骰子(碰撞一个随机数)确定谁来记账,谁获得了记账权谁就得到了相应的奖励,其它三个矿工对这笔账目进行确认。
为了保证系统的安全,共识机制在交易验证、交易打包到区块、区块组装到区块链以及选择那一条链的过程中都发挥了重要的作用,这也有效保证了系统从产生交易到上链整个过程的安全。
至此,一个区块链系统的基本架构我们就讲完了。当然为了保证系统不存在任何中心化服务器,我们还需要依托于P2P网络架构。由于P2P网络具有天生的伸缩性、去中心化和开放的特点,因此P2P也是区块链技术的基石。