区块链实战-Hyperledger Fabric(一) 10分钟新手入门


本文摘自php中文网,作者michael li,侵删。

导语

大家好,我是Michael,现在在一家上海的互联网公司工作,随着政府对区块了项目的重视,人们开始称2020年将会是区块链发展的元年,我也跟朋友聊了很多次区块链,也想自己实践一下,于是在调研了以太坊、EOS、NEO等众多选型之后选择了联盟链,也就是我们今天的主角 Hyperledger fabric。

文章结构

本系列文章将分为三部分,通过三篇文章帮助大家入门Hyperledger Fabric开发,搭建自己的联盟链项目:

一、基础介绍

二、环境搭建

三、应用部署与启动

基础介绍

Hyperledger fabric——区块链世界的新希望

2015 年 12 月,开源世界的旗舰组织 —— Linux 基金会牵头,联合 30 家初始企业成员(包括 IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco 等),共同宣布了超级账本(Hyperledger)联合项目的成立。超级账本项目致力为透明、公开、去中心化的企业级分布式账本技术提供开源参考实现,并推动区块链和分布式账本相关协议、规范和标准的发展。项目官方网站为 hyperledger.org ,Hyperledger fabric 是其重要的项目之一。

很多新同学对区块链很多专属名词可能不是太了解,所以第一节跟大家先介绍一下Hyperledger fabric 中涉及到的名词。

名词介绍:

Anchor Peer – 锚节点锚节点是通道中能被所有对等节点探测、并能与之进行通信的一种对等节点。通道中的每个成员都有一个(或多个,以防单点故障)锚节点,允许属于不同成员身份的节点来发现通道中存在的其它节点。

Block – 区块在一个通道上,(区块是)一组有序交易的集合。区块往往通过密码学手段(Hash 值)连接到前导区块。

Zhu Jiang:区块是一组有序的交易集合,在通道中经过加密(哈希加密)后与前序区块连接。

Chain – 链chain就是block之间以hash连接为结构的交易日志。peer从order service接收交易block,并根据背书策略和并发冲突标记block上的交易是否有效,然后将该block追加到peer文件系统中的hash chain上。Z

hu Jiang:账本的链是一个交易区块经过“哈希连接”结构化的交易日志。对等节点从排序服务收到交易区块,基于背书策略和并发冲突来标注区块的交易为有效或者无效状态,并且将区块追加到对等节点文件系统的哈希链中。

Chaincode – 链码链码是一个运行在账本上的软件,它可以对资产进行编码,其中的交易指令(或者叫业务逻辑)也可以用来修改资产。

Channel – 通道通道是构建在“Fabric”网络上的私有区块链,实现了数据的隔离和保密。通道特定的账本在通道中是与所有对等节点共享的,并且交易方必须通过该通道的正确验证才能与账本进行交互。通道是由一个“配置块”来定义的。

Commitment – 提交一个通道中的每个对等节点都会验证交易的有序区块,然后将区块提交(写或追加)至该通道上账本的各个副本。对等节点也会标记每个区块中的每笔交易的状态是有效或者无效。

Concurrency Control Version Check – 并发控制版本检查(CCVC)CCVC是保持通道中各对等节点间状态同步的一种方法。对等节点并行的执行交易,在交易提交至账本之前,对等节点会检查交易在执行期间读到的数据是否被修改。如果读取的数据在执行和提交之间被改变,就会引发CCVC冲突,该交易就会在账本中被标记为无效,而且值不会更新到状态数据库中。

Configuration Block – 配置区块包含为系统链(排序服务)或通道定义成员和策略的配置数据。对某个通道或整个网络的配置修改(比如,成员离开或加入)都将导致生成一个新的配置区块并追加到适当的链上。这个配置区块会包含创始区块的内容加上增量。

Consensus – 共识共识是贯穿整个交易流程的广义术语,其用于产生一个对于排序的同意书和确认构成区块的交易集的正确性。

Current State – 当前状态ledger的current state表示其chain交易log中所有key的最新值。peer会将处理过的block中的每个交易对应的修改value提交到ledger的current state,由于current state表示channel所知的所有最新的k-v,所以current state也被称为World State。Chaincode执行交易proposal就是针对的current state。

Dynamic Membership – 动态成员Fabric支持动态添加-移除members、peers和ordering服务节点,而不会影响整个网络的操作性。当业务关系调整或因各种原因需添加-移除实体时,Dynamic Membership至关重要。

Endorsement – 背书Endorsement 是指一个peer执行一个交易并返回YES-NO给生成交易proposal的client app 的过程。chaincode具有相应的endorsement policies,其中指定了endorsing peer。

Endorsement policy – 背书策略Endorsement policy定义了依赖于特定chaincode执行交易的channel上的peer和响应结果(endorsements)的必要组合条件(即返回Yes或No的条件)。

Endorsement policy可指定对于某一chaincode,可以对交易背书的最小背书节点数或者最小背书节点百分比。背书策略由背书节点基于应用程序和对抵御不良行为的期望水平来组织管理。在install和instantiate Chaincode(deploy tx)时需要指定背书策略。

