fabric

Fabric1.4:Go 链码开发与编写

╄→гoц情女王★ 提交于 2020-05-02 18:48:49
1 链码结构 1.1 链码接口 链码启动必须通过调用 shim 包中的 Start 函数,传递一个类型为 Chaincode 的参数,该参数是一个接口类型,有两个重要的函数 Init 与 Invoke 。 type Chaincode interface{ Init(stub ChaincodeStubInterface) peer.Response Invoke(stub ChaincodeStubInterface) peer.Response } **Init:**在链码实例化或升级时被调用, 完成初始化数据的工作 **Invoke:**更新或查询帐本数据状态时被调用, 需要在此方法中实现响应调用或查询的业务逻辑 实际开发中, 开发人员可以自行定义一个结构体,重写 Chaincode 接口的两个方法,并将两个方法指定为自定义结构体的成员方法。 <br> 1.2 链码结构 package main // 引入必要的包 import( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" pb "github.com/hyperledger/fabric/protos/peer" ) // 声明一个结构体 type SimpleChaincode struct { } // 为结构体添加Init方法 func (t

Fabric1.4:链码管理与测试

主宰稳场 提交于 2020-05-02 18:48:34
1 链码介绍 智能合约在 Hyperledger Fabric 中称为链码(chaincode),是提供分布式账本的状态处理逻辑。链码被部署在fabric 的网络节点中,能够独立运行在具有安全特性的受保护的 Docker 容器中,以 gRPC 协议与相应的 peer 节点进行通信,以操作分布式账本中的数据。 一般链码分为两种: 系统链码 和 用户链码 。 1.1 系统链码 负责 Fabric 节点自身的处理逻辑,包括系统配置、背书、校验等工作,在 Peer 节点启动时会自动完成注册和部署。系统链码分为以下五种: 配置系统链码(Configuration System Chaincode,CSCC) :负责处理 Peer 端的 Channel 配置; 生命周期系统链码(Lifecycle System Chaincode,LSCC) :负责对用户链码的生命周期进行管理; 查询系统链码(Query System Chaincode,QSCC) : 提供账本查询 API。如获取区块和交易等信息; 背书管理系统链码(Endorsement System Chaincode,ESCC) :负责背书(签名)过程, 并可以支持对背书策略进行管理; 验证系统链码(Validation System Chaincode,VSCC) :处理交易的验证,包括检查背书策略以及多版本并发控制。 <br> 1

Hyperledger Fabric1.4 安装

心已入冬 提交于 2020-05-02 18:15:10
Hyperledger Fabric 依赖的软件版本查看官方 github 地址 https://github.com/hyperledger/fabric 下文件 /docs/source/prereqs.rst,软件版本要求根据安装的 Fabric 的版本差异而略有不同。 1 安装依赖工具 为了下载方便,最好将 Ubuntu 的软件镜像源更换为国内,点击 “软件和更新” 将镜像源更换为国内,最好是华为或者阿里的源。更换之后,使用如下命令进行更新: $ sudo apt update 1.1 安装 git 安装 git 工具使用如下命令: $ sudo apt install git <br> 1.2 安装 cURL 安装 cURL 使用如下命令: $ sudo apt install curl <br> 1.3 安装 Docker 查看系统是否已经安装 Docker: $ docker --version 未安装,使用如下命令安装最新版本的 Docker: $ sudo apt install docker.io 安装完之后,查看版本,出现如下字样则安装成功: $ docker --version Docker version 18.09.7, build 2d0083d 设置成非 root 用户也能执行 docker,需要将普通用户加入 docker 组: $ sudo

Fabric1.4:运行 first-network 网络

