当链码容器闲置一段时间后,它会因错误而停止:
ERROR [lib/handler.js] Chat stream with peer - on error: "Error: 14 UNAVAILABLE: EOF\n at createStatusError (/usr/local/src/node_modules/grpc/src/client.js:64:15)\n at ClientDuplexStream._emitStatusIfDone (/usr/local/src/node_modules/grpc/src/client.js:270:19)\n at ClientDuplexStream._receiveStatus (/usr/local/src/node_modules/grpc/src/client.js:248:8)\n at /usr/local/src/node_modules/grpc/src/client.js:804:12"
Run Code Online (Sandbox Code Playgroud)
当第一个请求在空闲时间之后到达时,它给出一个错误
Error: 14 UNAVAILABLE: TCP Write failed
Run Code Online (Sandbox Code Playgroud)
之后,第二个请求错误更改为以下内容:
Error: SERVICE_UNAVAILABLE
at ClientDuplexStream.broadcast.on (/app/node_modules/fabric-client/lib/Orderer.js:172:22)
at emitOne (events.js:116:13)
at ClientDuplexStream.emit (events.js:211:7)
at ClientDuplexStream._emitStatusIfDone (/app/node_modules/grpc/src/client.js:236:12)
at ClientDuplexStream._receiveStatus (/app/node_modules/grpc/src/client.js:213:8)
at Object.onReceiveStatus (/app/node_modules/grpc/src/client_interceptors.js:1290:15)
at InterceptingListener._callNext (/app/node_modules/grpc/src/client_interceptors.js:564:42)
at InterceptingListener.onReceiveStatus (/app/node_modules/grpc/src/client_interceptors.js:614:8)
at /app/node_modules/grpc/src/client_interceptors.js:1110:18
Run Code Online (Sandbox Code Playgroud)
从第三个请求开始,一切正常。
我使用的是fabric-shim 1.2.0,但将其升级到1.3.0后,错误随机出现。
我正在使用面料1.3.0。
编辑:升级结构垫片到1.3.1后,错误更改为以下内容:
error: [Orderer.js]: sendBroadcast - on error: "Error: 14 UNAVAILABLE: TCP Write failed\n at Object.exports.createStatusError …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Fabric 1.4 中的服务发现功能。我的网络是默认的,每个组织有 2 个组织和 2 个对等点。我尝试通过服务发现功能调用链码,而不是设置特定的目标对等点。(在使用服务发现之前,我在交易提案请求对象的目标属性中设置了特定的背书者。)
为了使用服务发现,我discover: true在我的连接配置文件中设置为 peers。然后,我简单地将下面的代码添加到我的invoke函数中。
await channel.initialize({ discover: true, asLocalhost: true })
Run Code Online (Sandbox Code Playgroud)
按照fabric-node-sdk文档中的教程,我更改了每个peer的端口以在docker-compose网络中使用服务发现。
一切正常,包括创建通道、安装链代码和实例化链代码。此外,如果我不使用服务发现功能,调用链码也能正常工作。
但是,如果我await channel.initialize({ discover: true, asLocalhost: true })在我的invoke函数中添加,这个initialize函数会抛出如下错误:
Error: No endorsement plan available for {"chaincodes":[{"name":"etri-bcdms-token-chaincode"}]}
Run Code Online (Sandbox Code Playgroud)
(我在实例化过程中设置了我的背书策略)
在对等方中,打印以下日志:
Failed constructing descriptor for chaincode chaincodes:<name:"etri-bcdms-token-chaincode" > ,: cannot satisfy any principal combination
Run Code Online (Sandbox Code Playgroud)
我的调用函数的完整代码如下:
const client = this._useFabricCA
? await getUserClient(orgID, userID)
: await getOrgAdminClient(orgID)
if (!client) {
throw Error(`failed to get …Run Code Online (Sandbox Code Playgroud) 背景: 我已经修改了第一个网络文件(到一个网络,其中每个都有 2 个组织和 1 个对等点)并在其上安装了我自己的链代码。此外,我制作了一个 connection.yaml 文件来与网络进行交互。
问题: 但是当我尝试从nodeSDK获取网络通道并建立网关时,我遇到了这个错误:
错误:[网络]:_initializeInternalChannel:无法初始化通道。尝试联系 2 个 Peers。最后一个错误是错误:2 未知:流已删除
无法评估交易:错误:无法初始化通道。尝试联系 2 个 Peers。最后一个错误是错误:2 未知:流已删除
您可以在下面找到我的客户端的代码。gateway.getNetwork('mychannel')执行时可能会出现错误。
let connectionProfile = yaml.safeLoad(fs.readFileSync('./connection.yaml', 'utf8'));
// Create a new gateway for connecting to our peer node.
const gateway = new Gateway();
await gateway.connect(connectionProfile, { wallet, identity: 'user1', discovery: { enabled: false } });
// Get the network (channel) our contract is deployed to.
const network = await gateway.getNetwork('mychannel');
// Get the contract from the network.
const contract …Run Code Online (Sandbox Code Playgroud) blockchain hyperledger hyperledger-fabric hyperledger-fabric-sdk-js
我正在尝试使用 Fabric Node SDK 在我的 Hyperledger Fabric 网络(在云上设置)上实例化 Golang 链代码。但是,我在执行相同操作时遇到以下错误:
Error: error starting container: error starting container: Failed to generate platform-specific docker build: Failed to pull hyperledger/fabric-ccenv:latest: API error (404): manifest for hyperledger/fabric-ccenv:latest not found: manifest unknown: manifest unknown
Run Code Online (Sandbox Code Playgroud)
相同的堆栈跟踪是:
at self._endorserClient.processProposal (./node_modules/fabric-client/lib/Peer.js:140:36)
at Object.onReceiveStatus (./node_modules/grpc/src/client_interceptors.js:1207:9)
at InterceptingListener._callNext (./node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (./node_modules/grpc/src/client_interceptors.js:618:8)
at callback (./node_modules/grpc/src/client_interceptors.js:845:24)
Run Code Online (Sandbox Code Playgroud)
我还尝试hyperledger/fabric-ccenv在本地环境中直接拉取图像,但在那里也遇到了类似的错误:
命令:
docker pull hyperledger/fabric-ccenv
Run Code Online (Sandbox Code Playgroud)
错误:
Using default tag: latest
Error response from daemon: manifest for hyperledger/fabric-ccenv:latest not found: manifest unknown: manifest unknown …Run Code Online (Sandbox Code Playgroud) hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode
我有一个带有一个Fabric CA的单组织设置。CA Server与MySQL一起运行。我正在使用NodeSDK来连接事务并将其发布到Chaincode。
我能够为同行和订购者设置国家,州,地区,组织和组织单位属性。但是,当我在Fabric中注册并注册“用户”时,并不是所有属性都已设置。从证书文件中可以看到,仅设置了“公用名”和“组织单位”属性。
以下是我用于注册和注册用户的代码段:
await gateway.connect(connectionProfile, { wallet, identity: 'admin', discovery: { enabled: false } });
ca = await gateway.getClient().getCertificateAuthority();
adminIdentity = gateway.getCurrentIdentity();
const secret = await ca.register({
affiliation: user.$affiliation,
enrollmentID: user.$name,
role: user.$role,
}, adminIdentity);
const enrollment = await ca.enroll({
enrollmentID: user.$name,
enrollmentSecret: secret,
});
const userIdentity = await X509WalletMixin.createIdentity(process.env.ACTIVE_MSP, enrollment.certificate, enrollment.key.toBytes());
Run Code Online (Sandbox Code Playgroud)
在这里,“用户”是我在应用程序中使用的参与者的模型。公用名(CN)设置为“ enrollmentID”,组织单位设置为“ role” +“ affiliation”,并且为用户生成的证书具有以下信息:
Owner: CN=jondoe, OU=client + OU=admin.forwarder.com
Issuer: CN=ca.allparticipants.logistics.com,
O=allparticipants.logistics.com, L=Bengaluru, ST=Karnataka, C=IN
Serial number: ea385863390c07c320fd6717de7878fd9f81dc3e
Valid from: Mon Apr 15 14:11:00 IST …Run Code Online (Sandbox Code Playgroud) hyperledger-fabric hyperledger-fabric-ca hyperledger-fabric-sdk-js
在 HLF 1.4 中,我可以在成功调用操作后获取事务 id。但在 HLF 2.x 中我没有得到 txid。我可以在状态数据库(couch db)中看到我提交给hlf的数据。那为什么我没有得到 txid。这是链码中的最后一行,
return shim.Success(nil)
Run Code Online (Sandbox Code Playgroud)
使用 Node sdk 提交交易。
result = await contract.submitTransaction(fcn, args);
console.log("Result:", result.toString())
Run Code Online (Sandbox Code Playgroud)
上面的行给出了空。帮我获取 tx id。
go hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode
我正在尝试在 Hyperledger Fabric 测试网络(Fabcar javascript 智能合约)上执行智能合约,当我尝试使用 fabcar javascript 示例中存在的 invoke.js 文件调用链码时,出现以下错误:
错误:[ServiceEndpoint]:错误:无法在提交者截止日期之前连接 - 名称:orderer0.example.com:7050,url:grpcs://localhost:7050,已连接:false,connectAttempted:true 2021-05-05T23: 44:02.951Z - 错误:[ServiceEndpoint]:waitForReady - 无法连接到远程 gRPC 服务器 orderer0.example.com:7050 url:grpcs://localhost:7050 超时:3000 2021-05-05T23:44:02.952Z -错误:[DiscoveryService]:_buildOrderer[mychannel] - 无法连接到发现的排序者 orderer0.example.com:7050,因为错误:无法在提交者截止日期之前连接 - 名称:orderer0.example.com:7050,url: grpcs://localhost:7050,已连接:false,connectAttempted:true 2021-05-05T23:44:05.957Z - 错误:[ServiceEndpoint]:错误:无法在 Endorser 的截止日期之前连接 - 名称:peer0.org01.example .com:7051,url:grpcs://localhost:7051,已连接:false,connectAttempted:true 2021-05-05T23:44:05.957Z - 错误:[ServiceEndpoint]:waitForReady - 无法连接到远程 gRPC 服务器peer0。 org01.example.com:7051 url:grpcs://localhost:7051 timeout:3000 2021-05-05T23:44:05.958Z - 错误:[DiscoveryService]: _buildPeer[mychannel] - 无法连接到发现的对等点peer0。 org01.example.com:7051 由于错误:无法在 Endorser 截止日期之前连接 - 名称:peer0.org01.example.com:7051,url:grpcs://localhost:7051,已连接:false,connectAttempted:true
需要注意的一件事是我更改了默认测试网络中的端口转发和对等/组织名称。我的连接配置文件如下(为了清楚起见,删除了证书):
{
"name": "test-network-org1",
"version": "1.0.0",
"client": {
"organization": "Org1",
"connection": {
"timeout": {
"peer": {
"endorser": …Run Code Online (Sandbox Code Playgroud) hyperledger hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode