title: 区块链技术:架构及进展 总结归纳
1 引言
传统数据库
- 传统的关系型数据库管理系统、NoSQL数据库管理系统
- 单一机构进行管理和维护
- 单一机构对所有数据拥有绝对的控制权
- 其他机构无法完整了解数据更新过程
- 无法信任数据库中的数据
- 在多个机构协作模式下,中心化的数据库管理系统始终存在信任问题
区块链
- 是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库
- 能够将传统单方维护的仅涉及自己业务的多个孤立数据库整合在一起,分布式存储在多方共同维护地多节点上,任何一方都无法完全控制这些数据
- 只按照严格地规则和共识进行更新,从而实现了
- 可信的多方间的信息共享和监督
- 避免繁琐的人工对账
- 提高业务处理效率
- 降低交易成本
- 只按照严格地规则和共识进行更新,从而实现了
- 解决数据可信问题所使用的技术
- P2P技术
- 非对称加密
- 共识机制
- 块链结构
- 通过应用区块链技术,无需借助任何第三方可信机构,互不了解、互不信任的多方可实现可信、对等的价值传输
比特币 BitCoin
- 时间:2008年
- 作者:中本聪(Satoshi Nakamoto)
- 区块链源自于比特币的底层技术
- 可以在没有任何权威中介机构统筹的情况下,互不信任的人可以直接用比特币进行支付。
以太坊 Etherenum
- 时间:2013年12月
- 作者:Buterin
- 可基于内置的以太币(Ether)实现数字货币交易
- 提供图灵完备的编程语言以编写智能合约(smart contract)
- 首次将智能合约应用到区块链
- 愿景:创建一个永不停止、无审查、自动维护的去中心化的世界计算机
超级账本 Hyperledger
- 时间:2015年12月
- 作者:Linux基金会
- 开源区块链项目
- 旨在发展跨行业的商业区块链平台
- 提供
- Fabric
- 最受关注
- 专门针对于企业级区块链应用设计
- 引入成员管理服务
- Sawtooth
- Burrow
- Fabric
Corda
- 时间:2016年4月
- 作者: R3公司
- R3联盟:花旗银行、汇丰银行、德意志银行、法国兴业银行等80多家金融机构和监管成员
- 面向金融机构定制设计的分布式账本平台
- 受区块链启发的去中心化数据库,而不是一个传统的区块链平台
- 反对区块链中每个结点拥有全部数据
- 注重保障数据仅对交易双方及监管可见的交易隐私性
BigchainDB
- 时间:2016年2月
- 作者:BigchainDB公司
- 可扩展的区块链数据库
- 高吞吐量、低延迟、大容量、丰富的查询和权限等分布式数据优点
- 去中心化、不可篡改、资产传输等区块链特性
- 被称为在分布式数据库中加入区块链特性
- 具有分布式数据库的优点
- 底层数据库选用了RethinkDB
ChainSQL
- 时间:2017年1月
- 作者:国内的众享比特团队
- 号称全球首个基于区块链技术的数据库应用平台ChainSQL
- 基于插件式管理,底层支持SQLite3、MySQL、PostgreSQL等关系数据库
TrustSQL
- 时间:2017年4月
- 作者:腾讯
- 致力于提供企业级区块链基础设施及区块链云服务
- 支持
- 自适应共识机制
- 4000TPS交易吞吐量
- 秒级交易确认
- Select、Insert两种SQL语句
区块链平台分类(准入机制)
区块链平台可分为公有链、联盟链两类。
- 公有链
- 所有的节点可自由地加入或退出
- 节点通常是匿名
- 联盟链
- 节点必须经过授权才可加入
- 需要提供成员管理服务以对节点身份进行审核
表1 区块链平台对比
区块链平台 | 准入机制 | 数据模型 | 共识算法 | 智能合约语言 | 底层数据库 | 数字货币 |
---|---|---|---|---|---|---|
Bitcoin | 公有链 | 基于交易 | PoW | 基于栈的脚本 | LevelDB | 比特币 |
Ethereum | 公有链 | 基于账户 | PoW/PoS | Solidity/Serpent | LevelDB | 以太币 |
Hyeprledger Fabric | 联盟链 | 基于账户 | PBFT/SBFT | Go/Java | LevelDB/CouchDB | - |
Hyperledger Sawtooth | 公有链/联盟链 | 基于账户 | PoET | Python | - | - |
Corda | 联盟链 | 基于交易 | Raft | Java/Kotlin | 常用关系型数据库 | - |
Ripple | 联盟链 | 基于账户 | RPCA | - | RocksDB/SQLite | 瑞波币 |
BigchainDB | 联盟链 | 基于交易 | Quorum Voting | Crypto-Conditions | Rethink/MongoDB | - |
TrustSQL | 联盟链 | 基于账户 | BFT-Raft/PBFT | JS | MySQL/MariaDB | - |
数据库概述
- 数据库最初发展的原点是文件系统,为了满足以银行为代表的金融机构的业务需求,引发关系数据库领域中的关系模型、事务处理、查询优化等三大成就,产生一系列关系数据库产品
- 随着互联网行业的快速发展,非结构化数据的数据量已经远超结构化数据的数据量,从而引发了NoSQL数据库系统的发展,产生了一系列的NoSQL数据库产品。
- 如今,随着去中介的共享经济的发展,区块链作为一种去中心化的分布式数据库,解决了可信的价值传输问题,因此将成为共享经济业务的理想数据库平台。
2 区块链体系架构
图1 区块链体系架构
区块链平台整体上可划分为五个层次
- 网络层
- 共识层
- 数据层
- 智能合约层
- 应用层
层次 | 比特币 | 以太坊 | Hyperledger Fabric |
---|---|---|---|
应用层 | 比特币交易 | Dapp\以太币交易 | 企业级区块链应用 |
智能合约层 编程语言 |
Script | Solidity | Serprent |
智能合约层 沙盒环境 |
- | EVM | Docker |
数据层 数据结构 |
Merkle树/区块链表 | Merkle Patricia树/区块链表 | Merkle Bucket树/区块链表 |
数据层 数据模型 |
基于交易 | 基于账户 | 基于账户 |
数据层 区块存储 |
文件存储 | LevelDB | 文件存储 |
共识层 | PoW | PoW/Pos | PBFT/SBFT |
网络层 | TCP-based P2P | TCP-based P2P | HTTP/2-head P2P |
2.1 网络层
- 2001年,提出将P2P技术与数据库进行联合研究
- 早期P2P数据库没有预定全局模式,不能适应网络变化而查询到完整的结果集,因而不适合企业级应用
- 基于P2P的区块链
- 可实现数字资产交易类的金融应用
- 区块链网络中没有中心节点,任意两个节点间可直接进行交易,任何时刻每个节点也可自由加入或推出网络
- 因此,区块链平台通常选择完全分布式且可容忍单点故障的P2P协议作为网路传输协议
- 区块链网络节点具有平等、自治、分布等特性
- 所有节点以扁平拓扑结构相互连通,不存在任何中心化的权威节点和层级结构,每个节点均拥有路由发现、广播交易、广播区块、发现新节点等功能
- 区块链网络的P2P协议主要用于节点间传输交易数据和区块数据
- 比特币和以太坊的P2P协议基于TCP协议实现
- Hyperledger Fabric的P2P协议基于HTTP/2协议实现
- 在区块链网路中,节点时刻监听网络中广播的数据,当接收到相邻节点发来的新交易和新区快时
- 验证这些交易和区块是否有效
- 交易中的数字签名
- 区块中的工作量证明
- 只有验证通过的交易和区块才会被处理和转发,以防止无效数据的继续传播
- 新交易被加入正在构建的区块,新区块被链接到区块链
- 验证这些交易和区块是否有效
2.2 共识层
- 基于证明机制的共识通常适用于节点自由进出的共有链
- 比特币与以太坊始用PoW机制
- 基于投票机制的共识通常适用于节点授权加入的联盟链
- Hyperledger Fabri使用PBFT
分布式数据库
- 主要使用Paxos和Raft算法解决分布式一致性问题
- 这些数据库都由单一机构管理维护
- 所有节点都是可信的
- 算法只支持崩溃容错(Crash Fault-Tolerant, CFT)
区块链共识层
- 多方共同管理维护
- 网络节点可由任何一方提供,部分节点可能并不可信,因而需要支持更为复杂的拜占庭容错(Buzantine Fault-Tolerant, BFT)
解决拜占庭将军问题算法
假设在总共n个节点的网络中至多包含f个不可信节点
同步通讯
对于同步通讯且可靠网络,拜占庭问题能够在n≥3f+1的条件下被解决
异步通信
- Fisher、Lynch和Paterson证明确定性的共识机制无法容忍任何节点失败
- Castro和Loskov提出Practical Byzantine Fault Tolerance(PBFT)
- 将拜占庭协议的复杂度从指数级降低到多项式级别,使拜占庭协议在分布式系统应用成为可能。
- Kotla等人提出了Zyzzyva
- 认为网络节点在绝大部分时间都处于正常状态,无需在每个请求都达成一致后再执行,而只需在发生错误后再达成一致
- Kwon提出Tendermint
- 在按节点计票的基础上
- 对每张投票分配了不同的权重,重要节点的投票可分配较高的权重
- 若投票权重超过2/3,即认为可达成共识
- 仅通过少数重要节点达成共识会显著减少网络中广播的消息数
- 在基于数字货币的应用中,权重也可对应为用户的持币量,从而实现类似权益证明
- 在按节点计票的基础上