一、超级账本初体验

根据《深度探索区块链——Hyperledger技术与应用》的内容及实际操作进行摘要和记录。使用Ubuntu 16.04,下载Hyperledger Fabric 1.0进行学习。

1. 基本环境安装:Hyperledger Fabric 1.0依赖Docker执行智能合约,需要先安装Docker和Docker Compose的运行环境。

(1) Docker的安装和使用

a) Ubuntu安装Docker

方式一:终端输入  sudo apt-get install docker.io

方式二:官方详解  https://docs.docker.com/install/linux/docker-ce/ubuntu/

完成后可以使用docker -v查看版本信息。

b) 用户加入到docker组

sudo groupadd docker                       ##添加用户组

sudo usermod -aG docker $USER     ##非root用户可以执行docker命令

c) 重启Docker服务

sudo service docker start

(2) Docker Compose的安装和使用

使用通过pip进行安装

sudo apt install python-pip

sudo pip install docker-compose

完成后可以使用docker-compose -v查看版本信息

遇到问题:

a) 要求升级pip   sudo pip install --upgrade pip

b) 升级后执行pip命令报错:ImportError: cannot import name ‘main‘

解决方法:打开pip配置文件   sudo gedit /usr/bin/pip

将文件中 from pip import main  改为 from pip._internal import main 保存

(3) 下载超级账本源代码

超级账本源代码位于https://github.com/hyperledger/fabric中,可直接使用网页下载release-1.0或者使用git

git clone https://github.com/hyperledger/fabric.git

cd fabric

git checkout -b v1.0.0

实际使用方法为直接下载https://github.com/hyperledger/fabric/tree/release-1.0,并在文件夹中解压zip

sudo unzip fabric-release-1.0.zip

sudo mv  fabric-release-1.0  fabric   ##重命名

2. 超级账本部署调用

(1) 下载超级账本Docker镜像文件

#进入 fabric/scripts目录,修改文件属性
chmod +x bootstrap.sh
#直接下载Docker镜像文件
./bootstrap.sh

下载内容较多,需要等待时间较长。如下载过程中报错或未下载完成,可以再执行下载代码(./bootstrap.sh)。

完成后使用docker images,至少包括以下内容

(2)部署超级账本网络

运行Hyperledger需要较多初始化配置,该出先绕开初始化过程,本处先用fabric-samples为例,了解网络部署。

a) 下载fabric-samples,可以直接使用网页下载fabric-samples-release-1.0或者使用git

##在文件夹中解压zip

sudo unzip fabric-samples-release-1.0.zip

sudo mv fabric-samples-release-1.0  fabric-samples   ##重命名

b) 利用docker-compose启动容器

cd fabric-samples/basic-network

docker-compose -f docker-compose.yml up -d

成功启动后,可使用docker ps查看已启动的容器

c) 切换到管理员,用户再创建通道和加入通道

##切换到root
sudo -i
##切换环境到管理员用户的MSP,进入Peer节点容器peer0.org1.example.com
docker exec -it -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" peer0.org1.example.com bash
#创建通道
peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
#加入通道
peer channel join -b mychannel.block
#退出Peer节点容器peer0.org1.example.com
exit

##进入cli容器安装链码和实例化
docker exec -it cli /bin/bash
# 给Peer节点peer0.org1.example.com 安装链码
peer chaincode install -n mycc -v v0 -p github.com/chaincode_example02
# 实例化链码,a分为100,b分为200
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v v0 -c ‘{"Args":["init","a","100","b","200"]}‘

(3) 链码调用和查询

a) 查询初始值,例如查询a

peer chaincode query -C mychannel -n mycc -v v0 -c ‘{"Args": ["query", "a"]}‘

b) 调用链码,从“a”转移10到“b”

peer chaincode invoke -C mychannel -n mycc -c c0 -c ‘{"Args": ["invoke", "a", "b", "10"]}‘

再查询a和b结果显示,"a"的值为Query Result:90,"b"的值为Query Result:210。

原文地址:https://www.cnblogs.com/zhangjbravo/p/11226997.html

