一步一步带你用超级账本fabric打造一个联盟链的应用

一步一步带你用超级账本fabric打造一个联盟链的应用

一步一步带你用超级账本fabric打造一个联盟链的应用

首先我们来通俗地说一下公共链、联盟链、私有链的区别,大家都知道区块链技术就是一个分布式的账本,那么公开链就是账本的信息内容是公开的,大家都能看到,联盟链就是只有一部分人看到账本,私有链就是只有自己能看到账本,其他人看不到。

一、联盟链的用处是什么?

传统的业务模型很难做到跨机构的交易被一个互信的机构监督执行。每个交易方都有自己独立的账本。发生交易时各自更改,造成账本同步的成本高昂且效率低下。仅有少数的中心系统,所以商业网络比较脆弱。联盟链提供了授权维护账本的机制,因此相对保证了数据的私密,公司作为上市主体,以盈利为目的,不可能所有的数据都公开。那么超级账本作为联盟链供企业使用比较合适。企业级区块链四大平台要素:1. 共享账本 2. 共识 3. 隐私和保密 4. 智能合约。 当前公链比如以太坊eos等其它三点都能满足,唯独隐私没法保证,另外效率普遍不高,没有最终确定性,又是被极客们主导的,不符合商业主流趋势,从而也限制了企业性质的应用。

企业级商用区块链网络比较适合使用联盟链和许可制。这样在一个限定的范围内,只有授权的节点和用户才能参与到交易和智能合约的执行中 来,而任何匿名节点或非授权用户均被拒绝服务。从团体联盟的角度 来看,这增加了区块链网络的安全可靠。 当前在欧美主流的区块链应用大部分是行业链或者是联盟链,也就是某一个行业的上下游,或者核心企业联合起来,一起构建的半公开化的区块链。从这个角度讲,超级账本具备成为未来最主要商用区块链技术平台的潜力,值得技术开发人员花时间和精力进行学习和研究。

联盟链的商用场景

金融:对银行、保险、清算、股权登记 交易、信用评级、公证等领域,既需要绝对的可信任,也需要隐私保密,所以特别适合区块链应用。比如可以模仿数字货币交易所做一套区块链股权登记和交易平台。

供应链:提供深度回溯、查询等核心功能,实现信息公开透明,出了问题可以依此来追责。附加值较高的食品、药品和疫苗、零部件生产检测结果等都可以使用区块链

传统企业的内部系统改造,加入区块链可以防止数据篡改

那么商用联盟链的代表就是超级账本fabric了

二、fabric

Hyperledger Fabric,它是由 IBM 带头发起的一个联盟链项目,于 15 年底移交给 Linux 基金会,成为开源项目。Hyperledger 基金会的成员有很多大牌,诸如 IBM,Intel,思科等。基金会里孵化了很多区块链项目,Fabric 是其中最出名的一个,一般我们说超级账本(Hyperledger)基本上指的都是 Fabric。目前使用fabric的商家有Cisco、 IBM、 Intel、 J. P. Morgan、 荷兰 银行、 SWIFT ,相信以后会更多。

那么我们来看看fabric的交流流程

一步一步带你用超级账本fabric打造一个联盟链的应用

(1)客户端构造交易提案

客户端应用程序利用任意SDK构造交易提案propose。该提案是一个调用智能合约功能函数的请求,用来确认哪些数据可以读取或写入账本。客户端把交易提案发送给一个或多个Peer节点,交易提案中包含本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等。

(2)背书节点(Endorser)模拟执行交易

背书节点endorser收到交易提案后,验证签名并确定提交者是否有权执行操作。背书节点将交易提案的参数作为输入,在当前状态K-V数据库上执行交易,生成包含执行返回值、读操作集合和写操作集合的交易结果(此时不会更新账本),这些值的集合、背书节点的签名和背书结果(YES / NO)作为提案的结果返回给客户端SDK,SDK解析这些信息判断是否应用于后续的交易。

(3)背书节点将模拟执行结果返回给客户端

(4)客户端把交易发送到共识排序服务节点(Orderers)

应用程序(SDK)验证背书节点签名,并比较各节点返回的提案结果,判断提案结果是否一致以及是否参照指定的背书策略执行。客户端收到各个背书节点的应答后,打包到一起组成一个交易并签名,发送给Orderers。

(5-6-7)共识排序,生成新区块,提交交易

Orderers对接收到的交易进行共识排序,然后按照区块生成策略,将一批交易打包到一起,生成新的区块,调用deliver API投递消息,发送给提交节点(Committer)。Committer收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,完成后将区块追加到本地的区块链,并修改K-V状态数据库。

(8-9)各节点之间进行区块数据同步

好了,我们来实践操作一下吧。

三、部署一个fabric应用

Fabric依赖docker容器, 因此需要先安装和配置docker

下载超级账本源代码

1.如果没有安装git则执行

sudo apt install git

2.通过git安装

git clone https://github.com/hyperledger/fabric.git

部署调用

下载fabric Docker镜像文件

进入目录: cd fabric/ scripts
修改读写权限 chmod +x bootstrap.sh
改写.sh文件
Mac:sed -i '' 's/ curl/# curl/ g' bootstrap.sh
其它: sed -i 's/ curl/# curl/ g' bootstrap.sh
执行下载: ./bootstrap.sh

下载一个fabric-samples样例进行部署

git clone https://github.com/hyperledger/fabric-samples.git
进入目录并执行
cd fabric- samples/ basic-network docker-compose -f docker-compose.yml up -d
查看启动的容器
会输出以下内容: localhost: basic- net...

点击查看剩余70%

{{collectdata}}

网友评论0