WHAT WE HAVE:
1.采用ABAC作为权限控制方法,用golang实现了chaincode.
2.编写了完整的脚本,轻松启动fabric-iot网络.
3.详细的步骤说明,浅显易懂.
github : hyperledger-fabric
doc 1.4
node-sdk 1.4
OS | 版本 |
---|---|
mac os | >=10.13 |
ubuntu | 16.04 |
软件 | 版本 |
---|---|
git | >=2.0.0 |
docker | >=19 |
docker-compose | >=1.24 |
node | >=12 |
golang | >=1.10 |
Hyperledger Fabric | =1.4.* |
*请将golang、node的\bin加入PATH
*本次实验基于Fabric 1.4.3,默认下载的Fabric版本是1.4.3
*如果需要修改版本,请更改 bootstrap.sh
VERSION=1.4.3
CA_VERSION=1.4.3
go get github.com/newham/fabric-iot
下载源码和bin
./bootstrap.sh
export PATH
export PATH=$PATH:$(pwd)/fabric-samples/bin
*之后的诸如【启动网络、安装链码等操作需要先export PATH,这是让系统知道Hyperledger Fabric的bin目录】
*也可将其加入path中
|-chaincode....................................链码目录
|--go....................................................golang编写的chaincode代码
|-client............................................交互客户端
|--nodejs..............................................nodejs编写的客户端代码
|-network........................................fabric-iot网络配置和启动脚本
|--channel-artifacts..............................channel配置文件,创世区块目录
|--compose-files...................................docker-compose文件目录
|--conn-conf.........................................链接docker网络配置目录
|--crypto-config....................................存放证书、秘钥文件目录
|--scripts...............................................cli运行脚本目录
|--ccp-generate.sh...............................生成节点证书目录配置文件脚本
|--ccp-template.json.............................配置文件json模板
|--ccp-template.yaml.............................配置文件yaml模板
|--clear-docker.sh................................清理停用docker镜像脚本
|--configtx.yaml....................................configtxgen的配置文件
|--crypto-config.yaml...........................生成证书、秘钥的配置文件
|--down.sh............................................关闭网络shell脚本
|--env.sh...............................................其他shell脚本import的公共配置
|--generate.sh......................................初始化系统配置shell脚本
|--install-cc.sh......................................安装链码shell脚本
|--rm-cc.sh...........................................删除链码shell脚本
|--up.sh................................................启动网络shell脚本
2.搭建网络 分布式版本
进入目录
cd network
运行脚本
./generate.sh
证书保存在crypto-config
中
./up.sh
./cc-install.sh
./cc-upgrade.sh [new version]
*chaincode被保存在/chaincode/go
目录中,目前只用golang
实现
./down.sh
*每次关闭网络会删除所有docker容器和镜像,请谨慎操作
进入shell脚本目录
cd network
调用链码(示例代码在cc-test.sh
)
# invoke
# shell|action|cc_name|cc_version|cc_src|fname|args
# add policy
./cc.sh invoke pc 1.0 go/pc AddPolicy '"{\"AS\":{\"userId\":\"13800010001\",\"role\":\"u1\",\"group\":\"g1\"},\"AO\":{\"deviceId\":\"D100010001\",\"MAC\":\"00:11:22:33:44:55\"}}"'
# query policy
./cc.sh invoke pc 1.0 go/pc QueryPolicy '"40db810e4ccb4cc1f3d5bc5803fb61e863cf05ea7fc2f63165599ef53adf5623"'
进入客户端代码目录
*目前只实现了nodejs的客户端
cd client/nodejs
安装依赖
npm install
创建管理员账户
node ./enrollAdmin.js
用管理员账户创建子用户
node ./registerUser.js
node ./invoke.js [chaincode_name] [function_name] [args]
©2019 [email protected] all rights reserved.