fabric

Hyperledger Fabric密码模块系列之BCCSP(三)

会有一股神秘感。 提交于 2020-03-05 06:10:48
fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来提供加密、解密、签名验证以及哈希等操作。 fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都是封装go底层算法来实现的),这里的工厂模式代码不多,大家可以自己去fabric/bccsp/factory目录下阅读源代码,以后有时间单独作为一章来介绍。 sw在fabric项目发展中有一次较大的改动: 1、在fabric-1.0发布前,代码的结构是通过具体算法来组织的,比如ecdsa相关的生成密钥、签名以及验证等编写在同一个go文件中。 2、fabric-1.0发布后,代码按照bccsp接口实现来组织代码,比如关于密钥生成的操作KeyGen,aes,rsa以及ecdsa的密钥生成操作都组织到一个go文件中,它们都实现了同一个接口KeyGenerator,当调用bccsp的密钥生成算法KeyGen的时候,通过反射的机制来判断具体需要生成什么类型的密钥。新版本的优点是更加容易扩展,bccsp实现代码更加简洁。 以下不作说明,以fabric-1.0版本以后的sw来介绍。本着“无图说个j8”原则,先附一张sw下的文件列表图: 好了,这就是bccsp子包sw里面的代码,从文件名字上来看,主要分为6类: 1、internals.go:定义了一组接口,每个接口对应bccsp接口中的一个函数

Hyperledger Fabric(四)first-network案例中的主要配置文件及主要脚本

﹥>﹥吖頭↗ 提交于 2020-03-04 02:50:06
主要配置文件: 1.crypto-config.yaml Cryptogen工具使用该文件生成“密码材料”,即Fabric网络中各种实体(peer、order、ca)所需的证书及密钥。crypto-config.yaml包含网络拓扑结构定义,Cryptogen以其为基础为组织(包括order)和属于这些组织的组件(peer和ca)生成证书及密钥。该配置文件中的“count”变量用来指定每个组织的对等点数量,文件的其余部分较容易理解。 cryptogen generate --config=./crypto-config.yaml #运行该工具后,这些证书将被放置在一个名为“crypto-config”的文件夹中。 2.configtx.yaml configtx.yaml包含一个联盟网络(通道)的定义。该文件首先指定每个成员组织的MSP目录的位置(order创世区块中需要存储成员组织的根证书)、组织的锚节点等。然后指定了一个联盟(联盟中可以创建多个通道)由哪些组织构成,以及order服务的相关配置(共识类型,区块大小等)。此外该文件还规定了系统通道和普通通道的一些访问控制策略。 configtxgen工具基于configtx.yaml配置文件创建四个工件:genesis.block,channel.tx,Org1MSPanchors.tx,Org2MSPanchors.tx

Hyperledger Fabric 实战(十二): Fabric 源码本地调试

萝らか妹 提交于 2020-03-02 00:58:57
借助开发网络调试 fabric 源码本地调试 准备工作 IDE Goland Go 1.9.7 fabric-samples 模块 chaincode-docker-devmode fabric 源码 步骤 添加本地域名 127.0.0.1 peer 127.0.0.1 orderer 用 ide 打开 $GOPATH 下的fabric源码目录 在源码目录下添加 dev-network 把 sampleconfig 下的所有文件复制到 dev-network 修改 core.yaml 中 fileSystemPath = fabric源码目录下dev-network/production/peer(绝对路径) 修改 orderer.yaml 中 Location = fabric源码目录下dev-network/production/orderer(绝对路径) 在 dev-network 新建 config,并复制 fabric-samples 模块 chaincode-docker-devmode下的 myc.tx 和 orderer.block 1,接着调试网络,用debug模式运行 order 下的 main.go 文件 并添加配置,绝对路径的地方相对修改,然后运行 Environment: ORDERER_GENERAL_LISTENADDRESS=0.0.0.0

Hyperledger Fabric和VSCode的IBM区块链扩展开发智能合约

