区块链底层设计Java实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 比特币架构

根据中本聪的论文“Bitcoin: A Peer-to-Peer Electronic Cash System”中对比特币系统的描述,我们可以整理出如图2-1所示的比特币系统架构。

图2-1 比特币系统架构

如图2-1所示,比特币系统分为6层,由下至上依次是存储层、数据层、网络层、共识层、RPC层、应用层。

其中,存储层主要用于存储比特币系统运行中的日志数据及区块链元数据,存储技术主要使用文件系统和LevelDB。

数据层主要用于处理比特币交易中的各类数据,如将数据打包成区块,将区块维护成链式结构,区块中内容的加密与哈希计算,区块内容的数字签名及增加时间戳印记,将交易数据构建成Merkle树,并计算Merkle树根节点的哈希值等。

区块构成的链有可能分叉,在比特币系统中,节点始终都将最长的链条视为正确的链条,并持续在其后增加新的区块。

网络层用于构建比特币底层的P2P网络,支持多节点动态加入和离开,对网络连接进行有效管理,为比特币数据传输和共识达成提供基础网络支持服务。

共识层主要采用了PoW(Proof Of Work)共识算法。在比特币系统中,每个节点都不断地计算一个随机数(Nonce),直到找到符合要求的随机数为止。在一定的时间段内,第一个找到符合条件的随机数将得到打包区块的权利,这构建了一个工作量证明机制。从PoW的角度,是不是发现PoW和分布式锁有异曲同工之妙呢?

RPC层实现了RPC服务,并提供JSON API供客户端访问区块链底层服务。

应用层主要承载各种比特币的应用,如比特币开源代码中提供了bitcoin client。该层主要是作为RPC客户端,通过JSON API与bitcoin底层交互。除此之外,比特币钱包及衍生应用都架设在应用层上。