时间: 2024-10-12 02:51:08

一、超级账本初体验的相关文章

1Python全栈之路系列之Django初体验

Python全栈之路系列之Django初体验 Django不得不说在Python中是一个非常强大的全栈框架,而且入门也比较简单,只要你学完了基本的Django知识,接着再做一两个项目,不大不小就成,然后你再去学其它的框架你会发现,在那些小而美的框架中,你学起来将非常的快,因为你在学习Django的时候就已经学习并且体验过了Web开发流程,所以会有这么一个现象出现,有些新手朋友在学习Flask.Tornado等小而美的框架时,很多概念不是很理解,比如ORM.路由等,但你学Django就不会出现这种

win7升win10,初体验

跟宿舍哥们聊着聊着,聊到最近发布正式版的win10,听网上各种评论,吐槽,撒花的,想想,倒不如自己升级一下看看,反正不喜欢还可以还原.于是就开始了win10的初体验了,像之前装黑苹果双系统一样的兴奋,毕竟windows这次系统升级可是做足了功夫,宣传得到处都是win10升级的消息. 好,开干 一般大家都以为没有预约就升级不了win10了,其实并不是这样,我就没预约,只要你windows是激活状态(估计没有谁用的是不激活的吧)就可以升级win10,不过激活的方式不一样,得到的结果也会不一样,比如K

超级账本HyperLedger旗下项目介绍

说明 超级账本HyperLedger视频教程汇总:HyperLedger Fabric的视频讲解--"主页"中可领优惠券 超级账本HyperLedger旗下有很多的项目,对这些项目进行了简单的了解. As an open consortium, Hyperledger incubates a range of business blockchain technologies, including distributed ledger frameworks, smart contract

erlang 初体验

最近测试了一下 erlang的坑... 如不出意外.... 大家第一眼看到这语法... 心里第一句一定是"我擦.这TM都是啥!!!!!" 没有变量!!! 没有结构体!!! 没有循环!!! 好吧,至少我是这样想的. 找了半天..连个if也不知道怎么写.. 这记录一些基本常识.. -module(module_name)  %%定义模块 括号内的要和文件名相同. -export([fun1/1 fun2/2]) %%这里是导出2个函数对外使用  函数名/参数名. 一个简单的函数定义如下 f

linux初体验

第一次听到linux这个'词语'是在一次偶然的朋友聊天中朋友提到的,之前压根没听到过'这个东西',所以我可以说是个linux的新新手,菜鸟都不算. 截至到目前,我已经开始linux系统运维学习有差不多10天时间了.在没接触linux之前,我对它的认识仅仅是:它是个计算机系统.决定学习linux系统运维之前,自我以为运维应该是对系统的一些日常维护之类的,不会很难的东西,我更希望运维是个不难的东西,我个人很笨,对难的东西可能接受的很慢,所以我愿意认为运维是很简单的,这样我就可以轻轻松松的掌握运维相关

【Spark深入学习 -15】Spark Streaming前奏-Kafka初体验

----本节内容------- 1.Kafka基础概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知识 1.2.2.架构和原理 1.2.3.基本概念 1.2.4.kafka特点 2.Kafka初体验 2.1 环境准备 2.2 Kafka小试牛刀 2.2.1单个broker初体验 2.2.2 多个broker初体验 2.3 Kafka分布式集群构建 2.3.1 Kafka分布式集群构建 2.3.2 Kafka主题创建 2.3.3 生产者生产数据 2.3.4消费者消费数据 2.3.5消息的

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的

hibernate--CRUD初体验

hibernate的crud操作初体验. 看具体实例 package com.fuwh.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.annotations.GenericGenerator; @Entity publ

区块链组织-超级账本(Hyperledger)的简介

区块链上有国外比较著名的组织比如R3联盟.超级账本(Hyperledger),国内的中国区块链研究联盟(China Blockchain Research Alliance).中国分布式总账基础协议联盟(China Ledger联盟).金融区块链合作联盟等. 超级账本(Hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程.创始人有IBM.Intel.思科等大公司.2