Hyperledger Fabric V1.0 跳坑玩耍

标签: 区块链 | 发表时间:2017-03-18 09:12 | 作者:cookedsteak
出处:https://segmentfault.com/blogs

       最近有个项目需要用到超级账本的概念,随后在网上查阅相关的信息。最后相中了 Fabric作为实验玩耍的目标。要玩就要玩最新的啦,所以舍弃了v0.6的版本,但是截至这篇文章摸出来,v1.0还处于alpha阶段。以下环境的搭建步骤很大一部分来自于 hyperledger-fabric.readthedocs.io,英语好的同学也可以直接看那边的教程。
(需要吐槽一下关于文章标签,因为我的声望不够所以不能编辑创建Hyperledger这个标签)

起跑

你要准备的

你最好

  1. 知道 GO的基本目录结构,和环境变量的设置

  2. 了解docker和docker-compose,以及一些基本操作

  3. 有翻墙条件

搭建

获取镜像

创建一个你需要放置源码的目录
$ mkdir -p <yourplayground>/hackfest
cd <yourplayground>/hackfest

下载必要的脚本,包含了Docker compose脚本、通道脚本、一些身份认证(原谅我不知道怎么翻译crypto material for identity attestation)等...
$ curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null; tar -xvf sfhackfest.tar.gz
解压完毕后可能会报一条tar的小错误,没有关系

查看你的目录结构,正常的应该如下:
图片描述
使用docker-compose,拉取fabric-peer, fabric-orderer, fabric-ca和cli
docker-compose的定义文件就是docker-compose-gettingstarted.yml
$ docker-compose -f docker-compose-gettingstarted.yml build

完成build操作后就可以启动容器了:
$ docker-compose -f docker-compose-gettingstarted.yml up -d

在这个执行过程中会使用 channel_test.sh脚本,创建、加入通道,点击 这里看下 channel_test.sh到底做了什么事情。

验证环境

利用 $ docker ps查看容器是否已经成功启动
正常的应该有6个容器正在运行,包含3个peer节点,一个orderer,一个CA和一个cli

我们进入cli容器中查看一下各个节点加入通道的情况
$ docker exec -it cli bash
命令行变成了
$ /opt/gopath/src/github.com/hyperledger/fabric/peer #
输入查看命令
$ more result.txt
得到结果

  SUCCESSFUL CHANNEL CREATION
SUCCESSFUL JOIN CHANNEL on PEER0
SUCCESSFUL JOIN CHANNEL on PEER1
SUCCESSFUL JOIN CHANNEL on PEER2

再看下 channel_test.sh脚本所创建的创世区块
$ more myc1.block
能够看到一长串创世区块的信息,那就对了
图片描述

获取SDK

在Fabric v1.0中,调用接口的方法有两种:CLI和SDK,因为Fabric中使用的全是grpc的通讯方式,所以利用SDK能更方便锻造我们自己的客户端,并与后端的区块链network进行通讯。
官方采用的方法是直接cUrl fabric-sdk-node项目中的examples,然后执行npm install安装依赖。
$ curl -OOOOOO https://raw.githubusercontent.com/hyperledger/fabric-sdk-node/v1.0-alpha/examples/balance-transfer/{config.json,deploy.js,helper.js,invoke.js,query.js,package.json}

下载完毕后执行
$ npm install
过程中可能会有报错,原因是文件夹的读写权限,解决方法--提权

设置GOPATH到我们的hackfest下
$ GOPATH=$PWD$ GOPATH='<path>/<to>/<your>/<hackfest>'
可以用 $ go env查看 GOPATH是否正确设置

至此,我们需要的环境和代码都搭建完成。

用SDK耍耍

注册并部署

执行deploy脚本注册并部署chaincode
$ node deploy
如果执行过程中出现 extension_binary/grpc_node.node的文件不错在错误,说明npm install没有成功,请重复上上步的 npm install

执行成功后返回一坨如下
图片描述
chaincode部署成功啦,并且我们初始化了一个模拟场景:
a 拥有 100 软妹币
b 拥有 200 软妹币

测试chaincode

软妹币的转移操作
执行 $ node invoke.js
a 的100软妹币转移给 b

查询结果

查询转移后的结果
执行 $ node query
得到结果会包含三条:

  [2017-03-18 15:47:06.676] [INFO] QUERY - ############### Query results after the move on PEER0, User "b" now has  "200"

