您好,登錄后才能下訂單哦!
Fabric區塊鏈網絡應用程序需要大量的參數,用于連接Fabric區塊鏈網絡。通常將Fabric區塊鏈網絡應用程序所需的參數放到一個配置文件進行管理,配置文件定義Fabric SDK Go的配置和用戶自定義參數,指定了連接Fabric區塊鏈網絡所需的全部信息,例如Fabric區塊鏈網絡組件的主機名和端口等。Fabric SDK GO為應用程序提供的配置文件通常使用yaml文件格式編寫,并命名為config.yaml,配置文件會在應用程序代碼中被讀取。
Fabric SDK Go版本提供了config.yaml模板,開發者可以參考
fabric-sdk-go/pkg/core/config/testdata/template/config.yaml,也可以根據fabric-sdk-go/test/fixtures/config/config_e2e.yaml實例進行改寫。
version用于定義config.yaml文件內容的版本,Fabric SDK Go會使用version匹配相應的解析規則。version: 1.0.0
channels部分描述已經存在的通道信息,每個通道包含哪些orderer、peer?。
peer部分可以定義peer節點的角色屬性,角色如下:
endorsingPeer:可選。peer節點節點必須安裝鏈碼。peer節點是否會被發送交易提案進行背書。應用程序也可以使用本屬性來決定發送鏈碼安裝請求到哪個peer節點。默認值:true。
chaincodeQuery:可選。peer節點必須安裝鏈碼。peer節點是否會被發送交易提案只進行查詢。應用程序還可以使用本屬性來決定發送鏈碼安裝的請求到哪個peer節點。默認值:true。
ledgerQuery:可選。是否可以向peer節點發送不會進行鏈碼查詢的提案,如queryBlock(),queryTransaction()等。默認值:true。
eventSource:可選。peer節點是否為SDK事件監聽器注冊的目標,所有的peer節點都可以生產事件,但通常只需要連接一個對事件進行監聽。默認值:true。
# 如果應用程序創建了通道,不需要本部分
channels:
# 如果沒有定義channel配置或是定義的channel沒有信息,使用默認channel
# 如果channel沒有定義peers,使用默認channel的peers
# 如果channel沒有定義orderes,使用默認channel的orderes
# 如果channel沒有定義背書策略,使用默認channel的背書策略
# 如果channel定義了背書策略,但某些背書策略缺失,缺失的背書策略會被默認channel填充
_default:
# 可選,參與組織的peers列表
peers:
peer1.org1.example.com:
endorsingPeer: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
# 可選,應用程序使用下列選項執行通道操作,如獲取通道配置
policies:
#可選,獲取通道配置區塊
queryChannelConfig:
#可選,成功響應節點的最小數量
minResponses: 1
# 可選
maxTargets: 1
# 可選,查詢配置區塊的重試選項
retryOpts:
# 可選,重試次數
attempts: 5
# 可選, 第一次重試的后退間隔
initialBackoff: 500ms
# 可選, 重試的最大后退間隔
maxBackoff: 5s
backoffFactor: 2.0
# 可選,獲取發現信息選項
discovery:
maxTargets: 2
# 重試選項
retryOpts:
# 可選,重試次數
attempts: 4
initialBackoff: 500ms
maxBackoff: 5s
backoffFactor: 2.0
# 可選,事件服務選項
eventService:
# 可選 resolverStrategy指定連接到peer節點時選擇peer節點的決策策略
# 可選值:PreferOrg(默認), MinBlockHeight, Balanced
# PreferOrg:
# 基于區塊高度滯后閥值決定哪些peer節點是合適的, 雖然會在當前組織中優先選擇peer節點
# 如果當前組織中沒有合適的peer節點,會從其它組織中選取
# MinBlockHeight:
# 根據區塊高度滯后閥值選擇最好的peer節點,
# 所有peer節點的最大區塊高度是確定的,區塊高度小于最大區塊高度但在滯后閥值范圍內的peer節點會被加載,
# 其它peer節點不會被考慮。
# Balanced:
# 使用配置的balancer選擇peer節點
resolverStrategy: PreferOrg
# 可選 balancer是選擇連接到peer節點的負載均衡器
# 可選值: Random (default), RoundRobin
balancer: Random
# 可選,blockHeightLagThreshold設置區塊高度滯后閥值,用于選擇連接到的peer節點
# 如果一個peer節點滯后于最新的peer節點給定的區塊數,會被排除在選擇之外
# 注意:當minBlockHeightResolverMode設置為ResolveByThreshold時,本參數才可用
# 默認: 5
blockHeightLagThreshold: 5
# 可選,reconnectBlockHeightLagThreshold - 如果peer節點的區塊高度落后于指定的區塊數量,
# 事件客戶端會從peer節點斷開,重新連接到一個性能更好的peer節點
# 如果peerMonitor設置為啟用(默認),本參數才可用
# 默認值: 10
# 注意:設置值太低會導致事件客戶端頻繁斷開或重連,影響性能
reconnectBlockHeightLagThreshold: 8
# 可選, peerMonitorPeriod是事件客戶端從連接節點斷開重新連接到另外一個節點的時間
# 默認: 對于Balanced resolverStrategy禁用,為0; 對于PreferOrg和MinBlockHeight為5s
peerMonitorPeriod: 6s
#如果_default沒有定義,必選;如果_default已經定義,可選。
# 通道名稱
assetchannel:
# 如果_default peers沒有定義,必選;如果_default peers已經定義,可選。
# 參與組織的peer節點列表
peers:
peer0.org1.example.com:
# 可選。peer節點是否會被發送交易提議只進行查詢。peer節點必須安裝鏈碼。
# 應用程序還可以使用本屬性來決定發送鏈碼安裝的請求到哪個peer節點。默認值:true
endorsingPeer: true
# 可選。peer節點必須安裝鏈碼。peer節點是否會被發送交易提案只進行查詢。
# 應用程序還可以使用本屬性來決定發送鏈碼安裝的請求到哪個peer節點。默認值:true
chaincodeQuery: true
# 可選。是否可以向peer節點發送不會進行鏈碼查詢的提案,如queryBlock(),
# queryTransaction()等。默認值:true。
ledgerQuery: true
# 可選。peer節點是否為SDK事件監聽器注冊的目標,所有的peer節點都可以生產事件,
# 但通常只需要連接一個對事件進行監聽。默認值:true。
eventSource: true
organizations描述peer節點所屬的組織(org),證書頒發機構,以及組織的MSP ID。
# Fabric區塊鏈網絡中參與的組織列表
organizations:
org1:
mspid: Org1MSP
# 組織的MSP存儲位置,絕對路徑或相對cryptoconfig的路徑
cryptoPath: peerOrganizations/org1.example.com/users/{username}@org1.example.com/msp
peers:
- peer0.org1.example.com
- peer1.org1.example.com
# 可選,證書頒發機構簽發×××明,Fabric-CA是一個特殊的證書管理機構,提供REST API支持動態證書管理,如登記、撤銷、重新登記
# 下列部分只為Fabric-CA服務器設置
certificateAuthorities:
- ca.org1.example.com
org2:
mspid: Org2MSP
# 組織的MSP存儲位置,相對于cryptoconfig的相對位置或絕對路徑
cryptoPath: peerOrganizations/org2.example.com/users/{username}@org2.example.com/msp
peers:
- peer0.org2.example.com
certificateAuthorities:
- ca.org2.example.com
# Orderer組織名稱
ordererorg:
# 組織的MSPID
mspID: OrdererMSP
# 加載用戶需要的密鑰和證書,絕對路徑或相對路徑
cryptoPath: ordererOrganizations/example.com/users/{username}@example.com/msp
orderers必須指定要連接的Hyperledger Fabric區塊鏈網絡中所有orderder節點的主機名和端口。orderers對象可以包含多個orderder節點。
# 發送交易請求或通道創建、更新請求到的orderers列表
# 如果定義了超過一個orderer,SDK使用哪一個orderer由代碼實現時指定
orderers:
# orderer節點,可以定義多個
orderer.example.com:
url: orderer.example.com:7050
# 以下屬性由gRPC庫定義,會被傳遞給gRPC客戶端構造函數
grpcOptions:
ssl-target-name-override: orderer.example.com
# 下列參數用于設置服務器上的keepalive策略,不兼容的設置會導致連接關閉
# 當keep-alive-time被設置為0或小于激活客戶端的參數,下列參數失效
keep-alive-time: 0s
keep-alive-timeout: 20s
keep-alive-permit: false
fail-fast: false
allow-insecure: false
tlsCACerts:
# 證書的絕對路徑
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
peers必須指定Hyperledger Fabric區塊鏈網絡中所有peer節點的主機名和端口,可能會在其它地方引用,如channels,organizations等部分。
# peers節點列表
peers:
# peer節點定義,可以定義多個
peer0.org1.example.com:
# URL用于發送背書和查詢請求
url: peer0.org1.example.com:7051
grpcOptions:
ssl-target-name-override: peer0.org1.example.com
keep-alive-time: 0s
keep-alive-timeout: 20s
keep-alive-permit: false
fail-fast: false
allow-insecure: false
tlsCACerts:
# 證書的絕對路徑
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
certificateAuthorities必須在Hyperledger Fabric區塊鏈網絡中指定證書頒發機構(CA)的主機名和端口,以便用于注冊現有用戶和注冊新用戶。
# Fabric-CA是Hyperledger Fabric提供了特殊的證書頒發機構,可以通過REST API管理證書。
# 應用程序可以選擇使用一個標準的證書頒發機構代替Fabric-CA,此時本部分不需要指定
certificateAuthorities:
# CA機構,可以定義多個
ca.org1.example.com:
url: https://ca.org1.example.com:7054
tlsCACerts:
# Comma-Separated list of paths
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
# 客戶端和Fabric CA進行SSL握手的密鑰和證書
client:
key:
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.key
cert:
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.crt
# Fabric-CA支持通過REST API進行動態用戶注冊
registrar:
enrollId: admin
enrollSecret: adminpw
# 可選,CA機構名稱
caName: ca.org1.example.com
client部分必需定義,客戶端應用程序代表誰來和Fabric區塊鏈網絡來交互,可以定義超時選項。
#客戶端定義
client:
# 客戶端所屬的組織,必須是organizations定義的組織
organization: org1
#定義日志服務
logging:
level: debug #debug級別
# peer、事件服務、orderer超時的全局配置
# 本部分如果忽略,使用下列的值作為默認值
peer:
timeout:
connection: 10s
response: 180s
discovery:
greylistExpiry: 10s
eventService:
timeout:
registrationResponse: 15s
orderer:
timeout:
connection: 15s
response: 15s
global:
timeout:
query: 180s
execute: 180s
resmgmt: 180s
cache:
connectionIdle: 30s
eventServiceIdle: 2m
channelConfig: 30m
channelMembership: 30s
discovery: 10s
selection: 10m
# MSP根目錄
cryptoconfig:
path: ${GOPATH}/src/github.com/hyperledger/fabric/AssetExchange/deploy/crypto-config
# 某些SDK支持插件化的KV數據庫, 通過指定credentialStore屬性實現
credentialStore:
# 可選,用于用戶證書材料存儲,如果所有的證書材料被嵌入到配置文件,則不需要
path: "/tmp/state-store"
# 可選,指定Go SDK實現的CryptoSuite實現
cryptoStore:
# 指定用于加密密鑰存儲的底層KV數據庫
path: /tmp/msp
# 客戶端的BCCSP模塊配置
BCCSP:
security:
enabled: true
default:
provider: "SW"
hashAlgorithm: "SHA2"
softVerify: true
level: 256
tlsCerts:
# 可選,當連接到peers,orderes時使用系統證書池,默認為false
systemCertPool: true
# 可選,客戶端和peers與orderes進行TLS握手的密鑰和證書
client:
key:
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.key
cert:
path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.crt
資產交易平臺應用的配置文件如下:
# Copyright SecureKey Technologies Inc. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
#
# The network connection profile provides client applications the information about the target
# blockchain network that are necessary for the applications to interact with it. These are all
# knowledge that must be acquired from out-of-band sources. This file provides such a source.
name: "assetchannel"
#
# Describe what the target network is/does.
#
description: "asset exchange network"
#指定版本
version: 1.0.0
#客戶端定義
client:
# 客戶端所屬的組織,必須是organizations定義的組織
organization: org1
#定義日志服務
logging:
level: debug #debug級別
# MSP根目錄
cryptoconfig:
path: ${GOPATH}/src/github.com/hyperledger/fabric/AssetExchange/deploy/crypto-config
# 某些SDK支持插件化的KV數據庫, 通過指定credentialStore屬性實現
credentialStore:
# 可選,用于用戶證書材料存儲,如果所有的證書材料被嵌入到配置文件,則不需要
path: "/tmp/state-store"
# 可選,指定Go SDK實現的CryptoSuite實現
cryptoStore:
# 指定用于加密密鑰存儲的底層KV數據庫
path: /tmp/msp
# 客戶端的BCCSP模塊配置
BCCSP:
security:
enabled: true
default:
provider: "SW"
hashAlgorithm: "SHA2"
softVerify: true
level: 256
tlsCerts:
# 可選,當連接到peers,orderes時使用系統證書池,默認為false
systemCertPool: true
# 可選,客戶端和peers與orderes進行TLS握手的密鑰和證書
client:
key:
# path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.key
cert:
#path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/tls.example.com/users/User1@tls.example.com/tls/client.crt
# 如果應用程序創建了通道,不需要本部分
channels:
# 如果沒有定義channel配置或是定義的channel沒有信息,使用默認channel
# 如果channel沒有定義peers,使用默認channel的peers
# 如果channel沒有定義orderes,使用默認channel的orderes
# 如果channel沒有定義背書策略,使用默認channel的背書策略
# 如果channel定義了背書策略,但某些背書策略缺失,缺失的背書策略會被默認channel填充
#如果_default沒有定義,必選;如果_default已經定義,可選。
# 通道名稱
assetchannel:
# 如果_default peers沒有定義,必選;如果_default peers已經定義,可選。
# 參與組織的peer節點列表
peers:
peer0.org1.example.com:
# 可選。peer節點是否會被發送交易提議只進行查詢。peer節點必須安裝鏈碼。
# 應用程序還可以使用本屬性來決定發送鏈碼安裝的請求到哪個peer節點。默認值:true
endorsingPeer: true
# 可選。peer節點必須安裝鏈碼。peer節點是否會被發送交易提案只進行查詢。
# 應用程序還可以使用本屬性來決定發送鏈碼安裝的請求到哪個peer節點。默認值:true
chaincodeQuery: true
# 可選。是否可以向peer節點發送不會進行鏈碼查詢的提案,如queryBlock(),
# queryTransaction()等。默認值:true。
ledgerQuery: true
# 可選。peer節點是否為SDK事件監聽器注冊的目標,所有的peer節點都可以生產事件,
# 但通常只需要連接一個對事件進行監聽。默認值:true。
eventSource: true
# 可選,應用程序使用下列選項執行通道操作,如獲取通道配置
policies:
#可選,獲取通道配置區塊
queryChannelConfig:
#可選,成功響應節點的最小數量
minResponses: 1
# 可選
maxTargets: 1
# 可選,查詢配置區塊的重試選項
retryOpts:
# 可選,重試次數
attempts: 5
# 可選, 第一次重試的后退間隔
initialBackoff: 500ms
# 可選, 重試的最大后退間隔
maxBackoff: 5s
backoffFactor: 2.0
# Fabric區塊鏈網絡中參與的組織列表
organizations:
org1:
mspid: Org1MSP
# 組織的MSP存儲位置,絕對路徑或相對cryptoconfig的路徑
cryptoPath: peerOrganizations/org1.example.com/users/{username}@org1.example.com/msp
peers:
- peer0.org1.example.com
- peer1.org1.example.com
# 可選,證書頒發機構簽發×××明,Fabric-CA是一個特殊的證書管理機構,提供REST API支持動態證書管理,如登記、撤銷、重新登記
# 下列部分只為Fabric-CA服務器設置
certificateAuthorities:
#- ca.org1.example.com
# Orderer組織名稱
ordererorg:
# 組織的MSPID
mspID: OrdererMSP
# 加載用戶需要的密鑰和證書,絕對路徑或相對路徑
cryptoPath: ordererOrganizations/example.com/users/{username}@example.com/msp
# 發送交易請求或通道創建、更新請求到的orderers列表
# 如果定義了超過一個orderer,SDK使用哪一個orderer由代碼實現時指定
orderers:
# orderer節點,可以定義多個
orderer.example.com:
url: orderer.example.com:7050
# 以下屬性由gRPC庫定義,會被傳遞給gRPC客戶端構造函數
grpcOptions:
ssl-target-name-override: orderer.example.com
# 下列參數用于設置服務器上的keepalive策略,不兼容的設置會導致連接關閉
# 當keep-alive-time被設置為0或小于激活客戶端的參數,下列參數失效
keep-alive-time: 0s
keep-alive-timeout: 20s
keep-alive-permit: false
fail-fast: false
allow-insecure: false
tlsCACerts:
# 證書的絕對路徑
# path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
# peers節點列表
peers:
# peer節點定義,可以定義多個
peer0.org1.example.com:
# URL用于發送背書和查詢請求
url: peer0.org1.example.com:7051
grpcOptions:
ssl-target-name-override: peer0.org1.example.com
keep-alive-time: 0s
keep-alive-timeout: 20s
keep-alive-permit: false
fail-fast: false
allow-insecure: false
tlsCACerts:
# 證書的絕對路徑
#path: ${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。