下面会介绍hyperledger/fabric-sdk-node的使用并如何跑测试用例
fabric-sdk-node是IBM开源的区块链项目hyperledger/fabric的node sdk
这里需要fabric,fabric-ca,fabric-sdk-node,具体都在https://github.com/hyperledger这个里面
首先clone fabric项目
git clone https://github.com/hyperledger/fabric.git
具体如何搭建fabric环境这里不细写了,回头再单独写一下,比较复杂。这里我们就写最关键直接的,这一步其实可以不需要,关键是需要fabric相关的那几个docker image,如果你有其他的路径能下载到,可以不用这样
cd fabric
make docker
再次强调一下,这一步其实可以不需要,关键是需要fabric相关的那几个docker image,如果你有其他的路径能下载到,可以不用这样
git clone https://github.com/hyperledger/fabric-ca.git
cd fabric-ca
make docker
再次强调一下,这一步其实可以不需要,关键是需要fabric相关的那几个docker image,如果你有其他的路径能下载到,可以不用这样
git clone https://github.com/hyperledger/fabric-sdk-node.git
如果你对node很熟悉,也可以直接用node命令来跑,下面给个例子:
node test/integration/e2e/query.js
cd fabric-sdk-node
npm install
peer、orderer、ca都需要跑起来,如果用的couchdb,还会有
cd fabric-sdk-node/test/fixtures/
docker-compose up -d
cd $GOPATH/src/github.com/hyperledger/fabric-sdk-node
gulp ca
gulp test
因为现在sdk还不成熟,出于调试而修改fabric-ca-client或者fabric-client里面的代码总是无法自动被npm加载,提供下面的办法
cd $GOPATH/src/github.com/hyperledger/fabric-sdk-node
修改build/task/ca.js
文件
const DEPS = [
'fabric-client/lib/api.js',
'fabric-client/lib/hash.js',
'fabric-client/lib/utils.js',
'fabric-client/lib/Config.js',
'fabric-client/lib/Remote.js',
'fabric-client/lib/impl/CouchDBKeyValueStore.js',
'fabric-client/lib/impl/CryptoSuite_ECDSA_AES.js',
'fabric-client/lib/impl/ecdsa/*',
'fabric-client/lib/impl/CryptoKeyStore.js',
'fabric-client/lib/impl/FileKeyValueStore.js',
'fabric-ca-client/lib/FabricCAClientImpl.js'
];
在这个数组里面添加你需要修改的文件,然后每次修改完文件后,执行gulp ca
你修改的文件就会被自动拷贝到npm安装的目录里面
我在搭建这一套环境的时候发现ca的container一直没法正常启动,经过研究代码发现,有个配置是有问题的,这个可能是sdk更新没跟上的原因吧。
cd $GOPATH/src/github.com/hyperledger/fabric-sdk-node
修改文件test/fixtures/fabricca/tlsOrg1/fabric-ca-server-config.yaml
改动如下:
- certfiles: db-server-cert.pem # Comma Separated (e.g. root.pem, root2.pem)
+ certfiles:
+ - db-server-cert.pem # Comma Separated (e.g. root.pem, root2.pem)
也可以看一下我GitHub的分支https://github.com/chenshuijin/fabric-sdk-node/tree/fixe2etest
捐赠:
BTC: 1NTom3PgUct3WNmnBYNq5KGDQvY3MXs8dJ
ETH:0x8509f0F37497e094924F5c2e776e0dA522c57e43