说明我们的转移成功啦

到这里我们便完成了一个超级账本的模拟环境,并测试成功。
未完待续,下一版:+编写自己的chaincode

相关 [hyperledger fabric v1.0] 推荐:

Hyperledger Fabric V1.0 跳坑玩耍

- - SegmentFault 最新的文章
       最近有个项目需要用到超级账本的概念,随后在网上查阅相关的信息. 最后相中了 Fabric作为实验玩耍的目标. 要玩就要玩最新的啦,所以舍弃了v0.6的版本,但是截至这篇文章摸出来,v1.0还处于alpha阶段. 以下环境的搭建步骤很大一部分来自于 hyperledger-fabric.readthedocs.io,英语好的同学也可以直接看那边的教程.

Hyperledger Fabric V1.0 环境搭建 - 个人文章 - SegmentFault

- -
学习区块链技术有段时间了,刚好晚上有空把超级账本子项目fabric v1.0部署运行及开发环境的搭建过程整理下,编写的内容主要参照官方文档. 由于fabric项目目前还处于孵化阶段,正式版本预计5月份才会到来. 近期官方示例和文档也频繁更新中,本文内容主要基于源码中 “examples” 和 “devenv” 来完成fabric入门示例的快速部署运行和统一开发环境的搭建.

Hyperledger Fabric 1.0,基于区块链的分布式账本

- - 开源中国社区最新新闻
由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.0 版本. 该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作. Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币.

elasticsearch技术手册 v1.0

- - IT瘾-tuicool
[Atlas更新于2017-05-22]. 本手册内容是基于 elasticsearch5+版本. 集群(cluster)、节点(node)、索引(index)、分片(shards)、副本(replicas);. term、tf-idf、boost等. Elasticsearch 构建在lucene之上,提供json方式的rest api进行交互;.

Fabric批量远程执行操作

- - CSDN博客推荐文章
最近有个需求就是要在一个集群的多个机器上运行一些命令,比如启动、停止服务,运行一些脚本收集一些数据等,于是找到了python的一个框架Fabric. Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的主要功能包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等.

配置 fabric 穿越跳板机

- - 膘叔
在转这篇文章的时候,我觉得 很懒,所以我几乎没有排版就直接ctrl+c,ctrl+v就过来了. 下面是正文,链接来源是:https://mozillazg.com/2013/12/python-fabric-gateway.html. 说实话,跳板机给研发的日常工作添加了些许麻烦. 幸好 fabric 提供了穿越跳板机的功能,使跳板机不再影响我们的工作.

分布式知识的总结(V1.0)

- - 龙浩的blog
    Web服务无法同时满足以下3个属性. Consistency(一致性),数据一致更新,所有数据变动都是同步的. Availability(可用性),每个操作都必须以可预期的响应结束. Partition tolerance(分区容错性),即使出现单个组件无法可用,操作依然可以完成.     在任何数据库设计中,一个Web应用至多只能同时支持上面的两个属性,不可能三者兼顾.

基于fabric和hg的自动化部署

- - CSDN博客推荐文章
fabric是个很好用的自动化部署工具,虽然功能比起puppet,saltstack之类要弱一些,但胜在用python,而且免安装服务端. 当然你要说docker更好我也同意,然而我是经常使用FreeBSD的,而且还有一些32位的低配系统,并不适合用docker. 自动化部署的目的主要是简化手工部署的麻烦,包括初次安装部署和代码修改后的更新部署.

Emmet v1.0 发布,快速编写 HTML/CSS 代码

- - 开源中国社区最新新闻
Emmet 宣布 v1.0 发布了,这是从 Zen Coding 变身过来之后发布的首个版本. 该版本在 Zen Coding 基础上做了不少的调整,详情请看 发行说明. Emmet 是一组专门用来提高书写HTML和CSS代码速度的便利工具. 将它整合进文本编辑器,可以提供一些功能和快捷方式,加快开发速度.

Apache HBase v1.0 发布,分布式数据库

- - 开源中国社区最新新闻
Apache HBase v1.0 发布了,这是 HBase 一个主要的里程碑. 1.0 版本经过 7 年的开发,有超过 1500 次的更改和升级. 与上一个版本 0.98.0 比较,1.0 版本值得关注的改进有:. 性能提升,同时保持之前的稳定性. 全新 API 以及重新组织客户端 API. 新的可用性保证 —— 用时间表一致地区副本读取可用性.