1. 程式人生 > >【超級賬本】fabric-ca — setup-fabric.sh原始碼分析

【超級賬本】fabric-ca — setup-fabric.sh原始碼分析

概述

setup-fabric.sh主要是order、peer節點的註冊,以及通道相關資源的生成。其核心main函式程式碼如下,下文中依據該main函式呼叫關係展開。

# This script does the following:
# 1) registers orderer and peer identities with intermediate fabric-ca-servers
# 2) Builds the channel artifacts (e.g. genesis block, etc)
#

function main {
   log "Beginning building channel artifacts ..."
   registerIdentities
   getCACerts
   makeConfigTxYaml
   generateChannelArtifacts
   log "Finished building channel artifacts"
   touch /$SETUP_SUCCESS_FILE
}
registerIdentities

該函式分別呼叫registerOrdererIdentities與registerPeerIdentities分別註冊,程式碼大同小異,以registerOrdererIdentities為例,完成如下一些步驟:

  1. 向CA伺服器註冊一個admin使用者
fabric-ca-client enroll -d -u https://[email protected]$CA_HOST:7054

#這裡$CA_ADMIN_USER_PASS變數已經定義ROOT_CA_ADMIN_USER_PASS=${ROOT_CA_ADMIN_USER}:${ROOT_CA_ADMIN_PASS}
  1. 向CA伺服器註冊order節點
fabric-ca-client register -d --id.name $ORDERER_NAME --id.secret $ORDERER_PASS --id.type orderer
getCACerts
  1. 獲取證書,應該是CA伺服器所生成的中間證書
fabric-ca-client getcacert -d -u https://$CA_HOST:7054 -M $ORG_MSP_DIR
  1. 建立tlscacerts和tlsintermediatecerts目錄,把獲取到的根證書和中間證書拷貝過去
if [ ! -d $1/tlscacerts ]; then
      mkdir $1/tlscacerts
      cp $1/cacerts/* $1/tlscacerts
      if [ -d $1/intermediatecerts ]; then
         mkdir $1/tlsintermediatecerts
         cp $1/intermediatecerts/* $1/tlsintermediatecerts
      fi
   fi

下面兩個函式的作用和first-network差不多

makeConfigTxYaml

功能:生成通道配置檔案,主要是configtx.yaml檔案

generateChannelArtifacts
  1. 生成排序節點的創世區塊
  2. 將通道配置資訊寫入創世區塊
  3. 建立各個組織的錨節點資訊