創建客戶端報錯,報錯如下:
2021/03/16 16:47:15 創建新的通道客戶端失敗: event service creation failed: could not get chConfig cache reference: QueryBlockConfig failed: QueryBlockConfig failed: queryChaincode failed: Transaction processing for endorser [peer0.org1.example.com:7051]: Endorser Client Status Code: (2) CONNECTION_FAILED. Description: dialing connection on target [peer0.org1.example.com:7051]: connection is in TRANSIENT_FAILURE
sdk連接組態檔
name: "test-network"
version: 1.0.0
client:
organization: Org1
logging:
level: info
cryptoconfig:
path: ./config/cert
credentialStore:
path: /tmp/shanyiou-store
cryptoStore:
path: /tmp/shanyiou-msp
BCCSP:
security:
enabled: true
default:
provider: "SW"
hashAlgorithm: "SHA2"
softVerify: true
level: 256
tlsCerts:
systemCertPool: false
client:
key:
path:
cert:
path:
channels:
mychannel:
peers:
peer0.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: PreferOrg
balancer: Random
blockHeightLagThreshold: 5
reconnectBlockHeightLagThreshold: 10
peerMonitorPeriod: 5s
organizations:
Org1:
mspid: Org1MSP
cryptoPath: peerOrganizations/org1.example.com/users/{userName}@org1.example.com/msp
peers:
- peer0.org1.example.com
users:
Admin:
key:
path: ./config/cert/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/b79a7bf4780dee0b268eebf0b6cbb9e5aa2850b031e796bf2f9ef645e0645c00_sk
cert:
path: ./config/cert/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/cert.pem
User1:
key:
path: ./config/cert/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/c81de741513bed57cef9e7ec686e7ff5044f3bb7cf10955935ae664aa6a47f7a_sk
cert:
path: ./config/cert/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/cert.pem
orderers:
orderer.example.com:
url: grpcs://orderer.example.com:7050
grpcOptions:
ssl-target-name-override: orderer.example.com
keep-alive-time: 0s
keep-alive-timeout: 20s
keep-alive-permit: false
fail-fast: false
allow-insecure: false
tlsCACerts:
# path: ./fixtures/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
path: ./config/cert/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peers:
peer0.org1.example.com:
url: peer0.org1.example.com:7051
eventUrl: grpcs://peer0.org1.example.com:7053
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: ./config/cert/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
entityMatchers:
peer:
- pattern: (\w*)peer0.org1.example.com(\w*)
urlSubstitutionExp: grpcs://peer0.org1.example.com:7051
eventUrlSubstitutionExp: grpcs://peer0.org1.example.com:7053
sslTargetOverrideUrlSubstitutionExp: peer0.org1.example.com
mappedHost: peer0.org1.example.com
orderer:
- pattern: (.*)
urlSubstitutionExp: grpcs://localhost:7050
sslTargetOverrideUrlSubstitutionExp: orderer.example.com
mappedHost: orderer.example.com
訪問區塊鏈概況go代碼
package main
import (
// "fmt"
"log"
"os"
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
"github.com/hyperledger/fabric-sdk-go/pkg/common/errors/retry"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)
const (
channelID = "mychannel"
chaincodeID = "esg"
orgID = "Org1"
userID = "Admin"
)
func main() {
configOpt := config.FromFile("./config/sdk-config.yaml")
sdk, err := fabsdk.New(configOpt)
if err != nil {
log.Fatalf("創建新的SDK失敗: %v\n", err)
return
}
defer sdk.Close()
log.Printf("---> 創建SDK成功\n")
var options_user fabsdk.ContextOption
var options_org fabsdk.ContextOption
options_user = fabsdk.WithUser(userID)
options_org = fabsdk.WithOrg(orgID)
// fmt.Printf("%v\n", options_user)
// fmt.Printf("%v\n", options_org)
//clientChannelContext := sdk.ChannelContext(channelID, fabsdk.WithUser(userID), fabsdk.WithOrg(mspID))
clientChannelContext := sdk.ChannelContext(channelID, options_user, options_org)
client, err := channel.New(clientChannelContext)
if err != nil {
log.Fatalf("創建新的通道客戶端失敗: %v\n", err)
return
}
log.Printf("--> 創建新的通道客戶端\n")
var response channel.Response
if len(os.Args) > 1 && os.Args[1] == "invoke" {
response, err = client.Execute(channel.Request{ChaincodeID: chaincodeID, Fcn: "invoke", Args: [][]byte{[]byte("a"), []byte("b"), []byte("10")}},
channel.WithRetry(retry.DefaultChannelOpts))
} else {
response, err = client.Query(channel.Request{ChaincodeID: chaincodeID, Fcn: "query", Args: [][]byte{[]byte("b")}},
channel.WithRetry(retry.DefaultChannelOpts))
}
if err != nil {
log.Fatalf("Failed to call client: %v\n", err)
return
}
log.Printf("Result=(%v)\n", string(response.Payload))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/268546.html
標籤:區塊鏈技術