本文Step by Step 搭建一个由IBM提供的基于Fabric的钻石交易展示平台。
本文环境是
ubuntu 16.04 4.4.0-104-generic
Docker version 17.03.0-ce, build 60ccb22
docker-compose version 1.14.0, build c7bdf9e
0.设置本地环境
0.1 安装git
省略
0.2 安装Go
下载Go for linux
https://studygolang.com/dl/golang/go1.10.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf /your-download-path/go1.10.linux-amd64.tar.gz
修改.bashrc 添加
export PATH=$PATH:/usr/local/go/bin
执行~/.bashrc
$ source ~/.bashrc
验证安装结果
$ go version
0.3 安装Node.js
Download and install Node.js v6.2.0
https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.gz
安装
$ sudo tar -C /usr/local -xzf /your-download-pathnode-v6.9.5-linux-x64.tar.gz
修改.bashrc 添加
export PATH=$PATH:/usr/local/node-v6.9.5-linux-x64/bin
执行~/.bashrc
$ source ~/.bashrc
验证安装结果
$ node -v
$ npm -v
1、下载钻石交易应用
$ git clone https://github.com/IBM-Blockchain/marbles.git --depth 1
$ cd marbles/
$ git checkout master
2、创建区块链网络
2.1 下载Fabric Sample
$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd fabric-samples
$ git checkout v1.1.0
$ curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o setup_script.sh
2.2 修改setup_script.sh
export VERSION=${1:-1.1.0}
export THIRDPARTY_IMAGE_VERSION=1.0.6
2.3 运行setup_script.sh下载平台相关的二进制文件和images
sudo bash setup_script.sh
2.4 为下载的image建立latest tag
docker tag hyperledger/fabric-tools:x86_64-1.1.0 hyperledger/fabric-tools:latest
docker tag hyperledger/fabric-orderer:x86_64-1.1.0 hyperledger/fabric-orderer:latest
docker tag hyperledger/fabric-peer:x86_64-1.1.0 hyperledger/fabric-peer:latest
docker tag hyperledger/fabric-javaenv:x86_64-1.1.0 hyperledger/fabric-javaenv:latest
docker tag hyperledger/fabric-ccenv:x86_64-1.1.0 hyperledger/fabric-ccenv:latest
docker tag hyperledger/fabric-couchdb:x86_64-1.0.6 hyperledger/fabric-couchdb:latest
docker tag hyperledger/fabric-kafka:x86_64-1.0.6 hyperledger/fabric-kafka:latest
docker tag hyperledger/fabric-zookeeper:x86_64-1.0.6 hyperledger/fabric-zookeeper:latest
2.5 编辑.bashrc把下载的二进制文件加入PATH环境变量
export PATH=$PWD/bin:$PATH
2.6 执行.bashrc
$ source ~/.bashrc
2.7 启动网络
$ cd ./fabcar
$ ./startFabric.sh
2.8 检查网络,执行docker ps 应该有红框内的5个containers.
image.png
2.9 安装测试所需的软件
$ npm install
2.10 用Fabcar测试网络
node enrollAdmin.js
node registerUser.js
node query.js
image.png
3.安装并实例化链代码
3.1 安装
$ cd /YOUR_PATH/marbles/
$ npm install
3.2 再次执行下面脚本去创建证书
$ cd /YOUR_FABRIC_SAMPLE_PATH/fabcar
$ node enrollAdmin.js
$ node registerUser.js
$ node query.js
3.3 修改marbles/config/connection_profile_local.json
"credentialStore": {
"path": "/YOUR_FABRIC_SAMPLE_PATH/fabcar/hfc-key-store"
}
"x-adminCert": {
"path": "/YOUR_FABRIC_SAMPLE_PATH/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem"
},
"x-adminKeyStore": {
"path": "/YOUR_FABRIC_SAMPLE_PATH/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/"
}
3.4 安装链码
$ ./scripts
$ node install_chaincode.js
image.png
3.5 实例化链码
$ node instantiate_chaincode.js
image.png
4. 托管 Marbles
$ cd ..
$ sudo npm install gulp -g
BTW: 解决“sudo: npm:找不到命令”问题
$ sudo ln -s /usr/local/node-v6.9.5-linux-x64/bin/node /usr/bin/node
$ sudo ln -s /usr/local/node-v6.9.5-linux-x64/lib/node /usr/lib/node
$ sudo ln -s /usr/local/node-v6.9.5-linux-x64/lib/npm /usr/lib/npm
$ npm install
image.png
4.5 运行钻石交易应用
$ gulp marbles_local
BTW:if you run into the issue like
error: [Client.js]: Failed to load user "admin" from local key value store. Error: TypeError: privateKey.isPublic is not a function
at _cryptoSuite.importKey.then.then (/home/yan/workspace/marbles/node_modules/fabric-client/lib/User.js:255:45)
error: [Client.js]: Failed to load an instance of requested user "admin" from the state store on this Client instance. Error: TypeError: privateKey.isPublic is not a function
at _cryptoSuite.importKey.then.then (/home/yan/workspace/marbles/node_modules/fabric-client/lib/User.js:255:45)
error: [fcw] Failed to get enrollment marblesDockerComposeNetworkmychannelOrg1MSPfabricpeerorg1 TypeError: privateKey.isPublic is not a function
at _cryptoSuite.importKey.then.then (/home/yan/workspace/marbles/node_modules/fabric-client/lib/User.js:255:45)
error: [fcw] could not format error
error: Exhausted all CAs. There are no more CAs to try.
error: could not enroll...
warn: Error enrolling admin
you may need copy hfc-key-store directory to your home directory $HOME/.hfc-key-store, and re-config the client.credentialStore.path of connection_profile_local.json
5 使用 Marbles
5.1 访问http://localhost:3001/login
image.png
5.2 点击Login 设置应用
image.png
点击Guided
image.png
点击next step
image.png
点击next step
image.png
点击next step
image.png
点击 create
image.png
点击next step
image.png
点击Enter
5.3 创建钻石
image.png
image.png
点击Create,查看控制台
image.png
image.png
image.png
image.png
5.4 交易钻石,拖拽Amy的蓝钻给Alice
image.png
image.png
image.png
image.png
5.5 删除钻石
image.png
image.png
image.png
image.png
5.5 故事模式
点击Settings
image.png
image.png
点击Enable然后交易钻石
image.png
image.png
未完待续......