假如想象 提交于 2020-05-02 18:14:52
说明:运行 first-network 网络,必须先安装好 fabric1.4 的预置环境,fabric1.4 的安装可以参考此博文: https://www.cnblogs.com/zongmin/p/11635686.html 。本文使用 fabric 版本为 v1.4.3,其它版本的 first-network 网络配置可能不同。 构建你的第一个网络( Build Your First network ,BYFN)提供了一个 fabric 的示例网络。该示例网络中由两个组织构成,每个组织维护两个 peer 节点,默认使用 solo 共识服务。 1 脚本 byfn.sh first-network 中有一个启动脚本 byfn.sh,利用构建的 Docker 镜像快速启动网络。该脚本会启动一个 orderer 节点和四个归属两个不同组织的 peer 节点,还将启动一个容器运行脚本,它将 peer 节点加入通道(Channel)、部署和实例化链码,并根据已部署的链码驱动交易执行。 以下是 byfn.sh 脚本的帮助文档: $ ./byfn.sh Usage: byfn.sh <mode> [-c <channel name>] [-t <timeout>] [-d <delay>] [-f <docker-compose-file>] [-s <dbtype>] [-l

Fabric1.4:手动启动 first-network 网络(三)

佐手、 提交于 2020-05-02 18:14:32
注意:本文所使用的 fabric 版本为 v1.4.3,与其它版本的网络存在差异。 手动启动 first-network 网络系列分为三部分: 手动启动 first-network 网络(一) 手动启动 first-network 网络(二) 手动启动 first-network 网络(三) 第一篇单纯使用命令行的形式执行 byfn.sh 脚本中的内容,第二篇和第三篇是对手动启动网络过程所使用的命令和配置文件的解释。 1 启动分布式网络 手动生成 fabric 网络所需的配置文件(查看 手动启动 first-network 网络(二) )后,接下来需要启动区块链中提供网络服务的各个节点。fabric 采用容器技术,使用 docker-compose 这个工具来实现区块链网络所需的节点容器管理,实现方式只需要编写节点相应的配置文件即可。 1.1 docker-compose-cli.yaml 在 first-network 目录下提供了一个 dokcer-compose 工具所需的配置文件 docker-compose-cli.yaml ,我们使用该文件启动网络节点,下面是该文件的内容: version: '2' # 表示用的版本 2 的 YAML 版本 volumes: orderer.example.com: peer0.org1.example.com: peer1.org1

Hyperledger Fabric(3)通道与组织

て烟熏妆下的殇ゞ 提交于 2020-05-02 17:20:11
1,通道的结构 通道是Fabric中非常重要的概念( 类似微信群? ),它实质是 由 排序节点 划 分 和 管理 的 私有原子广播通道 ,目的是对通道的 信息 进行 隔离 ,使得 通道外 的实体 无法访问通道内 的信息,从而实现 交易 的 隐私性 。 目前通道分为 系统通道 (System Channel)和 应用通道 (Application Channel)。 排序节点 通过 系统通道 来 管理应用通道 , 用户的交易信息 通过 应用通道 传递。对 一般用户 来说, 通道是指应用通道 。系统通道与应用通道的关系如下图: 在文章 https://www.cnblogs.com/xdyixia/p/11765820.html 创始块的生成步骤中,就有 系统的创始块和 Channel的创始块两部分。 通道 由 排序服务节点 负责 管理 ,同时该节点还负责 排序 通道中的 交易 。在 通道 中一般 包含 有若干 成员(组织) ,若 两个网络实体 的 身份证书 能够追溯到 同一个根CA ,则认为 这两个实体 属于 同一组织 。此外,通道中的 每个组织 都会有 一个或以上 的“ 锚节点 ”,它 负责 与 其他组织 交 换共享账本的数据 。 (这里概念有点多,注意各个名词的关系) 创建通道 的时候 定义 了 成员 ,只有通过 成员 MSP 验证 的实体,才能够加入到 通道 并访问通道数据

Fabric1.4:手动启动 first-network 网络(二)

