All Projects → MaiJiantian → hyperledger

MaiJiantian / hyperledger

Licence: other
区块链3.0 -> 超级账本hyperledger fabirc v1.1

Projects that are alternatives of or similar to hyperledger

fabric-token-sdk
The Fabric Token SDK is a set of API and services that lets developers create token-based distributed application on Hyperledger Fabric.
Stars: ✭ 63 (+8.62%)
Mutual labels:  hyperledger-fabric
hurley
The development environment toolset for blockchain projects
Stars: ✭ 79 (+36.21%)
Mutual labels:  hyperledger-fabric
fabric-smart-client
The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.
Stars: ✭ 40 (-31.03%)
Mutual labels:  hyperledger-fabric
BlockchainPublicRegulationFabric-Food
A Public Regulation Fabric example in the Food Industry
Stars: ✭ 47 (-18.97%)
Mutual labels:  hyperledger-fabric
HealthLedger
Application for tracking Organs donations in hospitals and minimizing the scope of Organ trafficking using Blockchain (Hyperledger) technology.
Stars: ✭ 29 (-50%)
Mutual labels:  hyperledger-fabric
brooklyn-hyperledger-kubernetes
Cloudsoft AMP blueprints for deploying Hyperledger Fabric onto Kubernetes
Stars: ✭ 14 (-75.86%)
Mutual labels:  hyperledger-fabric
OpenTender
E-portal for government tender process using Hyperledger (Blockchain) technology.
Stars: ✭ 18 (-68.97%)
Mutual labels:  hyperledger-fabric
monitoring ui
WARNING: This repository is no longer maintained ⚠️ This repository will not be updated. The repository will be kept available in read-only mode. Use React.js, Watson IoT Platform, and the Hyperledger Fabric Node SDK to interact with an IBM Blockchain service
Stars: ✭ 29 (-50%)
Mutual labels:  hyperledger-fabric
docker-hyperledger-fabric-peer
Docker image for Hyperledger Fabric Peer
Stars: ✭ 25 (-56.9%)
Mutual labels:  hyperledger-fabric
fabex
Block explorer for Hyperledger Fabric
Stars: ✭ 26 (-55.17%)
Mutual labels:  hyperledger-fabric
hlfabric-k8scc
Chaincode builder and launcher for Hyperledger Fabric on Kubernetes
Stars: ✭ 21 (-63.79%)
Mutual labels:  hyperledger-fabric
readme
The Blockchain Bible,a collections for blockchain tech,bitcoin,ethereum,crypto currencies,cryptography,decentralized solutions,business scenarios,hyperledger tech,meetups,区块链,数字货币,加密货币,比特币,以太坊,密码学,去中心化,超级账本
Stars: ✭ 46 (-20.69%)
Mutual labels:  hyperledger-fabric
fablo
Fablo is a simple tool to generate the Hyperledger Fabric blockchain network and run it on Docker. It supports RAFT and solo consensus protocols, multiple organizations and channels, chaincode installation and upgrade.
Stars: ✭ 121 (+108.62%)
Mutual labels:  hyperledger-fabric
fabric-iot
fabric-iot is a Blockchain Based Decentralized Access Control System in IoT
Stars: ✭ 50 (-13.79%)
Mutual labels:  hyperledger-fabric
hlf1.4-supply-chain
Supply chain proof of concept in Hyperledger Fabric. Network with four companies and a specific chaincode exposed as rest API
Stars: ✭ 30 (-48.28%)
Mutual labels:  hyperledger-fabric
opensource.com
Repo to hold open source articles that I write to opensource.com(Redhat)
Stars: ✭ 20 (-65.52%)
Mutual labels:  hyperledger-fabric
Probe
Probe is a web GUI application with for Hyperledger Fabric maintainer, user, research to find the best block config logic for specific chain-code.
Stars: ✭ 29 (-50%)
Mutual labels:  hyperledger-fabric
fabric-network-boilerplate
Boilerplate for starting your hyperledger fabric network
Stars: ✭ 63 (+8.62%)
Mutual labels:  hyperledger-fabric
hlf-sdk-go
Hyperledger Fabric Golang SDK
Stars: ✭ 37 (-36.21%)
Mutual labels:  hyperledger-fabric
Create-BlockchainNetwork-IBPV20
Creating a basic Blockchain network using the IBM Blockchain Platform
Stars: ✭ 74 (+27.59%)
Mutual labels:  hyperledger-fabric

手把手教你hyperledger fabirc v1.1

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

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

0.环境搭建准备工作

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

image

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

1. 远超登录终端准备

用putty或者xshell远超连接进去

image

2. 安装git

apt-get update
apt-get install git

image

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

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

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

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

image

ubuntu14.04系统采用不支持systemctl

#重启docker服务
service docker restart

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

点击官方参考文档

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

image

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

image

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

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

image

7. 切换到first-network目录

image

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也不存在这个问题)

image

/etc/resolv.conf 注释掉 options timeout:2 attempts:3 rotate single-request-reopen 重新执行

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

就能够正常启动了.

10. 验证网络搭建

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

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

11. 停止网络请使用命令

./byfn.sh -m down

12. 切换到basic-network目录

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

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

image

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

14. 修改 脚本 start.sh

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

15. 启动脚本 'start.h'

image

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

16. 查看状态

image

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文件 image

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('MaiJiantian 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://172.17.0.1:7052

image

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/[email protected]/msp peer chaincode install -l node -n mycc -v v0 -p /opt/gopath/src/github.com/mycc/

image

22. 在peer上实例化链码

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/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

image

23. 测试链码调用

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

image

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

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

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

25. 停止网络使用

./stop.sh ./teardown.sh

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

docker ps

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].