真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

FabricNodeSDK中CouchDB錢包怎么用

這篇文章將為大家詳細(xì)講解有關(guān)Fabric Node SDK中CouchDB錢包怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

在任城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,任城網(wǎng)站建設(shè)費用合理。

1、Hyperledger Fabric錢包的類型

有三種類型的錢包:文件系統(tǒng)錢包、內(nèi)存錢包和CouchDB錢包。

文件系統(tǒng)錢包

文件系統(tǒng)錢包就是一個簡單的文件夾,在大多數(shù)情況下這是不錯的默認(rèn)選擇。在fabric-samples/balance-transfer示例中,使用的就是文件系統(tǒng)錢包。當(dāng)你運行這個示例代碼時,它就會創(chuàng)建一個fabric-client-kv-orgName文件夾并在其中保存所有需要的Fabric身份資料。該配置定義可以參考o(jì)rgname.yaml

內(nèi)存錢包

顧名思義,內(nèi)存錢包就是暫存在應(yīng)用內(nèi)存中的錢包。當(dāng)運行在受限環(huán)境中或不需要訪問文件系統(tǒng)時可以使用這種錢包,例如在瀏覽器中。需要提醒的是,這種錢包中的身份資料在應(yīng)用終止后就沒有了。內(nèi)存錢包的具體文檔可以查看這里。

CouchDB錢包

也就是使用CouchDB保存身份資料,在生產(chǎn)環(huán)境中這是最常見的選擇。

2、Hyperledger Fabric CouchDB錢包

錢包使用兩個庫來保存證書和私鑰:

狀態(tài)庫

狀態(tài)庫用于保存已登記身份的證書,它存儲的是一個身份的基本信息:

{
  "name": "test",
  "mspid": "org1",
  "roles": null,
  "affiliation": "",
  "enrollmentSecret": "",
  "enrollment": {
    "signingIdentity": "",
    "identity": {
      "certificate": ""
    }
  }
}

注意:signingIdentity指向私鑰和公鑰在密碼學(xué)資料庫中的保存地址。

密碼學(xué)資料庫

密碼學(xué)資料庫用于保存身份的私鑰和公鑰。

3、在Hyperledger Fabric應(yīng)用中啟用CouchDB錢包

首先引入Fabric Node SDK提供的CouchDBKeyValueStore庫:

const CDBKVS = require("fabric-client/lib/impl/CouchDBKeyValueStore.js");

然后設(shè)置狀態(tài)庫:

let stateStore = await new CDBKVS({
  url: "https://:@",
  name: ""
});

const Client = require("fabric-client");

const client = Client.loadFromConfig("path of network.yaml");

client.setStateStore(stateStore);

其中:

  • < USERNAME>:couchdb的用戶名

  • < PASSWORD>:couchdb的密碼

  • < URL>:couchdb的URL

  • < DB_NAME>:可選,狀態(tài)庫名。默認(rèn)的名稱為userdb,當(dāng)指定的狀態(tài)庫 不存在時Fabric Node SDK會自動創(chuàng)建該庫

最后設(shè)置密碼學(xué)資料庫:

const cryptoSuite = Client.newCryptoSuite();

let cryptoKS = Client.newCryptoKeyStore(CDBKVS, {
  url: "https://:@",
  name: ""
});

cryptoSuite.setCryptoKeyStore(cryptoKS);

client.setCryptoSuite(cryptoSuite);

4、在Balance Transfer示例中使用CouchDB錢包

Balance Transfer是Hyperledger Fabric官方提供的一個示例代碼。

首先按照示例說明啟動balance transfer網(wǎng)絡(luò),該網(wǎng)絡(luò)包含:

  • 2個CA

  • 1個SOLO排序節(jié)點

  • 2個機構(gòu)共4個對等節(jié)點

啟動couchdb的docker鏡像:

~$ docker run --name couch-userdb -e COUCHDB_USER=admin \
                       -e COUCHDB_PASSWORD=password -p 5984:5984 -d couchdb

上面的命令會自動拉取docker hub上的couchdb鏡像。

其中CouchDB詳情如下:

  • 容器名稱: couch-userdb

  • CouchDB用戶名:admin

  • CouchDB密碼:password

  • URL:localhost:5984

