手把手教你 hyperledger fabirc v1.1 - 文章教程

手把手教你 hyperledger fabirc v1.1

发布于 2021-08-10 字数 8873 浏览 892 评论 0

视频教程:https://pan.baidu.com/s/1mFMPIXTSR1-wuRaLm7y6hw

网上大多数 hyperledger fabric 的教程都是基于 0.6 或者 1.0 等比较老的版本,主要采用 go 语言开发 chaincode,采用 java-sdk 去调用链码。

从 fabirc1.1 开始,官方推荐使用 nodejs 去开发链码,node-sdk 调用代码,带您使用 nodejs 开发 hyperledger。

0.环境搭建准备工作

建议使用 ubuntu 服务器,这里我直接使用了阿里云的乞丐版服务器,配置如下:

手把手教你 hyperledger fabirc v1.1

操作系统为 Ubuntu 14.04 64位 为保证后续步骤一致,请使用跟我相同的版本。

1. 远超登录终端准备

用 putty 或者 xshell 远超连接进去

手把手教你 hyperledger fabirc v1.1

2. 安装 git

apt-get update
apt-get install git

手把手教你 hyperledger fabirc v1.1

3. 安装docker-ce

请不要直接 apt 安装旧版本的 docker

阿里云安装 docker 教程

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

安装完毕后效果如下,查看版本

手把手教你 hyperledger fabirc v1.1

4. 设置阿里云 docker 加速服务

从 docker 官方的镜像服务器里面下载 image 非常慢,使用阿里云的好处是可以拥有阿里的镜像加速服务,速度可以达到百兆级别,如果不配置也没有问题,多等一段时间就行了。

手把手教你 hyperledger fabirc v1.1

ubuntu 14.04 系统采用不支持 systemctl

#重启docker服务
service docker restart

5. 安装 hyperledger 的工具和 docker 镜像

点击官方 参考文档

注意:按照官方文档执行,需要全局翻墙才行。

手把手教你 hyperledger fabirc v1.1

安装完检查目录结构和 docker 镜像:

手把手教你 hyperledger fabirc v1.1

6. 下载官方的示例代码 fabric sample

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

手把手教你 hyperledger fabirc v1.1

7. 切换到 first-network 目录

手把手教你 hyperledger fabirc v1.1

8. 启动 fabric ledger 的第一个网络

运行如下命令:

#1. 配置环境变量, fabirc的二进制工具
export PATH=/root/bin:$PATH
#2. 生成hyperledger fabric的各种区块链配置
./byfn.sh -m generate
#3. 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
参考文档  https://github.com/docker/compose/releases
#4. 启动first-network
./byfn.sh -m up

9. 修复阿里云服务器网络错误的问题

腾讯云不存在这个问题,自己装 ubuntu 也不存在这个问题。

手把手教你 hyperledger fabirc v1.1

/etc/resolv.conf

注释掉 options timeout:2 attempts:3 rotate single-request-reopen 重新执行

./byfn.sh -m down
./byfn.sh -m up

就能够正常启动了.

10. 验证网络搭建

接下来你能看到,peer 节点启动,通道建立,加入通道,设置锚节点,实例化链码,调用链码等一系列的操作。如果你看到下面的图,恭喜你 你的网络搭建好了。

手把手教你 hyperledger fabirc v1.1

看到上面的截图,说明你的开发环境已经准备好,接下来我们就可以搭建自己的组织结构,编写 nodejs 的链码了。

11. 停止网络请使用命令

./byfn.sh -m down

12. 切换到 basic-network 目录

来到 fabirc-sample 目录的 basic-network 文件夹

13. 修改 basic-network 的 docker-compose.yml

手把手教你 hyperledger fabirc v1.1

说明:启用开发者模式,这样加快调试部署,减少资源开销,开启7052端口,开发模式下不使用 tls 会减少出错的概率,生产环境需要启用 tls

14. 修改 脚本 start.sh

手把手教你 hyperledger fabirc v1.1
增加 cli 节点,cli 是方面我们执行控制指令的终端。我们会使用他与各个 peer 节点进行交互。后面这些手动的命令,会通过 nodejs 的 api 来调用

15. 启动脚本 start.h

手把手教你 hyperledger fabirc v1.1

可以看到启动了 ca 节点。peer 节点,order 节点,cli 节点和 couchdb,创建了 channel,peer 加入了 channel

16. 查看状态

手把手教你 hyperledger fabirc v1.1

docker ps
#可以看到当前运行的docker容器, peer,order,couchdb,ca,cli节点
docker exec -it bash 
#进入cli容器
peer channel list
#查看当前peer加入的channel

17. chaincode 编写需要使用 nodejs

请安装>8.0版本的 nodejs,官网连接 点我直达

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

18.编写 nodejs 的 chaincode

#1.创建mycc文件夹
mkdir mycc
#2. 初始化package.json文件
npm init 
#3. 修改package.json文件
npm install --save fabric-shim --registry=https://registry.npm.taobao.org

成功后 目录结构如下:终于 package.json 文件

手把手教你 hyperledger fabirc v1.1

19. 编写 nodejs 链码

const shim = require('fabric-shim');
const Chaincode = class{
    //链码初始化操作
    async Init(stub){
        var ret = stub.getFunctionAndParameters();
        var args  = ret.params;
        var a = args[0];
        var aValue = args[1];
        var b = args[2];
        var bValue = args[3];
        await  stub.putState(a,Buffer.from(aValue));
        await  stub.putState(b,Buffer.from(bValue));
        return shim.success(Buffer.from('heima chaincodinit successs'));
    }
    
    async Invoke(stub){
        let ret = stub.getFunctionAndParameters();
        let fcn = this[ret.fcn];
        return fcn(stub,ret.params);
    }
    //查询操作
    async query(stub,args){
        let a = args[0];
        let balance = await stub.getState(a);
        return shim.success(balance);
    }

};
shim.start(new Chaincode());

20. 把 chaincode 注册给 peer

他们之间通过 grcp 协议通信

CORE_CHAINCODE_ID_NAME="mycc:v0"  npm start -- --peer.address grpc://192.168.0.1:7052

手把手教你 hyperledger fabirc v1.1

21. 在 peer 上 install 安装链码

这是 peer 上 chaincode 的生命周期

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode install -l node -n mycc -v v0 -p /opt/gopath/src/github.com/mycc/

手把手教你 hyperledger fabirc v1.1

22. 在 peer 上实例化链码

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode instantiate -l node -n mycc -v v0 -C mychannel -c '{"args":["init","zzh","100","czbk","100"]}' -o 192.168.0.1:7050

手把手教你 hyperledger fabirc v1.1

23. 测试链码调用

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode invoke -n mycc -C mychannel -c '{"args":["query","zzh"]}' -o 192.168.0.1:7050

手把手教你 hyperledger fabirc v1.1

可以查看到zzh账户上有100块钱.

24. 同理大家可以实现转账的操作.

试着自己实现一下 transfer 方法吧

25. 停止网络使用

./stop.sh ./teardown.sh

26. 查看环境是否清理干净

docker ps

无内容就说明环境清理干净

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2512 文章
30 评论
82727 人气
更多

推荐作者

瑾兮

文章 11 评论 2

carlo_sn

文章 0 评论 0

15867725375

文章 0 评论 0

a3576419

文章 0 评论 0

wendy

文章 0 评论 0