比特币源码分析--比特币架构
前面的一系列文章我们结合源码对比特币的主要模块进行了梳理和分析。本文我们将这些模块拼接起来,看看比特币的整体架构。
比特币的整体架构图如下:
(1)P2P网络层
完成P2P的组网,网络连接管理,节点状态的维护,为比特币提供数据传输服务;
(2)安全与共识层
这一层主要向上层提供安全与数据共识服务,保证比特币中的交易数据的安全与区块链(账本)的一致性,又可以细分成三个主要模块:
加密算法:提供各种加密算法,如SHA,ECDSA数据签名算法,hash算法以及Base58编码算法等等。
认证模块:merkle树用来快速验证交易是否包含在区块中;通过加密算法对交易进行签名,生成锁定和解锁脚本;脚本引擎负责解析并执行脚本;
共识模块:比特币中采用的是PoW。
(3)数据层
比特币中的数据,例如交易,区块,区块链等等。另外该层还包括了数据的存储,例如通过level db存储与加载区块链,内存交易池等。
(4)RPC
RPC服务端的实现,提供JSON API供客户端访问区块链 。
以上4层构成了bitcoind。
(5)应用层
各种比特币的应用,例如比特币核心提供的bitcoind client。该层主要是作为RPC客户端,通过JSON API与bitcoind交互,享受各种区块链的服务(查询交易信息、挖矿等等)。
从图中可以看出,区块链实际上并没有用到什么创新的技术,实际上用的还是密码学、共识算法、P2P等一些已有的技术,但是区块链巧妙的将这些已有技术组合起来,形成了一个能够在金融、物联网、医疗、教育等多个行业都能大显身手的新技术。