Fabric-caFabric-ca是默认的证书管理组件,它向网络成员及其用户颁发基于PKI的证书。CA为每个成员颁发一个根证书(rootCert),为每个授权用户颁发一个注册证书(eCert),为每个注册证书颁发大量交易证书(tCerts)。

Genesis Block – 初始区块Genesis Block是初始化区块链网络或channel的配置区块,也是链上的第一个区块。

Gossip Protocol – Gossip协议Gossip数据传输协议有三项功能:

1)管理peer发现和channel成员;

2)channel上的所有peer间广播账本数据;

3)channel上的所有peer间同步账本数据。

Initialize – 初始化一个初始化chaincode程序的方法。

Install – 安装将chaincode放到peer的文件系统的过程。(译注:即将ChaincodeDeploymentSpec信息存到chaincodeInstallPath-chaincodeName.chainVersion文件中)

Instantiate – 实例化启动chaincode容器的过程。(译注:在lccc中将ChaincodeData保存到state中,然后deploy Chaincode并执行Init方法)Invoke – 调用用于调用chaincode内的函数。

Chaincode invoke就是一个交易proposal,然后执行模块化的流程(背书、共识、 验证、 提交)。invoke的结构就是一个函数和一个参数数组。

Leading Peer – 主导节点每一个Member在其订阅的channel上可以拥有多个peer,其中一个peer会作为channel的leading peer代表该Member与ordering service通信。ordering service将block传递给leading peer,该peer再将此block分发给同一member下的其他peer。

Ledger – 账本A ledger is a channel’s chain and current state data which is maintained by each peer on the channel.Ledger是个channel的chain和由channel中每个peer维护的world state。(这个解释有点怪)

Member – 成员拥有网络唯一根证书的合法独立实体。像peer节点和app client这样的网络组件会链接到一个Member。

Membership Service Provider – MSPMSP是指为client和peer提供证书的系统抽象组件。

Client用证书来认证他们的交易;peer用证书认证其交易背书。该接口与系统的交易处理组件密切相关,旨在使已定义的成员身份服务组件以这种方式顺利插入而不会修改系统的交易处理组件的核心。

Membership Services – 成员服务成员服务在许可的区块链网络上认证、授权和管理身份。

在peer和order中运行的成员服务的代码都会认证和授权区块链操作。它是基于PKI的MSP实现。fabric-ca组件实现了成员服务,来管理身份。特别的,它处理ECert和TCert的颁发和撤销。ECert是长期的身份凭证;TCert是短期的身份凭证,是匿名和不可链接的。

Ordering Service – 排序服务或共识服务将交易排序放入block的节点的集合。

ordering service独立于peer流程之外,并以先到先得的方式为网络上所有的channel作交易排序。ordering service支持可插拔实现,目前默认实现了SOLO和Kafka。ordering service是整个网络的公用binding,包含与每个Member相关的加密材料。Peer – 节点一个网络实体,维护ledger并运行Chaincode容器来对ledger执行read-write操作。peer由Member拥有和维护。

Policy – 策略有背书策略,校验策略,区块提交策略,Chaincode管理策略和网络-通道管理策略。

Proposal – 提案一种针对channel中某peer的背书请求。每个proposal要么是Chaincode instantiate要么是Chaincode invoke。

Query – 查询对于current state中某个key的value的查询请求。

Software Development Kit – SDKSDK为开发人员提供了一个结构化的库环境,用于编写和测试链码应用程序。

SDK完全可以通过标准接口实现配置和扩展,像签名的加密算法、日志框架和state存储这样的组件都可以轻松地实现替换。SDK API使用gRPC进行交易处理,成员服务、节点遍历以及事件处理都是据此与fabric通信。目前SDK支持Node.js、Java和Python。

State Database – stateDB为了从Chaincode中高效的读写,Current state 数据存储在stateDB中,包括levelDB和couchDB。

System Chain – 系统链包含在系统级定义网络的配置区块。

系统链存在于ordering service中,与channel类似,具有包含以下信息的初始配置:MSP信息、策略和信息配置。对整个网络的任何变化(例如新的Org加入或者添加新的Ordering节点)将导致新的配置区块被添加到系统链。

系统链可看做是一个channel或一组channel的公用binding。例如,金融机构的集合可以形成一个财团(以system chain表示),然后根据其相同或不同的业务创建channel。

Transaction – 交易Chaincode的invoke或instantiate操作。Invoke是从ledger中请求read-write set;Instantiate是请求在peer上启动Chaincode容器。

小结:

以上就是我们第一节为大家介绍的区块链的基础知识,这些可能比较枯燥,但是我们需要对这些名词和内容进行初步的了解,这好比我们写代码需要了解函数名与关键词一样,只有掌握了这些才能更好的开始我们的工作。

以上就是区块链实战-Hyperledger Fabric(一) 10分钟新手入门的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

为什么用go语言写区块链

区块链实战-hyperledger fabric(一) 10分钟新手入门

更多相关阅读请进入《区块链》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...