喜夏-厌秋 提交于 2020-03-02 00:32:47
了解使用IBM Blockchain Platform的VSCode扩展来简化开发,测试和部署智能合约的过程。完成本教程后,你将了解如何使用VSCode在本地Hyperledger Fabric网络上快速开发,演示和部署区块链应用程序。本教程假设你对Hyperledger Fabric有一些基本的了解。 学习目标 安装IBM Blockchain Platform VSCode扩展。 创建一个新的JavaScript智能合约。 打包智能合约。 创建,探索和了解Hyperledger Fabric网络。 在本地Hyperledger Fabric实例上部署智能合约。 使用Node.js SDK与已部署的智能合约包进行交互。 先决条件 你需要安装以下内容才能使用扩展程序: node v8.x或更高版本以及npm v5.x或更高版本 。 Yeoman(yo) v2.x 。 Docker版本v17.06.2-ce或更高版本 。 Docker Compose v1.14.0或更高版本 。 VSCode 1.28.2或更高版本 。 如果你使用的是Windows,则还必须确保以下内容: 你的Windows版本支持Hyper-V和Docker: Windows 10 Enterprise,Pro或具有1607 Anniversary更新或更高版本的教育版。 Docker for

Fabric网络环境启动过程详解

泪湿孤枕 提交于 2020-03-01 08:08:31
本文首发于 深入浅出区块链社区 原文链接: Fabric网络环境启动过程详解 原文已更新,请读者前往原文阅读 这篇文章对fabric的网络环境启动过程进行讲解,也就是我们上节讲到的启动测试fabric网络环境时运行network_setup.sh这个文件的执行流程 fabric网络环境启动过程详解 上一节我们讲到 fabric网络环境的启动测试,主要是使用 ./network_setup.sh up 这个命令,所以fabric网络环境启动的重点就在network_setup.sh这个文件中。接下来我们就分析一下network_setup.sh这个文件 network_setup.sh其中包括两个部分,一个是利用generateArtifacts.sh脚本文件配置组织关系和颁发证书、公/私钥、通道证书等,另一个是docker-compose-cli.yaml用于根据配置启动集群并测试chaincode的示例代码。下面是具体的流程图介绍: 首先看下generateArtifacts.sh脚本文件,它包含三个函数,分别是: 1.generateCerts: 该函数使用cryptogen工具根据crypto-config.yaml来生成公私钥和证书信息等。 2.replacePrivateKey: 将docker-compose-e2e-template

【fabric实战指南一】Fabric v1.0 部署步骤

只愿长相守 提交于 2020-02-29 07:56:53
区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:吴寿鹤 来源: 区块链兄弟 原文链接: http://www.blockchainbrother.com/article/17 著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 以下命令在fabric v1.0 中都可以正确运行 部署前准备 : docker 1.12.6 docker-compose 1.11.2 golang 1.8 git fabric1.0的部署环境有一点复杂,而且在fabric1.0的部署运行过程中需要用到大量的docker命令,为此我们发布了两篇文章专门讨论的这个问题,可以参考一下。 fabric1.0安装部署之前的相关的环境和组件的准备 fabric1.0安装过程中需要用到的docker命令 接下来我们将开始运行一个fabric 自带的e2e_cli 例子 下图是我们例子中的网络结构图: 下载Fabric 源码 mkdir -p $GOPATH/src/github.com/hyperledger/ cd $GOPATH/src/github.com/hyperledger/ git clone https://github.com/hyperledger/fabric.git git reset --hard

项目部署,环境搭建(pip/ makefile)

萝らか妹 提交于 2020-02-28 20:38:49
1 python包管理--pip pip search 你想要的包 # 查询相关包 pip install 包名 [==版本号]; # 指定版本可选 pip freeze >requires.txt # 导出当前环境下的配置列表 pip install -r requires.txt # 根据配置列表文件安装指定版本包 2 makefile 脚本环境搭建 unix系上脚本可以做到自动化运维;执行make,会自动寻找当前目录下的makefile/Makefile文件; makefile语法: 目标 : 条件 脚本 举例: clean: find . -name '*.pyc' -delete 命令行执行 make clean 即可 3 Fabric 自动化运维利器 官网 http://www.fabfile.org/ 入门文档 http://docs.fabfile.org/en/1.10/tutorial.html 命令行fab -f 指定fabfile模块,默认当前目录下fabfile.py; -H, --hosts 指定远程主机,多个用' , '分隔,格式同 ssh的host_string,即 username@host; -l 显示当前fabfile中可用命令 --colorize-errors 错误信息作色 举个栗子~ #!/usr/bin/env python #

