Fabric Node SDK中CouchDB钱包怎么用
Fabric Node SDK中CouchDB钱包怎么用
这篇文章将为大家详细讲解有关Fabric Node SDK中CouchDB钱包怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1、Hyperledger Fabric钱包的类型
有三种类型的钱包:文件系统钱包、内存钱包和CouchDB钱包。
文件系统钱包:
文件系统钱包就是一个简单的文件夹,在大多数情况下这是不错的默认选择。在fabric-samples/balance-transfer示例中,使用的就是文件系统钱包。当你运行这个示例代码时,它就会创建一个fabric-client-kv-orgName文件夹并在其中保存所有需要的Fabric身份资料。该配置定义可以参考orgname.yaml
内存钱包:
顾名思义,内存钱包就是暂存在应用内存中的钱包。当运行在受限环境中或不需要访问文件系统时可以使用这种钱包,例如在浏览器中。需要提醒的是,这种钱包中的身份资料在应用终止后就没有了。内存钱包的具体文档可以查看这里。
CouchDB钱包:
也就是使用CouchDB保存身份资料,在生产环境中这是最常见的选择。
2、Hyperledger Fabric CouchDB钱包
钱包使用两个库来保存证书和私钥:
状态库:
状态库用于保存已登记身份的证书,它存储的是一个身份的基本信息:
{"name":"test","mspid":"org1","roles":null,"affiliation":"","enrollmentSecret":"
注意:signingIdentity
指向私钥和公钥在密码学资料库中的保存地址。
密码学资料库:
密码学资料库用于保存身份的私钥和公钥。
3、在Hyperledger Fabric应用中启用CouchDB钱包
首先引入Fabric Node SDK提供的CouchDBKeyValueStore
库:
constCDBKVS=require("fabric-client/lib/impl/CouchDBKeyValueStore.js");
然后设置状态库:
letstateStore=awaitnewCDBKVS({url:"https://
其中:
< USERNAME>:couchdb的用户名
< PASSWORD>:couchdb的密码
< URL>:couchdb的URL
< DB_NAME>:可选,状态库名。默认的名称为userdb,当指定的状态库 不存在时Fabric Node SDK会自动创建该库
最后设置密码学资料库:
constcryptoSuite=Client.newCryptoSuite();letcryptoKS=Client.newCryptoKeyStore(CDBKVS,{url:"https://
4、在Balance Transfer示例中使用CouchDB钱包
Balance Transfer是Hyperledger Fabric官方提供的一个示例代码。
首先按照示例说明启动balance transfer网络,该网络包含:
2个CA
1个SOLO排序节点
2个机构共4个对等节点
启动couchdb的docker镜像:
~$dockerrun--namecouch-userdb-eCOUCHDB_USER=admin\-eCOUCHDB_PASSWORD=password-p5984:5984-dcouchdb
上面的命令会自动拉取docker hub上的couchdb镜像。
其中CouchDB详情如下:
容器名称: couch-userdb
CouchDB用户名:admin
CouchDB密码:password
URL:localhost:5984
CouchDB连接URL如下:
https://
然后更新balance-transfer示例中的client配置:打开文件/helper.js
,更新其中的getClientForOrg
函数:
'usestrict';varlog4js=require('log4js');varlogger=log4js.getLogger('Helper');logger.setLevel('DEBUG');varpath=require('path');varutil=require('util');varhfc=require('fabric-client');hfc.setLogger(logger);//couchDBconfigconstCDBKVS=require("fabric-client/lib/impl/CouchDBKeyValueStore.js");asyncfunctiongetClientForOrg(userorg,username){logger.debug('getClientForOrg-******START%s%s',userorg,username)//getafabricclientloadedwithaconnectionprofileforthisorgletconfig='-connection-profile-path';//buildaclientcontextandloaditwithaconnectionprofile//letsonlyloadthenetworksettingsandsavetheclientforlaterletclient=hfc.loadFromConfig(hfc.getConfigSetting('network'+config));//Thiswillloadaconnectionprofileoverthetopofthecurrentoneone//sincethefirstonedidnothaveaclientsectionandthefollowingonedoes//nothingwillactuallybereplaced.//Thiswillalsosetanadminidentitybecausetheorganizationdefinedinthe//clientsectionhasonedefinedclient.loadFromConfig(hfc.getConfigSetting(userorg+config));//**********************CouchDBconfiguration**************************************//setthestatestoreletstateStore=awaitnewCDBKVS({url:"https://
我们的修改如下:
13行:Import the CouchDBKeyValueStore....
31–52行: 设置状态库和密码学资料库
在上面的代码中还有一个小改动:
//Clientvariableisusedashfcvarhfc=require("fabric-client");//InsteadofClientconstClient=require("fabric-client");
然后在balance transfer中注册一个新的用户,一旦注册成功,就可以使用couchdb的api查看状态库和密码学资料库了。
例如,可以使用下面的参数注册一个用户。对于org1,我们使用同一个库org1db用于状态库和密码学资料库:
Name: alice
Org: org1
DBNAME: org1db
CouchDB URL: http://admin:password@localhost:5369
打开浏览器访问http://localhost:5369/org1db/_all_docs
,可以看到 在org1db中保存的所有文档。
其中0#、1#、2#是admin的证书。
3#是alice保存在状态库中的证书
4#和5#是alice保存在密码学资料库中的公钥和私钥
访问http://localhost:5369/org1db/alice
,可以看到alice在状态库中的全部细节:
查看signingIdentity
:
"signingIdentity":"d37a97a8c2377c21537801ec1a929d81905ae57963a2f6c8ba0308931a7fc791"
现在查看上图中的4#和5#,可以看到是一样的。
可能你还记得,signingIdentity
字段是指向保存在密码学资料库中的私钥和公钥的。
关于“Fabric Node SDK中CouchDB钱包怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
推荐阅读
-
hyperledger fabric中Raft共识插件的示例分析
hyperledgerfabric中Raft共识插件的示例分析这...
-
fabric Transient Data与Private Data使用的示例分析
fabricTransientData与PrivateData使用的示例分析...
-
Fabric链码开发的原则有哪些
Fabric链码开发的原则有哪些这篇文章主要介绍了Fabric链码...
-
fabric示例e2e_cli中network_setup.sh流程是怎么样的
fabric示例e2e_cli中network_setup.sh流程是怎么样的...
-
Fabric 2.0中链码操作过程是怎么样的
Fabric2.0中链码操作过程是怎么样的这篇文章给大家分享的是...
-
如何实现Fabric区块链基于Prometheus和StatsD的运维监控
如何实现Fabric区块链基于Prometheus和StatsD的运维监控...
-
如何下载Fabric-Sampl与二进制包
如何下载Fabric-Sampl与二进制包这篇文章主要为大家展示了...
-
Fabric2.0中first-network生成配置的示例分析
Fabric2.0中first-network生成配置的示例分析这...
-
fabric go sdk是什么
fabricgosdk是什么小编给大家分享一下fabricg...
-
Fabric区块链官方浏览器怎么用
Fabric区块链官方浏览器怎么用小编给大家分享一下Fabric区...