关于 fabric-node-sdk

安装fabric-node-sdk的时候,出现下面错误

No command 'gulp' found

按照这篇文章更改npm目录,gulp通过。

http://www.mamicode.com/info-detail-1687014.html

-----------------安装fabric-node-sdk过程------------------

cd $GOPATH/src/github.com/hyperledger
Git clone https://github.com/hyperledger/fabric-sdk-node.git
cd $GOPATH/src/github.com/hyperledger/fabric-sdk-node

git checkout -b v1.0.0-beta refs/tags/v1.0.0-alpha2

npm install

npm install --global gulp-cli
npm install --save-dev gulp

apt install jq
gulp ca
#测试一下安装结果
npm test

cd $GOPATH/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric-samples.git
cd $GOPATH/src/github.com/hyperledger/fabric-samples/balance-transfer
ln -s $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/crypto-config ./crypto-config

ln -s $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/channel-artifacts ./channel-artifacts


config.json,network-config.json的设置根据上面映射路径需要更改

等所有都配置好了再执行下面

cd ...src/github.com/hyperledger/fabric-samples/balance-transfer
npm install

--------------------------------------------------------------

以下两种场合,需要清理key
1,crypto-config发生变更
2,rest服务初期状态返回再启动
rm -rf /tmp/fabric-client-kvs* ~/.hfc-key-store

--------------------------------------------------------------

测试途中发生异常,比如creat channel通过没问题,join channel时出错,
第二次再执行的时候,需要把所有容器重新启动,为了清理上一次执行的记录
sudo lsof -i:4000 //列出4000端口下的进程 
sudo kill -9 xxxx // xxxx指的是进程的PID

sudo kill -9 $(sudo lsof -i:4000 | awk '{print $2}' | grep [0-9])

PORT=4000 node app

---------------------------------------------------------------

sdk工程和fabric-example工程都有node_modules,

可以删除node_modules的一部分引用,

利用下面方法共享sdk元代码

#源代码目录

cd ../../fabric-ca-client
sudo npm link

cd ../../node_modules
sudo npm link fabric-ca-client

另外fabric-ca-client里面不能debug,但是logger.error可以用,原因不明。。。

--------------------------------------------------------------------

sdk说明

https://github.com/flyinox/hyperledgerDocs/blob/bccsp-dev/docs/sdk-design_zh.md

----------------------------------------------------------------------------------------

验证从ca服务器返回的tls证书,需要追加ca 和servername,来验证证书的正确性。

servername是证书里面的CN,
因为需要验证证明书里面的CN和hostname:xx.xx.xx.xx是否一致。
一个是ip一个是服务器名,当然不一致,所以把servername追加进来,就不会去验证ip,而直接和servername进行比较
FabricCAClientImpl.js
post(api_method, requestObj, signingIdentity) {
var fs = require('fs');
var caPem = fs.readFileSync('....../crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem');
var requestOptions = {
       hostname: self._hostname,
       port: self._port,
       path: self._baseAPI + api_method,
       method: 'POST',
       headers: {
                 Authorization: self.generateAuthToken(requestObj, signingIdentity)
       },
       servername: 'ca.org1.example.com',
       ca: [caPem],
       rejectUnauthorized: true
};

---------------------------------------------------------------------------------------------------

sdk调试

http://cnodejs.org/topic/4f77c41f8a04d82a3d5dfcb9

rm -rf /tmp/fabric-client-kvs* ~/.hfc-key-store
sudo npm install -g node-inspector
node-inspector &
调试fabric-samples
PORT=4000 node --debug /home/ubuntu/go/src/github.com/hyperledger/fabric-samples/balance-transfer/app
调试单个nodejs
sudo npm install superagent --save
sudo npm install superagent-promise --save
node --debug-brk=5858 test/integration/configtxlator.js

调试的两外一个方法是

PORT=4000 node --inspect /home/ubuntu/go/src/github.com/hyperledger/fabric-samples/balance-transfer/app

然后,控制台出现下面的信息,把它直接粘到chrom浏览器里,就可以了。别忘记改IP哈

chrome-devtools://devtools/remote/serve_file/@6dasdfadsddsdfasdf84980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/8720816c-f3ac-4744-8fe7-065e9ee12b82

v 8.6调试单个文件

node --inspect-brk=192.168.75.134:4000 batch/ContractDeploy.js

chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=192.168.75.134:4000/0f7069cf-a788-4545-a4bf-f7b7f9603a71

node --inspect=192.168.75.138:4000 ./bin/www

chrome://inspect/
设置ip和端口,然后点「Open dedicated DevTools for Node」,过一会自动刷新出代码

--------------------------------------------------------------------------------------------------------

问题集

1.读系统文件时,如果文件是系统root用户做成的,会出现permission denied异常,这事sudo PORT=4000 node app重新启动nodejs
2.channel create request发生异常的时候,看一下content-type是否为json格式。
3.如果有设定proxy时,可能会引起容器间通信故障,临时解决办法.容器再启动。
删除 /etc/systemd/system/docker.service.d/http-proxy.conf
从下面文件里面删除proxy的设定
systemctl daemon-reload
systemctl restart docker
4.timed out after:45000异常的时候,../node_modules/fabric-client/config/default.json的值重新设定一下
5.invoke时调用了helper.getRegisteredUsers进行enrool了,为了在channel.sendTransactionProposal时取channel对象。
性能测试时,同一个用户注册了好多次,使用证书会错乱。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hyperledger Fabric是一个基于区块链技术的开源平台,用于构建企业级的去中心化应用程序。Hyperledger Fabric Node.js SDK是Hyperledger Fabric的官方软件开发工具包,用于在Node.js环境下开发和部署Fabric网络。 Hyperledger Fabric Node.js SDK开发流程如下: 1. 准备环境:首先需要安装Node.js和npm包管理器。可以从官方网站上下载并安装最新的Node.js版本。然后使用npm安装Hyperledger Fabric Node.js SDK。 2. 创建项目:在开发过程中,创建一个新的Node.js项目是一个好习惯。使用命令行工具或IDE创建一个新的文件夹,并在其中初始化一个新的Node.js项目。运行"npm init"命令,按照提示填写项目的基本信息。 3. 安装依赖:使用npm安装Hyperledger Fabric Node.js SDK以及其他依赖库。在项目的根目录下运行"npm install fabric-network fabric-ca-client"命令。 4. 配置文件:在项目中创建一个配置文件,用于指定Fabric网络的连接信息和身份认证信息。配置文件中包括Fabric网络的URL、通道名称、智能合约的名称等。 5. 连接网络:使用SDK的API连接到Fabric网络。使用配置文件中的连接信息创建一个新的Gateway对象,并调用connect()方法连接到指定的Fabric网络。 6. 身份认证:在连接到Fabric网络后,需要使用身份认证信息来访问链码(智能合约)。使用SDK的API提供的身份认证机制,来设置当前用户的身份认证信息。 7. 调用链码:一旦连接和身份认证都完成,就可以使用SDK的API调用链码的方法。通过调用链码的函数,可以查询或更新区块链上的数据。 8. 断开连接:在使用SDK后,需要调用disconnect()方法断开与Fabric网络的连接,释放资源。 总结起来,Hyperledger Fabric Node.js SDK开发流程包括准备环境、创建项目、安装依赖、配置文件、连接网络、身份认证、调用链码和断开连接。开发人员可以使用SDK的API来完成Fabric网络的各项操作,从而实现企业级的区块链应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值