传统的数据库管理系统问题:
区块链是一种利用分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构建的一种去中心化、 不可篡改、 可追溯、 多方共同维护的分布式数据库(区块链本质上看成一种数据库,任何需要保存的信息,都可以写入区块链,也可以从里面读取)
区块链最早起源于比特币的设计,是比特币的底层技术和基础架构。
1、去中心化:由大量节点共同组成的一个点对点网络,不存在中心化的硬件或管理机构。在网络中,每一个节点的义务和权利都是均等的。系统中所有节点都参与数据的记录和验证,将计算结果通过分布式传播发送给各个节点。在部分节点遭受损坏的情况下,整个系统的运作并不会收到影响,相当于每个参与的节点都是“自中心”。
2、基于共识建立信任。区块链理论最大的颠覆性在于新的信用形成机制。在传统的互联网模式中,陌生人之间是通过可信任的第三方机构(如银行,国家)来建立信用和进行交易。 而区块链技术从根本上改变了中心化的信用创建方式,它运用了一套基于共识的数学算法,在机器之间建立“信任”网络,从而通过技术背书而非中心化信用。通过这种机制,参与方不必知道交易的对象是谁,更不需要借助第三方机构来进行交易背书或者担保验证,而只需要信任共同的算法就可以建立互信,通过算法为参与者创造信用、产生信任和达成共识。
3、信息不可篡改。区块链是基于时间戳形成的不可篡改、不可伪造的数据库。区块(完整历史) 与链(完整验证)相加便形成了时间戳。时间戳存储在网络中所执行的所有交易历史,可为每一笔数据提供检索和查找功能,并可借助区块链结构追本溯源,逐笔验证。每个参与者在记账并生成区块时都加上时间戳,并广播到全网节点,让每个参与节点都能获得一份完整数据库的拷贝,一旦信息经过验证添加到区块链上,就会永久的存储起来。根据“少数服从多数”原则,从概率上讲,要篡改历史信息,必须同时控制整个系统中超过50%的节点。因此区块链技术认为其系统的数据可靠性很高,且参与系统中的节点越多和计算能力越强,该系统中的数据安全性越高。
区块链,顾名思义,是由区块(Block)和链(Chain)组成的。
区块链技术是一种解决信任问题、降低信任成本的信息技术方案。通过区块链技术,互联网上的各个用户成为一个节点并相互连接起来,所有在此区块链架构上发布的内容都会在加密后被每一个节点接收并备份,换而言之每一个节点都可以查看历史上产生的任何数据。各节点将加密数据不断打包到区块中,再将区块发布到网络中,并按照时间顺序进行连接,生成永久、不可逆向的数据链,这便形成了一个公开透明的受全部用户的监督的区块链。
运行区块链的基本流程:
区块链特点: (1)去中心化。 (2)高可信。 (3)不可篡改。 (4)可追溯。 (5)高可用。
阶段一:寻值阶段
阶段二:提案阶段
Raft算法是一种和Paxos算法一样的分布式一致性协议。(Raft的优势就是容易理解和实现,可以少出错误~~)
Raft的工作模式是一个Leader和多个Follower模式,其安排了三种角色:
Raft算法分为两各阶段: 第一个阶段是选举领导人; 第二阶段是由领导人对其他节点对一致性的操作。
选举阶段:
传统分布式数据库主要使用 Paxos 和 Raft 算法解决分布式一致性问题,虽然它可以解决报文可能发生丢失和延时等问题,但面对拜占庭问题的时候,决策就可能混乱,即其假定系统中每个节点都是忠诚、不作恶的。
但这对于处于公有链上的,有着大量不可信任节点的分布式数据库来说是一种灾难,会遇到各类问题,比如拜占庭问题、女巫攻击问题等。
公有链的区块链共识算法主要包括: 工作量证明机制(Proof of Work, POW) 权益证明机制(Proof of Stake, POS)。 股份授权证明机制(Delegated Proof of Stake, DPOS)
工作量证明机制(PoW),其机制是通过工作量的大小来决定Leader,即工作量证明,被leader打包的区块可以获得整个网络的认可。工作量主要指算力,即计算设备每秒能进行哈希运算的次数。一台设备的算力在全网算力中所占的比重即由这台设备创建新区块(挖矿)的概率。PoW 机制可有效应对女巫攻击,其依靠分布式节点间的算力竞争来保证全网区块链数据的一致性和安全性。
PoW 机制将经济激励与共识过程相融合,促使更多节点参与挖矿并保持诚信,从而主动增强了网络的可靠性与安全性。
流程:
分叉问题:若多个区块同时被创建就会引起分叉问题。
解决方案:
为了适应硬件技术的快速发展及计算能力的不断提升,比特币每 2016 块就会调整一次难度目标,以控制区块的平均生成时间(10 分钟) 始终保持不变。
股权证明和工作量证明一样,是一种用于公有链的共识算法,其根据矿工在区块链中拥有的股权(数字货币量) 来决定其挖矿的难度。
Casper共识是以太坊基于 PoS 机制提出。Casper 以智能合约的方式实现,根据抵押的以太币数量和时间,成比例的分配区块的记账权和奖励。与 PoS 机制不同,Casper 还引入了惩罚措施,一旦发现某个矿工作弊,其抵押的所有以太币将全被罚没,参与共识和出块的权利也会被取消。
基于Casper 共识的以太坊一个区块的挖矿时间为4秒,而比特币则需要10分钟。
股份授权证明机制(DPOS)采用“股份投票”的方式决定谁来生成区块。它的原理是让每一个持有“股份”的人进行投票,由此产生N个超级节点或者矿池,而这N个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。
EOS使用DPOS共识机制
实用拜占庭容错机制(PBFT)是一种状态机副本复制算法,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。在保证活性和安全性的前提下提供了(n-1)/3的容错性。
PBFT算法流程:
(1)公有链的共识算法,均需要“代价”作为支撑,比如工作量、股权。
(2)对于私有链来说,其和传统的分布式数据一样,采用paxos算法和Raft 算法即可。
(3)“因地制宜”最重要,根据不同的场景采用不同的共识算法解决问题。
智能合约是用程序语言编写的商业合约,在预定条件满足时,能够自动强制的执行合同条款,实现“代码即法律” 的目标。
(1)依照商业逻辑编写完智能合约代码后,需要将其发布到区块链网络节点上。 (2)调用涉及到修改操作,需要先在全网达成共识,之后修改操作会被记录在区块链,修改结果会被存在状态数据库。调用查询操作,则无需共识,也不需被记录在区块链上。 (3)智能合约支持合约内部事件的注册与通知机制,外部应用与智能合约间的关系非常类似于传统数据库应用与存储过程间的关系,存储过程运行于数据库管理系统之中,访问关系数据库数据,而智能合约运行于区块链系统之中,访问区块和状态数据。
智能合约是运行在区块链上的一段计算机程序,其扩展了区块链的功能,丰富了区块链的上层应用。依照商业逻辑编写完智能合约代码后,需要将其发布到区块链网络节点上。在以太坊中,部署后的合约存放在区块链上,每次被调用时才被以太坊虚拟机(EVM)加载运行;在 Hyperledger Fabric 中,部署后的合约被打包成 Docker 镜像,每个节点基于该镜像启动一个新的 Docker 容器并执行合约中的初始化方法,然后等待被调用。外部应用通过调用智能合约来实现各种交易,如果调用涉及到修改操作,需要先在全网达成共识,之后修改操作会被记录在区块链,修改结果会被存在状态数据库(例如,转账交易的转账金额会被记录到区块链,账户余额的增减会被应用到状态数据库)。如果调用仅包含查询操作,则无需共识,也不需被记录在区块链上。智能合约还支持合约内部事件的注册与通知机制,从而可主动向外部应用通知合约内部发生的关键事件。智能合约目前只能访问链内数据,无法主动监听并响应
区块链想要真正做到更深度化的应用和普及,关键就是要解决交易的吞吐量和交易的速度问题。区块链(公有链)的吞吐量和交易速度一直是区块链发展和应用的关键技术瓶颈。交易数量增加导致比特币区块已经接近1MB容量的92%,如果你经常浏览区块链相关的信息,你一定知道比特币交易开始变得拥堵,在社区中对于是扩容还是侧链的讨论喋喋不休。你肯定也知道就连以太坊也因《CryptoKitties》这款养猫游戏没能逃掉网络拥堵的命运。
现有的主流的可扩展性解决方案可分为三种侧链技术(SideChains)、分片技术(Sharing)和有向无环图(DAG)。
侧链(Side Chains)是通过在外部搭建一个新的交易通道嫁接到主链,从而解决扩容问题。 侧链的一个典型就是比特币的闪电网络(Lighting Network):A和B两人可以把比特币放到一个多重签名钱包中锁定(链下),然后进行交易签名更改双方各自能取回的比特币数量。交易参与方可以随时关闭交易通道,最后一笔经过签名且包含最新余额动态的交易最终将会被广播并写入比特币区块链。
分片其实是一种传统数据库的技术,它将大型数据库分成更小、更快、更容易管理的部分。分片技术可以理解为在将主链在内部进行切分。 现在用了分片技术的主要有以太坊的sharing和EOS的Region。
以太坊依据账户地址将全网划分为多个相对独立的分片, 每个分片内维护一条独立子链, 用户可自行选择在哪个分片执行自己的交易, 每个节点根据自身的计算和存储能力选择加入一到多个分片, 并处理和存储这些分片上的交易。
全网节点分工配合以覆盖到所有分片, 如果需要访问本节点没有的交易数据, 则利用轻客户端技术从其它分片节点读取。 全网节点可并行的处理和存储不同的交易数据, 使得全网交易处理能力不再受限于单一节点, 单一节点也不需处理、 存储全部数据。
有向无环图(Directed Acyclic Graph,DAG)是一种数据结构,不同于传统区块链的底层数据结构Blockchain设计,其通过数据单元之间的引用来完成交易的确认。
流程:
目前采用DAG作为存储结构的代表项目有dagcoin、Byteball、Iota。
区块链虽有去中心化的特性,但很多线上业务的纠纷无法离开中心来解决。因此区块链的真正价值在于促进各行各业的中心化机构之间达成共识,构建联盟,形成多个中心组成的商业生态圈,这样的生态系统突出了中心的职能,大大简化了中心化机构运营成本。