1 区块链介绍
1.1 区块链技术形成
1.1.1 起源
在比特币诞生之时,技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或者称分布式账本技术。
1.1.2 定义
简称BT(Blockchain technology),也称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录,同时数据不可篡改。
1.1.3 理解
把数据库比喻为一个账本,一次记账的行为就是一次数据库的读写;当产生一个数据时,在一段时间内谁最快拿到记账权的人,将由这个人来记账,然后把这个账本信息发给整个系统里的其它所有人,所有人达成共识时,本次记账有效,最终在账本上的数据谁也无权修改。
1.2 区块链技术发展
1.2.1 区块链1.0
以比特币为代表的去中心化虚拟货币,是与转账、汇款和数字化支付相关的密码学货币应用,主要以公有链方式存在。
1.2.2 区块链2.0
被广泛应用于各个金融领域,不只是单纯的虚拟货币,如股票、债券、期货、贷款、抵押、产权、智能财产和智能合约,主要以公有链、联盟链方式存在。
1.2.3 区块链3.0
被应用到除金融以外的各个领域,不再需要第三方信任认证机构的前提下,实现信息的交换和共享,达到人与人之间的信任,变革生产关系;主要以公有链、联盟链和私有链方式存在。
1.3 区块链技术基本概念
1.3.1 理解
区块链从字面上理解:数据记录在区块中,通过一定的算法把区块连成一个链。
1.3.2 核心概念
-
交易(Transaction)
-
区块(Block)
-
链(Chain)
1.4 区块链技术原理
每一次交易,都需要对账本状态进行一次改变,生成一个区块,需要所有人进行确认,达成全员共识时,该区块才生效。区块链通过哈希(Hash)算法,生成一串字符串,保存在区块的头部中,一个区块通过指向上一个Hash值,加入到区块链中;Hash算法是一种加密算法,指对原始信息进行特定的转换运算,换算成对应的加密值(称为Hash值);是一种单向的加密方式,加密后的密文不可逆推,只有加密过程,没有解密过程;区块链中使用SHA-256算法对区块进行加密。
1.5 区块链工作过程
-
交易产生
-
交易广播
-
节点计算
-
获取记账权
-
记账权广播
-
验证区块
-
完成记账
1.6 区块链开发平台分类
1.6.1 公有链平台
主要以以太坊为主的平台,可以在该类平台上进行代币的发行和根据各种模块搭建应用。
1.6.2 联盟链平台
主要以超级账本为主的开源系统,该类开源系统提供完善的区块链底层技术,开发者只要在其框架下进行二次开发,根据自身需求编写智能合约,通过SDK接口访问区块中的数据,实现具体的区块链业务场景。
2 超级账本(Hyperledger)介绍
2.1 超级账本起源
2.1.1 起源
开放式账本项目(Open Ledger Project)是超级账本(Hyperledger)前身,由Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,在2015年底IBM宣布加入到开放式账本项目(Open Ledger Project)后,该项目更名为超级账本(Hyperledger)。
2.1.2 目前
2016年12月1日,超级账本项目(Hyperledger Project)开源联盟技术指导委员会(TSC)宣布成立TWG China 中国技术工作组,促进超级账本当中的各国成员与中国贡献者和技术用户之间的交流,目前中国区成员有百度、万达、小米、华为、招商银行、民生银行等。
2.2 超级账本简介
2.2.1 定义
超级账本(Hyperledger)是推动区块链跨行业应用的开源项目的总称,组织成员可以发起新的区块链项目,加入到超级账本项目(Hyperledger)中,但需要遵循Hyperledger的生命周期。
2.2.2 流程
Hyperledger的生命周期分为五个阶段,分别为Proposal(提案)、Incubation(孵化)、Active(活跃)、Deprecated(过时)、End of Life(结束)。
2.2.3 项目
超级账本(Hyperledger)有Fabric、Sawtooth、Iroha、Blockchain Explorer、Cello、Indy、Composer、Burrow八大顶级项目,目前提到超级账本(Hyperledger)默认指Fabric。
3 Fabric介绍
3.1 Fabric简介
3.1.1 定义
Fabric是一个提供模块化分布式账本解决方案的框架。
3.1.2 交易流程
3.2 Fabric关键技术
-
帐本(Ledger)
-
智能合约(Smart contract)
-
通道(Channel)
-
节点(Peer)
-
排序(Orderer)
-
接口(SDK)
3.2.1 帐本(Ledger)
Fabric帐本(Ledger)是一系列有序和防篡改的状态转换的记录,结构由一个区块链构成,并将不可变的、有序的记录存放在区块中;同时包含一个状态数据库来记录当前的状态,账本的当前状态信息是链交易日志中记录过的所有键的最新值,由于当前状态表示的是通道已知的所有键的最新值,由此也被称为世界状态。
3.2.2 智能合约(Smart contract)
智能合约又称为链码,是在区块链上运行的一段代码,是应用系统与区块链底层交互的中间件,通过智能合约可以实现各种复杂的应用。
3.2.3 通道(Channel)
通道是两个节点(Peer)或多个节点之间信息通信的私有空间,在通道内的交易的数据与通道外隔绝,保证通道内数据的安全 Fabric是多通道设计,系统可以创建多条通道,某个节点(Peer)可以加入到不同的通道中,在每个通道中有自身的创世区块和实例化智能合约(Smart contract) 每个通道都有属于自己的锚节点,通过锚节点可以与其它通道进行信息交互,但本身通道内的账本不会通过一个通道传到另一个通道上,通道对账本是分离的。
3.2.4 节点(Peer)
节点(Peer)是区块链的交易处理和账本维护的主体,主要负责参与共识过程和通过执行链码(chaincode)实现对账本的读写操作。
节点(Peer)根据功能不同分为背书节点(Endorser peer)和提交节点(Committer peer),根据通讯不同分为锚节点(Anchor peer)和主节点(Leading peer)。
3.2.5 排序(Orderer)
排序(Orderer)指对区块链网络中不同通道产生的交易进行排序,并广播给节点(Peer)。排序(Orderer)是以可插拔组件的方式实现,目前分为SOLO和Kafka两种类型。 SOLO:仅有一个Orderer服务节点负责接收交易信息进行排序。
Kafka:是由Apache软件基金会开发的一个开源流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,可以配置多个排序节点集群方式。
3.2.6 接口(SDK)
Fabric SDK提供调用账本(Ledger)、智能合约(Smart contract)、通道(Channel)、节点(Peer)、排序(Orderer)等接口,方便用第三方应用程序的开发,大大扩展了Fabric的应用场景。