不同的区块链技术,涉及那些编程语言?

我们两清 提交于 2020-02-28 19:59:24
区块链技术入门,涉及那些编程语言?在本文中,将介绍比特币、超级账本Fabric和以太坊这三种区块链中,分别使用什么开发语言来进行智能合约编程,并提供你进一步学习的资源链接。 小调查:你对哪种区块链上的智能合约开发感兴趣?可以留言回复。 比特币 比特币是第一个真正意义上的区块链,不过,从严格意义上来讲,它对智能合约的开发者是不友好的。 可以用一种低门槛的编程语言 Bitcoin Script 在比特币系统上编写智能合约。每个比特币地址都对应着一个Bitcoin Script程序。看起来是这样: IF 2 <Alices' pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIG ELSE "30d" CHECKSEQUENCEVERIFY DROP <Alices' pubkey> CHECKSIG ENDIF 另一种较高级别的语言是Ivy,它可以编译成Bitcoin Script。Ivy能够帮助你编写自定义的比特币地址,这种地址与隔离见证(SegWit)兼容,在比特币协议(包括签名检查、hash特征值(commitment)和时间锁)的支持下,可以执行任意条件组合。例如: contract EscrowWithDeplay{ sender: PublicKey recipient: PublicKey, escrow:

Hyperledger Fabric Node.js如何使用基于通道的事件服务

匆匆过客 提交于 2020-02-28 16:58:49
本教程说明了基于通道的事件的使用。这些事件与现有事件类似,但是特定于单个通道。在设置侦听器时,客户端处理基于通道的事件有一些新选项。从v1.1开始,基于通道的事件是Hyperledger Fabric Node.js客户端的新功能。 有关Fabric入门的更多信息,请查看 构建你的第一个网络 或者 手把手教你走进Hyperledger Fabric 。 以下假设了解Fabric网络(orderers和peer)以及Node应用程序开发,包括使用Javascript Promise。 概述 客户端应用程序可以使用Fabric Node.js客户端注册“侦听器”以在将块添加到通道分类帐时接收块。我们将这些称为“基于通道的事件”,它们允许客户端开始接收来自特定块编号的块,从而允许事件处理在可能已丢失的块上正常运行。Fabric Node.js客户端还可以通过处理传入的块并查找特定的交易或链代码事件来协助客户端应用程序。这允许客户端应用程序被通知交易完成或任意链代码事件,而不必在接收时执行多个查询或搜索块。 该服务允许任何用户接收“过滤的”块事件(换句话说,不包含敏感信息)。接收“未过滤”的块事件需要对通道进行读访问。默认行为是连接以接收过滤的块事件。要连接以接收未过滤的块事件,请调用 connect(true) (参见下文)。 请注意,如果你注册块事件然后提交交易

Azure Service Fabric 开发环境搭建

試著忘記壹切 提交于 2020-02-28 08:45:35
微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信。每个微服务都在特定的界定上下文(每服务)中实现特定的端到端域和业务功能,并且必须由自动机制进行自主开发和独立部署。最后,每个服务都应该拥有自己的相关域数据模型和域逻辑,并能使用不同的数据存储技术(SQL 和非 SQL),对每个微服务使用不同的编程语言。 为什么要使用微服务? 一言以蔽之,就是因为灵活性。从长远来看,微服务能够将应用程序设计为基于许多可独立部署且能制定具体发布规划的服务,从而可以在复杂的可高度扩展大型系统中实现极高的可维护性。 微服务的另外一大优势是,可以独立扩展。您可以扩展特定的微服务,而无需一次性扩展庞大的应用程序块整体。这样一来,可以单独扩展需要更多处理能力或网络带宽以支撑需求的功能区域,而不用扩展应用程序中实际并不需要更多处理能力或网络带宽的其他区域。 通过构建精细的微服务应用程序,您可以持续集成和开发,并能加速在应用程序中实现新功能。通过精细分解应用程序,您还可以单独运行和测试微服务,并能在保持微服务之间的严格协定的同时独立发展微服务。只要您不破坏协定或接口,就可以在后台更改任何微服务实现,并能添加新功能,而不破坏其他依赖微服务。 使用微服务方法,根本宗旨就是借助灵活更改和快速迭代实现高效率