
Fabric1.4学习
从官方文档,源码角度学习Fabric整体框架与实现过程
TLpigff
这个作者很懒,什么都没留下…
展开
-
Hyperledger Fabric从源码分析事件机制(二)
上篇文章——Hyperledger Fabric从源码分析事件机制(一),我从 cmd 中添加--waitForEvent参数去监听事件这一入口出发,分析了DeliverClient这一侧的相关源代码,接下来这篇文章将会解析DeliverServer这一侧的相关源代码,准备好上车了兄弟们。从proto文件中发现DeliverServer事件相关的pb.go文件在protos/peer/events.pb.go中,关于DeliverServer的部分在576行:// DeliverServer is原创 2020-07-01 17:57:28 · 1054 阅读 · 0 评论 -
Hyperledger Fabric从源码分析事件机制(一)
Fabric 允许应用程序在调用链码的时候监听链码中设置的事件,在监听到相应的事件后做相应的处理过程。Fabric1.4 中的事件机制与老版本的事件机制源码部分有所不同,用的是Deliver的方式,所以老版本的代码与 Fabric1.4 版本的代码会有所不同。本文将从源码解析整个事件机制的处理流程的。回顾链码调用源码链码调用监听事件部分代码在之前的文章——Hyperledger Fabric从源码分析链码查询与调用,我有提到在ChaincodeInvokeOrQuery()函数中有对是否等待链码原创 2020-07-01 15:29:13 · 1829 阅读 · 7 评论 -
Hyperledger Fabric从源码分析链码容器启动过程
链码容器启动过程每个实例化之后的链码都会以容器的形式启动起来,下面举一个byfn.sh启动的例子:$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS原创 2020-06-30 16:55:36 · 1911 阅读 · 0 评论 -
Hyperledger Fabric从源码分析背书提案过程
在之前的文章中Hyperledger Fabric从源码分析链码安装过程Hyperledger Fabric从源码分析链码实例化过程Hyperledger Fabric从源码分析链码查询与调用都提到了类似下面这一行的代码proposalResponse, err := cf.EndorserClients[0].ProcessProposal(context.Background(), signedProp)这一行代码是由客户端向背书节点发起背书提案申请,获取背书响应的过程,即客户端应用程原创 2020-06-29 17:28:00 · 1584 阅读 · 2 评论 -
Hyperledger Fabric从源码分析链码查询与调用
前面分析过了链码的安装与实例化,今天来分析一下链码的调用和查询。因为这两个命令最终在底层调用的都是同一个函数,因此我们将这两个链码执行过程放在一起解析。同样,还是有很多函数会和之前所讲的具有相同的功能,在本文中就不做详细说明,可以翻看之前的两篇文章:Hyperledger Fabric从源码分析链码安装过程Hyperledger Fabric从源码分析链码实例化过程好了,下面就开始吧下面的解析以 invoke 为例链码调用源码解析源码入口在 peer/chaincode/inv原创 2020-06-28 17:26:55 · 1667 阅读 · 0 评论 -
Hyperledger Fabric从源码分析链码实例化过程
上篇文章——Hyperledger Fabric从源码分析链码安装过程,分析了链码安装的大致过程,这篇文章分析一下链码实例化的过程,其中有一部分的代码非常相似,类似的函数解析我就不再展开了,可以直接看链码安装文章的相关介绍。好了下面就开始吧。链码实例化源码解析相关源码入口在peer/chaincode/instantiate.go中先给一个官方实例化的例子吧peer chaincode instantiate -o orderer.example.com:7050 --tls true --ca原创 2020-06-28 15:13:35 · 1451 阅读 · 0 评论 -
Hyperledger Fabric从源码分析链码安装过程
用了 Fabric 也有一个多月了,写过使用过其中的链码,但是还没有搞清楚链码从安装到实例化,再到链码调用的整个具体流程是怎样的。接下来会写几篇文章,从源码角度来分析一下链码,本篇文章就先来分析一下链码的安装过程。本文源码剖析都是在 Fabric1.4 版本中解析如何找到链码相关的源码入口在源码文件结构中,peer 目录是 peer 有关的命令的相关解析,它下面每一个目录都对应着一个子命令,例如 chaincode 目录对应的就是 peer chaincode相关的命令,当然下面还会有一些子命令,原创 2020-06-28 13:55:35 · 1132 阅读 · 0 评论 -
Hyperledger Fabric私有数据
参考资料:官方文档——私有数据官方文档——私有数据定义官方文档——在Fabric中使用私有数据文章目录什么是私有数据什么是私有数据集(PDC)什么时候使用通道,什么时候使用集合私有数据的交易流程私有数据收集器的定义私有数据分发从链码中引用集合在链码中传递私有数据私有数据的访问控制查询私有数据私有数据的删除升级一个集合定义如何在 Fabric 中使用私有数据什么是私有数据在没有私有数据之前,在一个通道上的所有组织成员都可以访问通道账本上的数据(每个 peer 节点都是记账节点,需要记账)。如果原创 2020-06-11 13:21:16 · 1101 阅读 · 0 评论 -
Hyperledger Fabric访问控制列表(ACL)
参考资料:官方文档——访问控制列表(ACL)文章目录访问控制列表(ACL)是 What资源策略`Signature` 策略`ImplicitMeta` 策略在哪里定义访问控制权限如何在 `configtx.yaml`中格式化ACL更新 `configtx.yaml`中的默认 ACL从源码来看ACL访问控制列表(ACL)是 What之前写了很多文章一直没有介绍访问控制列表(以下统称为 ACL )这个东西,在 peer node start命令源码很前面的地方就有 ACL 相关的代码。这是 Fabr原创 2020-06-10 17:11:58 · 1686 阅读 · 0 评论 -
Hyperledger Fabric从源码分析账本
参考资料:官方文档——账本关键概念Fabric源码分析之九数据库存储源码分析leveldbfabric源码解析5——kvledger初始化文章目录什么是账本?世界状态区块链命名空间源码分析idStorehistorydbProviderledgerStoreProvidervdbProvider账本存储目录结构什么是账本?Fabric 中的账本存储了有关业务对象的重要事实信息,既包括了对象属性当前的值,也包括产生这些当前值的交易的历史。这两个概念可以用下面的术语来概括,即账本包括原创 2020-06-04 10:19:31 · 1215 阅读 · 0 评论 -
Hyperledger Fabric从源码分析系统链码
系统链码简介在 Fabric 中,有一些链码是比较特殊的,叫系统链码。它们作为peer进程的一部分运行,而不是像用户链码一样运行在独立的 docker 容器中。因此它们有更高的权限来访问 peer 中的资源来实现用户链码难以实现或者不能实现的功能。在 Fabric 1.4 版本之前,总共有五种系统链码,它们分别是:Life Cycle System Chaincode (LSCC):生命周期系统链码Configuration System Chaincode (CSCC):配置系统链码Query原创 2020-06-03 13:54:47 · 1527 阅读 · 0 评论 -
Hyperledger Fabric身份
参考资料:官方文档——身份什么是身份区块链网络中的不同参与者包括 Peer 节点、排序节点、客户端应用程序、管理员等等,这些参与者都一个封装在 X.509 数字证书中的数字身份。这些身份决定了参与者在区块链网络中对资源的确切权限和对信息的访问权限。数字身份还有一些额外的属性,Fabric 使用这些属性来确定权限,并为身份和相关属性的联合提供了一个特殊的名称——主体。主体与 userid 或 groupid 类似,但是更加灵活,因为它们可以包含参与者身份的广泛属性,比如参与者的组织、组织单元、角色,甚至原创 2020-05-25 10:41:45 · 1839 阅读 · 0 评论 -
Hyperledger Fabric区块链网络
参考资料:官方文档——区块链网络1. 什么是区块链网络区块链网络是为应用程序提供账本和智能合约服务的技术基础设施。首先,智能合约用于生成交易,这些交易随后被分发到网络中的每个节点,并在每个节点的账本副本上记录下来并且是不可篡改的。这个应用程序的用户可能是使用客户端应用的最终用户,或者是一个区块链网络的管理员。多个组织作为一个联盟(consortium)聚集在一起形成网络,它们的权限由一组策略决定,这些策略在最初配置网络时由联盟商定。此外,网络策略可以随着时间的推移而变化,这取决于联盟中的组织的协议。原创 2020-05-22 17:12:06 · 3219 阅读 · 1 评论 -
Hyperledger Fabric更新通道配置
参考资料:官方文档——更新通道配置官方文档——向通道内添加组织1. 什么是通道配置通道配置包含关于通道管理的所有信息。最重要的一点是,通道配置指定了哪些组织是通道的成员。但同时它也包含了其他通道范围的配置信息,例如,通道访问策略和区块的批处理大小。这个配置被存储在账本的一个区块里,因此被称为配置(config)区块。每个配置区块包含一个配置。这些区块中的第一个就是创世区块,包含启动通道所需要的初始配置信息。对通道的每次配置修改都是通过新配置一个区块完成的。也就是说,想要修改一个通道的配置,原创 2020-05-21 16:48:35 · 2143 阅读 · 1 评论 -
Hyperledger Fabric从源码分析交易
在上一章Hyperledger Fabric从源码分析区块结构中提到了区块的概念,并从源码角度对区块的结构进行了剖析,知道一个简单的区块包含了下面几个部分BlockHeader, 区块头BlockData,区块数据BlockMetaData,区块元数据上篇文章中已经对区块头,区块数据,区块元数据各个字段的内容进行了分析。我们知道BlockData字段是一个切片,存储的是一条条交易,但是并没有对交易具体的结构进行剖析。那么这篇文章就来分析一下一条交易里面会有哪些东西。1. 先猜想一下一条交易会有原创 2020-05-20 14:47:36 · 1761 阅读 · 2 评论 -
Hyperledger Fabric从源码分析区块
学习区块链的这段时间内,一直在想区块本身到底包含了哪些数据,今天就Fabric的源码来分析一下,一个区块底层到底包含了哪些数据。1. 凭感觉猜想一个区块中可能会有哪些数据首先会想到,区块本身存储的数据,它里面存储着一些交易。其次,区块之间是以哈希连接成区块链的,按我之前的学习知识来看,它会需要包含上一个区块的hash。另外,当然不能少了它本身数据的哈希。还有很重要的一点,需要有一个区块的序号,是用来标记区块高度的。暂时能想要的就是这些,看些fabric源码 release-1.4版本中的区块结构原创 2020-05-20 11:52:38 · 1834 阅读 · 4 评论 -
Hyperledger Fabric配置文件解析(二)——configtx.yaml
1. 组织结构配置文件configtx.yamlconfigtx.yaml主要用来配置fabric的组织结构,通道及锚节点的配置。它主要完成以下几个功能生成启动 Orderer 需要的创世区块orderer.block(genesis.block)创建应用通道所需的配置交易文件生成组织锚节点更新配置交易文件2.具体的文件配置信息把注释全部去掉,看起来应该会清晰一点Organizations: - &OrdererOrg Name: OrdererOrg原创 2020-05-19 16:42:11 · 4309 阅读 · 2 评论 -
Hyperledger Fabric配置文件解析(一)——crypto-config.yaml
1. 相关配置文件介绍crypto-config.yaml,用于生成相关组织的私钥和证书configtx.yaml对相关组织进行配置配置orderer,用以生成orderer端初始化时所需的block(Genesis Block)配置channel,用以生成创建channel时所需的tx文件core.yaml,peer端的配置文件orderer.yaml,orderer端的配置文件docker-compose.yaml,用以配置fabric网络的相关容器下文中所有的配置文件解析原创 2020-05-19 14:30:00 · 5202 阅读 · 2 评论 -
Hyperledger Fabric的网络拓扑图与交易流程
1. Fabric中的四种节点客户端节点介于应用程序与底层之间,是两者之间交互的媒介节点。它不能独立存在,必须与Orderer节点与Peer节点建立连接,才可以发挥作用,比如连接到Orderer节点进行通道创建,连接到Peer节点进行交易模拟执行Peer节点Peer节点是一个统称,包含了Anchor(锚节点),Endorser(背书节点)以及Committer(记账节点)Anchor锚节点是与组织密切关联的。一个组织内部可能会有多个Peer节点,但是只会有一个Anchor锚节点,它是组织内部唯一与原创 2020-05-15 16:33:34 · 4055 阅读 · 3 评论 -
Hyperledger Fabric概述与整体架构
1. 项目介绍Hyperledger Fabric是IBM发起的,后来被Linux基金会托管,作为开源的区块链项目Hyperledger Fabric的主要目标是作为企业级联盟链的基础设施,它的基础架构与公有链有很大的不同Hyperledger Fabric现阶段拥有可插拔的共识机制,包含solo与kafka两种机制2. 智能合约(链码,chaincode)最初引入智能合约这个概念的是以太坊项目3. Hyperledger Fabric 整体架构图整体架构分为应用程序层与底层的区块链层应用原创 2020-05-15 15:51:23 · 2099 阅读 · 1 评论