百般思念 提交于 2020-05-02 17:19:48
注意:本文所使用的 fabric 版本为 v1.4.3,与其它版本的网络存在差异。 手动启动 first-network 网络系列分为三部分: 手动启动 first-network 网络(一) 手动启动 first-network 网络(二) 手动启动 first-network 网络(三) 第一篇单纯使用命令行的形式执行 byfn.sh 脚本中的内容,第二篇和第三篇是对手动启动网络过程所使用的命令和配置文件的解释。 1 生成组织结构与身份证书 1.1 crypto-config.yaml 文件 fabric 网络必须指定成员参与才能正常进行交易,因此创建 fabric 网络环境中所需的组织结构及身份证书等密码信息是开发的第一步。证书信息在网络中代表实体的身份,用于实体间通信及交易时的签名与验证。 此步骤使用 cryptogen 工具为各种网络实体生成密码信息(x509 证书和签名密钥),而 cryptogen 需要将文件 crypto-config.yaml 作为参数配置,这个文件包含网络拓扑。下面是 first-network/crypto-config.yaml 文件: # "OrdererOrgs" -定义 Orderer 节点所属的组织信息 OrdererOrgs: - Name: Orderer # Orderer 组织的名称 Domain: example.com #

Fabric1.4:手动启动 first-network 网络(一)

喜夏-厌秋 提交于 2020-05-02 17:19:27
注意:本文所使用的 fabric 版本为 v1.4.3,与其它版本的网络存在差异。 手动启动 first-network 网络系列分为三部分: 手动启动 first-network 网络(一) 手动启动 first-network 网络(二) 手动启动 first-network 网络(三) 第一篇单纯使用命令行的形式执行 byfn.sh 脚本中的内容,第二篇和第三篇是对手动启动网络过程所使用的命令和配置文件的解释。 1 生成组织结构与身份证书 我们使用 cryptogen 工具将文件 crypto-config.yaml 作为参数配置生成组织结构与身份证书: $ cd ./fabric-sample/first-network $ ../bin/cryptogen generate --config=./crypto-config.yaml 执行完毕后,当前文件夹下会出现一个新的文件夹: crypto-config ,在该目录下就是存放刚刚生成的组织结构与身份证书。 <br> 2 生成网络启动的配置文件 我们使用 configtxgen 工具会将文件 configtx.yaml 作为参数配置生成网络启动的配置文件。 因此,我们需要告诉 configtxgen 工具在哪里寻找它需要的 configtx.yaml 文件,告诉它查看当前的工作目录: $ export FABRIC

搭建Fabric网络(三)artifacts是怎么生成的:cryptogen和configtxgen

那年仲夏 提交于 2020-05-02 17:19:08
在first - network里, ./ byfn . sh generate 可以生成artifacts文件。 generate参数其实是使用了cryptogen和configtxgen这两个工具,这两个工具分别生成不同的artifacts文件。 这里主要介绍详细介绍这两个工具的配置。 1, cryptogen ../ bin / cryptogen generate -- config =./ crypto - config . yaml 执行成功之后会显示 org1 . example . com org2 . example . com cryptogen工具生成了crypto-config文件夹,这个文件包含了各个节点的证书。 这些文件在以后我们都会用到。 创建Channel的config transaction export CHANNEL_NAME=mychannel && ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME 然后得到如下输出 2018-05-11 14:46:57.861 CST [common/tools/configtxgen] main -> INFO

hyperledge工具-configtxgen

帅比萌擦擦* 提交于 2020-05-02 16:10:05
参考http://www.blockchainbrother.com/article/1339 configtxgen是Hyperledger Fabric提供的用于通道配置的实用程序,主要生成以下3种文件: 排序服务节点使用的创世区块; 创建通道使用的通道配置交易; 更新通道用的锚节点交易。 目前,该工具主要侧重于生成排序服务节点的创世区块,但是将来预计增加生成新通道的配置以及重新配置已有的通道。 1.编译生成该configtxgen工具的方法与cryptogen相似,有两种办法: 该工具的源码在github.com/hyperledger/fabric/common/tools/configtxgen 1)在github.com/hyperledger/fabric目录下运行: vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ configtxgen -- help configtxgen: command not found vagrant@ubuntu -xenial:/opt/gopath/src/github.com/hyperledger/ fabric$ make configtxgen .build /bin/ configtxgen CGO_CFLAGS = " "