區塊鏈開源實現Hyperledge Fabric(四)

一、Fabric賬號

1.1 什麼是賬號

Fabric賬號由cryptogen命令負責生成。實際上,Fabric賬號由一組證書和祕鑰文件所組成。

下面是orderer節點賬號的目錄結構:

├── orderers
│       │   └── orderer.example.com
│       │       ├── msp
│       │       │   ├── admincerts # 管理員證書
│       │       │   │   └── [email protected]
│       │       │   ├── cacerts # 根ca服務器的證書
│       │       │   │   └── ca.example.com-cert.pem 
│       │       │   ├── keystore # 節點或者賬號的私鑰
│       │       │   │   └── e5eb3e35f3a4fcc95d1c084b2abdb233dec556d0b715742c99e7d0d528ad7d40_sk
│       │       │   ├── signcerts # 符合x.509的節點或者用戶證書文件
│       │       │   │   └── orderer.example.com-cert.pem
│       │       │   └── tlscacerts # tls根ca證書
│       │       │       └── tlsca.example.com-cert.pem
│       │       └── tls
│       │           ├── ca.crt
│       │           ├── server.crt
│       │           └── server.key

從上面可以看出,這些證書分別存放在msp文件夾和tls文件夾中。msp文件夾中存放了簽名時使用的證書文件和加密時使用的祕鑰文件。tls文件夾存放了加密通信相關的證書文件。

1.2 什麼地方需要使用賬號

創建fabric網絡時主要有以下幾個地方需要使用到賬號:

  • 啓動orderer節點

啓動orderer的時候我們需要通過環境變量或者配置文件給當前啓動的Orderer設定相應的賬號。

# 啓動Orderer節點的賬號路徑
ORDERER_GENERAL_LOCALMSPDIR=/home/zhongliwen/testwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp
  • 啓動peer節點

啓動peer的時候我們需要通過環境變量或者配置文件給當前啓動的peer設定相應的賬號。

# 啓動peer節點的賬號路徑
ORE_PEER_MSPCONFIGPATH=/home/zhongliwen/testwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp
  • 創建通道
# 創建通道的賬號路徑
CORE_PEER_MSPCONFIGPATH=/home/zhongliwen/testwork/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp

從上面配置可以發現,orderer、peer、user都有自己的賬號信息。啓動orderer使用orderer節點的賬號,啓動peer使用了peer節點的賬號,創建channel使用了組織用戶的賬號。

1.3 Fabric-CA

1.3.1 簡介

fabric-ca 項目是專門爲了解決Fabric賬號問題而發起的一個開源項目, 它非常完美的解決了fabric賬號生成的問題。
在這裏插入圖片描述
fabric-ca項目由 fabric-server 和fabric-client這兩個模塊組成。fabric-server是服務端程序,fabric-client是客戶端程序。Fabric CA提供了兩種訪問方式調用Server服務,一種是通過Fabric-client程序,另外一種是使用sdk(nodejs、java、go等等)執行調用。

1.3.2 配置fabric-ca

hyperledger-fabric項目已經自帶了fabric-ca的功能。所以,如果要創建ca服務器,只需要在docker-compose.yaml文件的services節點下添加以下內容:

# 配置ca服務器容器
ca.example.com: # 服務名稱
    image: hyperledger/fabric-ca:latest # 鏡像名稱:版本號 
    environment:
    	# ca容器的home目錄
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
        # ca服務器的名字,自己起
      - FABRIC_CA_SERVER_CA_NAME=ca.example.com
        # ca服務器所屬組織的證書路徑
      - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
        # ca服務器的私鑰文件路徑
      - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/b47b6db60368e6e5f598a9002f4c8f93c3d36d7c25d83b4e55338c671bed9ed2_sk

    ports:
      - "7054:7054" # ca服務器綁定端口
    command: sh -c 'fabric-ca-server start -b admin:123456' # 啓動fabric-ca-server服務的命令,-b參數爲ca服務器登錄的用戶名和密碼
    volumes: # 數據卷掛載
      - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config 
    container_name: ca.example.com # 容器名稱,自己起
    networks:
      - byfn # 工作網絡

通常情況下, 一個組織會對應一個fabric-server服務器。所以在我們例子中啓動了兩個ca服務,對應org1和org2兩個組織。
在這裏插入圖片描述

1.3.3 nodejs客戶端開發

下面通過nodejs實現fabric用戶的創建、查詢操作。

第一步:創建項目。

mkdir fabric-ca-test
cd fabric-ca-test
npm init

第二步:安裝包。

npm install --save fabric-ca-client
npm install --save fabric-client
npm install --save grpc

第三步:從github.com上下載示例文件,並拷貝到fabric-ca-test目錄中。
在這裏插入圖片描述
enrollAdmin.js:註冊組織管理員;
enrollUser.js:註冊組織的普通會員,註冊前必須完成管理員賬號的註冊;
query.js:查詢數據(關閉了tls功能);
query_tls.js:查詢數據(開啓了tls功能);
invoke.js:執行交易(關閉了tls功能);
invoke_tls.js:執行交易(開啓了tls功能);

第四步:根據實際情況修改js文件的options配置信息(比如ip地址、用戶ID等等)。
在這裏插入圖片描述

第五步:通過node xxx.js命令執行相關操作。

# 註冊管理員
node enrollAdmin.js
# 註冊用戶
node registUser.js
# 查詢a的值
node query.js
# 查詢a的值(啓動了tls功能)
node query_tls.js
# a向b轉賬10
node invoke.js
# a向b轉賬10(啓動了tls功能)
node invoke_tls.js
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章