Hyperledger Fabric
文章平均质量分 58
Hyperledger Fabric原理、技术介绍
thefist11
难以忘记编程路上领导和好友的细致指导,所以必须努力!(真诚希望大家多多指导!)
展开
-
Hyperledger Fabric 链码(0) 说明
1. 概念基于区块链的应用,一般都由部署在区块链上的智能合约以及调用这些智能合约的业务程序组成,智能合约又称为链码(Chaincode),是一段运行在容器中的程序。Chaincode 是客户端程序和区块链网络之间沟通的桥梁Chaincode 在 Fabric 节点上的 Docker 容器中运行通过 gRPC 协议来与各个节点通信。用来修改记录在链上的状态,状态一般记录着与业务相关的数据,通过调用智能合约,应用程序可以发起和记录交易,从而实现复杂的业务逻辑。2. 业务流程用户关注与业原创 2021-05-29 23:18:25 · 317 阅读 · 0 评论 -
cryptogen (2)generate 生成证书再举例
1. 配置文件OrdererOrgs: - Name: Orderer Domain: testcryptogen.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.testcryptogen.com Enab原创 2021-06-03 20:08:46 · 302 阅读 · 0 评论 -
cryptogen (1)generate 生成证书举例
1. 配置文件1.1 crypto-config-orderer.yaml文件指定Orderer节点OrdererOrgs: - Name: Orderer Domain: example.com EnableNodeOUs: true Specs: - Hostname: orderer SANS: - localhost1.2 指定peer节点1.2.1 配置文件crypto-config-org1.yaml原创 2021-06-03 20:06:58 · 348 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(7)Fabric-ca-client
fabric-ca-client 模块通过相关的子命令完成账号注册、授权申请、证书撤销等操作 。1. 命令• enroll :登记账号 。• gencrl :撤销证书 。• gencsr : 创建证书签名 。• getcacert 获取 CA 链证书 。• reenroll :重新登记账号 。• register :注册一个新账号 。• revoke : 撤销一个账号 。• version : 显示版本信息 。2. fabric-ca-client 模块的参数选项fabric-ca-c原创 2021-05-20 20:45:42 · 731 阅读 · 1 评论 -
Hyperledger Fabric 核心模块(6)Fabric-ca-server
1. Fabric-ca 的编译和安装2 fabric-ca-server的启动和配置fab ric - ca- server 启动之后是 以守护进程方式存在,可以通过 fabric - ca- client 或者实现其通信协议的客户端发起请求 。 fabric-ca-serve 有三种方式设置配置信息,分别是启动参数 、环境变量和配置文件 。2.1. fabric-ca-server的命令行选项fabric - ca- server 模块有三个子命令,这三个子命令分别是:• init :初始化.原创 2021-05-20 20:39:17 · 748 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(6)configtxlator工具
1. 定义无论“配置交易文件 .tx”和“初始区块文件 .block”都是二进制格式,用户都无法直接编辑。configtxlator工具主要是用于将这些配置文件在二进制格式和方便阅读的json格式之间进行转换。开发 configtxlator 工具是为了支持独立于SDK来进行重新配置。configtxlator 工具被设计为提供一个API让任意一个SDK的用户都能够与之交互来更新配置。工具的名称是 configtx 和 translator 的拼接,意在传达该工具简单地在不同的等效数据之间进行原创 2021-06-08 22:08:22 · 358 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(5)peerer共识
peer 模块在Fabric 中被称为主节点模块 ,主要负 责存储区块链数据 、运行维护链码 、 提供对外付服务接口等作用1. 命令行军日常用参数peer 模块中常用的命令和参数如下所示 ://命令chaincode chaincode 相关操作相关 子命令 installlinstantiatelinvokelpackagelque ryIs 工 gnpackagelupgradellist .channel channel 相关操作 createlfetchljoin llistlupdat原创 2021-05-20 20:23:43 · 485 阅读 · 1 评论 -
Hyperledger Fabric 核心模块(4)orderer 共识
orderer模块负责对交易进行排序,并将排好序的交易打包成区块1. orderer 模块的命令和参数help 显示帮助信息start *启动 orderer 节点version 显示版本信息Show version informationbenchmark 采用基准本模式运行 orderer2. orderer 模块的配置信息orderer 模块配置信息可以用环境变量或者配置文件的方式来配置, 环境变量的 配置示eg.export set ORDERER_GENERAL_LOGLEVE原创 2021-05-20 20:20:28 · 712 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(3)cryptogen 工具
1. 说明cryptogen 工具是加密生成器,生成各个实体的证书文件,证书文件代表着各个实体在网络中的身份,用于实体间进行交流和交易时进行签名或身份验证。cryptogen模块为属于组织中的组件生成了相应的密钥和证书。组织具有一个根证书 ca-cert,从而将其组件定位到组织内,各个实体之间具体交易及通信则通过储存在 keystore 中的实体私钥签名,最后通过公钥验证。2. Cryptogen-config.yaml 配置文件配置文件配置系统所包含的组织等信息eg. 配置文件的内容2.1原创 2021-05-20 20:11:00 · 644 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(2)configtxgen configtx.yaml配置文件
1. Channel / 通道配置要写入创世区块或配置交易的通道参数Channel: &ChannelDefaults # 定义本层级的通道访问策略,其权威路径为 /Channel/<PolicyName> Policies: Readers: Type: ImplicitMeta Rule: ANY Readers # Writes策略定义了调用Broadcast API提交交易的许可规原创 2021-06-07 10:46:00 · 282 阅读 · 0 评论 -
Hyperledger Fabric 核心模块(2)configtxgen工具
1. 说明专门负责生成系统的创始块和通道Channel的创始块 。order 模块的genesis block创始块channel 模块的 channel configuration transaction;channel transaction 用于在通道创建的时候广播给排序节点。两个 anchor peer transactionanchor peer transaction 制定了每个组织在通道上的锚节点2.configtx.yaml 配置文件configtx.yaml配置文件原创 2021-05-19 21:07:19 · 376 阅读 · 2 评论 -
Hyperledger Fabric 核心模块(1)整体概述
1. fabric 主要模块cryptogen 、configtxgen和configtxlator 属于工具模块。工具模块负责证书文件、区块链创始块、通道创始块等相关文件和证书的生成工作, 但是工具模块不参与系统的运行 。peer 模块和 orderer 模块作为系统模块是 Fabric 的核心模块,启动之后会以守护进程的方式在系统后台长期运行 。configtxgen 区块和交易生成模块cryptogen 组织和证书生成模块configtxlator 区块和交易解析模块orderer 负原创 2021-05-19 20:27:11 · 409 阅读 · 0 评论 -
《Fabric 云存储的电子健康病历系统》(3)病历结构体API
1. IPMR初始化患者病历IPMR 初始化患者病历接口通过 initRecords()方法实现,根据接口传入的病历信息完成病历初始化并将病历 Records 记录到账本中。5 个参数:病历 ID,病历名、文件路径、拥有者和数字摘要信息;处理过程:step1. 读取参数后根据 stub.GetState()进行检索,假如同ID 病历已经存在则返回 Error 信息;step2. 创建 Records 类型变量并赋值,使用 json.Marshal()方法将新建变量序列化并写入 JSON 格式.原创 2021-05-17 21:34:47 · 426 阅读 · 0 评论 -
《Fabric 云存储的电子健康病历系统》(2)病历结构体 Records
1. 对病历结构体 Records 进行操作的接口包括初始化查询状态修改1.1 病历结构体 Records病历 ID病历ID 作为病历的 key 值,用于在账本中检索病历;患者 name文件路径文件路径path 表示病历在 HDFS 中存储的路径,用于查找和获取病历文件。拥有者数字摘要 hashcode,hashcode 是云端存储的病历经过哈希函数计算产生的哈希值,在文件传输过程中会根据数字摘要判断云端病历是否发生修改或变动; type Records struct {原创 2021-05-17 21:25:16 · 312 阅读 · 0 评论 -
《Fabric 云存储的电子健康病历系统》(1)系统介绍
1. 摘要以Hyperledger Fabric 作为客户端应用底层架构支撑,同时采用云存储技术,对 EHR 系统中病历文件的存储及传输,交易与隐私保护等功能及其中的关键技术进行深入地研究,给出解决方案并实现 EHR 系统客户端程序和智能合约的开发,对区块链技术在医疗领域的应用做出进一步研究与探索。将客户端程序分为登录、加解密、Chaincode 接口和传输程序四个组成模块;最后对 EHR 系统各个功能模块进行深入研究并实现了病历上链及传输,病历隐私保护与交易的功能,同时对病历传输效率和存储效率进行了优原创 2021-05-17 21:20:28 · 628 阅读 · 2 评论 -
Hyperledger Fabric 私有数据(3)交易流程
step1. 当客户端提交一个调用链码的功能(读或写私有数据)提案请求到具有该私有数据集合操作权限的背书节点,通过提案中的transient字段进行发送。step2. 背书节点模拟交易并将私有数据存储到peer节点上的transient data store一个临时的数据存储区,并基于私有数据定义的策略,通过Gossip协议发送到其他具有权限的节点。step3. 背书节点将提案响应发送给客户端。提案响应包括已经背书的读写集。读写集包括公共数据和私有数据的哈希值。发送给客户端的不包括任何的私有数据。s原创 2021-05-17 20:58:07 · 313 阅读 · 0 评论 -
Hyperledger Fabric 私有数据(2)操作流程
1. 私有数据资产转移的案例collections_config.json文件定义了3个私有数据集合定义:assetCollection、Org1MSPPrivateCollection和Org2MSPPrivateCollection。eg. collections_config.json文件内容 [ { "name": "assetCollection", "policy": "OR('Org1MSP.member', 'Org2MSP.member')"原创 2021-05-17 20:46:56 · 435 阅读 · 0 评论 -
Hyperledger Fabric 私有数据(1)概念
1. 定义允许通道内的指定的某一个组织中的部分成员可以对私有数据进行操作,而其他没有权限的节点只能知道有这么一笔交易发生而不能了解交易的细节。1.1 什么时候需要当所有的数据都需要在通道内的成员之间保密的时候,使用通道比较合适。当交易要在所有组织之间传播,并且要求只有通道内的部分组织成员可以查看或操作交易内的某一部分数据时,需要使用私有数据集合。并且部分数据需要对排序节点进行保密时,使用私有数据集合。2. 属性每一个私有数据集合都包含以下几种属性:name:集合名称policy:定义了原创 2021-05-17 20:22:10 · 283 阅读 · 1 评论 -
Hyperledger Fabric SDK(1) 概述
1. 应用通过节点的RPC协议接口访问链码2.Fabric提供了三种语言版本的SDK:Fabric Nodejs SDKFabric Java SDKFabric Go SDK3. Fabric SDK API功能创建通道将peer节点加入通道在peer节点安装链码在通道实例化链码通过链码调用交易查询交易或区块的账本4. fabric-ca-client提供成员管理服务:注册新用户注册用户以获得由Fabric CA签名的注册证书通过注册ID撤销现有用户或撤消特定证原创 2021-05-16 22:58:33 · 1566 阅读 · 11 评论 -
Hyperledger Fabric 链码(3) 生命周期和API
1. Chaincode的5个生命周期命令链码打包链码安装eg.peer chaincode install ccpack.out链码实例化eg. peer.sh chaincode instantiate -n mycc -v 0 -c ‘{“Args”:[“init”,“a”,“100”,“b”,“200”]}’ -C mychannel链码升级(当链码的代码发生改变时,就需要升级链码)链码签名2. peer命令提供了8个子命令管理链码Installinstantiatein原创 2021-05-17 19:15:28 · 652 阅读 · 0 评论 -
Hyperledger Fabric 链码(2) 接口
1.Chaincode interface:每个链码程序必须实现链码接口,用以响应接收的事务。1.1 go语言的“shim ”包中,接口规范如下:Init:在链码实例化或者升级的时候被调用,完成数据初始化Invoke:客户端调用Invoke方法来提交交易提案,在更新或查询提案事务中分类帐本数据状态的时候被调用type Chaincode interface { // Init is called during Instantiate transaction after the chain原创 2021-05-15 22:12:50 · 512 阅读 · 1 评论 -
Hyperledger Fabric 链码(1) 类型
1. 用户链码由应用开发人员编写(Go/Java/JS语言)基于区块链分布式账本的状态及处理逻辑运行在链码容器中, 通过Fabric提供的接口与账本平台进行交互.2. 系统链码(ESCC)负责Fabric节点自身的处理逻辑, 包括系统配置、背书、校验等工作。系统链码仅支持Go语言, 在Peer节点启动时会自动完成注册和部署。2.1 系统链码分为5种类型配置系统链码(CSCC) Configuration System Chaincode 负责账本和链的配置管理背书管理系统链码(E原创 2021-05-15 22:08:52 · 594 阅读 · 0 评论 -
Hyperledger Fabric 区块数据结构(1)Block
Block是区块链数据结构里面的一个最基本的元素。•Header,即区块头,这里又包含了三项数据,包括:•Number:Block Number,即区块号,用来标识每个区块。•PreviousHash:前一个区块头的hash值•DataHash:Data域的hash值,这里没有包含Metadata•Data,即区块数据,这里包含的就是所有的Transaction数据•Metadata,元数据就是由一个value和相应的签名组成,包括:•Metadata[BlockMetadataIndex_.原创 2021-05-15 22:06:14 · 1010 阅读 · 2 评论 -
Hyperledger Fabric 三种node节点 (1) 基本概念
. Endorser背书节点给出模拟执行的结果,读写集,key的version, 这些信息反馈给sdk• Order排序节点用来排序分发transaction的, 对数据的转账进行确认, 生成数据放到整个区块链里面, 类似于比特币以太坊的矿工类似于挖矿, 可以解决双花问题, 对同时发出的几笔交易进行排序, 确认之后打包成block, 然后交给peer节点存储数据•Committer打包节点存储和同步ledger的数据,不同的节点可同时运行在物理节点、虚拟机或容器中。• client/SDK:原创 2021-04-02 14:35:32 · 562 阅读 · 0 评论 -
Hyperledger Fabric 管道(3) 如何做到数据隔离?
1. 创建管道时就指定了当前的节点列表a. Client发送交易提供必要数据,如可信根列表,排序证书列表,IP地址,一组指定的共识算法属性和访问控制策略。b. 结果产生一个创世块 ( Genesis Block) ,包含有一个配置交易信息,管道授权的节点信息都被编码到该配置交易中。在完成这个配置交易后,这些节点也就是自动订阅了这个管道。c. 如果一个节点想要加入到管道中就需要两种信息:一个可以用于加入到现有区块链网络的证书,可用于在管道外验证消息的可信根列表。d. Peer节点在加人应用通道时会主.原创 2021-04-01 11:41:34 · 517 阅读 · 0 评论 -
Hyperledger Fabric 管道(2) 管道的操作
管道的操作分为创建、更新、查询和销毁4种,由客户端向排序(Orderer)节点发送对应的管道配置交易来完成。1. 创建管道交易内容包括参与的已授权节点列表,这些节点表示MSPs(成员服务提供者 Member Service Providers).eg. 假设Alice和Bob都有能力为这个区块链网络上的节点和orderer颁发注册证书。并假定在启动过程中配置了Alice和Bob可以创建管道:step1. 应用程序发起一个为Alice和Bob背书的配置交易请求去创建一个名字为“foo” 的管道。之后通原创 2021-04-01 11:38:28 · 266 阅读 · 0 评论 -
Hyperledger Fabric 管道(1) 基本概念
1. 设计目的让交易方在各自独立的管道内进行交易,保障交易的秘密性和私有性。一个管道内的交易对其他管道是不可见。每个channel可以理解成独立的hyperledger fabric的实例/子网,通道上的数据只会发送给加入通道的合法组织成员,从而隔离未经授权的数据访问,保护数据隐私性。通俗的理解:可以把它比作微信群, 每个群里的成员、数据都是不一样的, 而且群之间是无法沟通的, 数据更加是无法看到, 可以完全保护用户的隐私。2. 性质2.1 一个管道对应一个账本每个channel直接不会相互依赖,原创 2021-04-01 11:35:41 · 247 阅读 · 0 评论
分享