CouchDB連接URL如下:

https://:@ https://admin:password@localhost:5984

然后更新balance-transfer示例中的client配置:打開文件/helper.js,更新其中的getClientForOrg函數(shù):

'use strict';
var log4js = require('log4js');
var logger = log4js.getLogger('Helper');
logger.setLevel('DEBUG');

var path = require('path');
var util = require('util');

var hfc = require('fabric-client');
hfc.setLogger(logger);

// couchDB config 
const CDBKVS = require("fabric-client/lib/impl/CouchDBKeyValueStore.js");

async function getClientForOrg(userorg, username) {
    logger.debug('getClientForOrg - ****** START %s %s', userorg, username)
    // get a fabric client loaded with a connection profile for this org
    let config = '-connection-profile-path';

    // build a client context and load it with a connection profile
    // lets only load the network settings and save the client for later
    let client = hfc.loadFromConfig(hfc.getConfigSetting('network' + config));

    // This will load a connection profile over the top of the current one one
    // since the first one did not have a client section and the following one does
    // nothing will actually be replaced.
    // This will also set an admin identity because the organization defined in the
    // client section has one defined
    client.loadFromConfig(hfc.getConfigSetting(userorg + config));
    
    //********************** CouchDB configuration **************************************
    // set the state store
    let stateStore = await new CDBKVS({
        url: "https://:@",
        name: ""
    });

    client.setStateStore(stateStore);

    // set the cryto store
    const cryptoSuite = hfc.newCryptoSuite();

    let cryptoKS = hfc.newCryptoKeyStore(CDBKVS, {
        url: "https://:@",
        name: ""
    });

    cryptoSuite.setCryptoKeyStore(cryptoKS);

    client.setCryptoSuite(cryptoSuite);
    
    //********************** CouchDB configuration END **************************************
    
    if (username) {
        let user = await client.getUserContext(username, true);
        if (!user) {
            throw new Error(util.format('User was not found :', username));
        } else {
            logger.debug('User %s was found to be registered and enrolled', username);
        }
    }
    logger.debug('getClientForOrg - ****** END %s %s \n\n', userorg, username)

    return client;
}

我們的修改如下:

  • 13行:Import the CouchDBKeyValueStore....

  • 31–52行: 設(shè)置狀態(tài)庫和密碼學(xué)資料庫

在上面的代碼中還有一個小改動:

// Client variable is used as hfc
var hfc = require("fabric-client");

// Instead of Client
const Client = require("fabric-client");

然后在balance transfer中注冊一個新的用戶,一旦注冊成功,就可以使用couchdb的api查看狀態(tài)庫和密碼學(xué)資料庫了。

例如,可以使用下面的參數(shù)注冊一個用戶。對于org1,我們使用同一個庫org1db用于狀態(tài)庫和密碼學(xué)資料庫:

  • Name: alice

  • Org: org1

  • DBNAME: org1db

  • CouchDB URL: http://admin:password@localhost:5369

打開瀏覽器訪問http://localhost:5369/org1db/_all_docs,可以看到 在org1db中保存的所有文檔。

Fabric Node SDK中CouchDB錢包怎么用

其中0#、1#、2#是admin的證書。

3#是alice保存在狀態(tài)庫中的證書

4#和5#是alice保存在密碼學(xué)資料庫中的公鑰和私鑰

訪問http://localhost:5369/org1db/alice,可以看到alice在狀態(tài)庫中的全部細(xì)節(jié):

Fabric Node SDK中CouchDB錢包怎么用

查看signingIdentity

"signingIdentity":"d37a97a8c2377c21537801ec1a929d81905ae57963a2f6c8ba0308931a7fc791"

現(xiàn)在查看上圖中的4#和5#,可以看到是一樣的。

可能你還記得,signingIdentity字段是指向保存在密碼學(xué)資料庫中的私鑰和公鑰的。

關(guān)于“Fabric Node SDK中CouchDB錢包怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網(wǎng)頁題目:FabricNodeSDK中CouchDB錢包怎么用
鏈接地址:http://weahome.cn/article/psejsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部