簡體   English   中英

Hyperledger Fabric更新分類帳失敗

[英]Hyperledger Fabric Updating Ledger Fail

我試圖通過Hyperledger Fabric中的第一個演示“編寫您的第一個應用程序” https://hyperledger-fabric.readthedocs.io/en/release-1.2/write_first_app.html 我成功運行了查詢部分(queryAllCars和queryCar方法)。 我在更新分類帳部分時遇到問題。 我就是做這個的:

  1. 將值放在invoke.js文件中:

     var request = { //targets: let default to the peer assigned to the client chaincodeId: 'fabcar', fcn: 'createCar', args: ['CAR10', 'Chevy', 'Volt', 'Red', 'Nick'], chainId: 'mychannel', txId: tx_id}; 
  2. 運行節點invoke.js並進入終端:

商店路徑:/ home / krystian / hyperledger-test / fabric-samples / fabcar / hfc-key-store

從持久性成功加載user1

分配transaction_id:0dfca05d6f19187275c6a31febc81429ddca3a284fd590c631961a10f8da5aee

交易建議很好

已成功發送投標並收到投標響應:狀態-200,消息-“”

無法 成功 調用 ::錯誤:eventhub存在問題:: 14 無法使用:TCP寫入失敗

 at createStatusError (/home/krystian/hyperledger-test/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/client.js:64:15) at ClientDuplexStream._emitStatusIfDone (/home/krystian/hyperledger-test/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/client.js:270:19) at ClientDuplexStream._receiveStatus (/home/krystian/hyperledger-test/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/client.js:248:8) at /home/krystian/hyperledger-test/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/client.js:804:12 

這是我的package.json

{
"name": "fabcar",
"version": "1.0.0",
"description": "Hyperledger Fabric Car Sample Application",
"main": "fabcar.js",
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
    "fabric-ca-client": "^1.2.1",
    "fabric-client": "^1.2.1",
    "grpc": "^1.15.1"
},
"author": "Anthony O'Dowd",
"license": "Apache-2.0",
"keywords": [
    "Hyperledger",
    "Fabric",
    "Car",
    "Sample",
    "Application"
]

}

這是invoke.js崩潰的一部分:

        let event_hub = fabric_client.newEventHub();

    event_hub.setPeerAddr('grpc://localhost:7053');

    // using resolve the promise so that result status may be processed
    // under the then clause rather than having the catch clause process
    // the status
    let txPromise = new Promise((resolve, reject) => {
        let handle = setTimeout(() => {
            event_hub.disconnect();
            resolve({event_status : 'TIMEOUT'}); //we could use reject(new Error('Trnasaction did not complete within 30 seconds'));
        }, 3000);
        **event_hub.connect();
        event_hub.registerTxEvent(transaction_id_string, (tx, code) => {
            // this is the callback for transaction event status
            // first some clean up of event listener
            clearTimeout(handle);
            event_hub.unregisterTxEvent(transaction_id_string);**
            event_hub.disconnect();

我試圖刪除fabcar / node_modules並再次運行npm install。 我也嘗試過運行sudo節點invoke.js。 我完成了建立您的第一個網絡教程,一切正常。

節點版本v8.9.0

NPM版本5.5.1

我正在使用Linux Mint

當initLedger方法和查詢工作沒有問題時,更新分類帳哪里會有問題?

我再次遇到該錯誤,終於解決了。 在grpc版本上不匹配。 我曾經擁有使用grpc@1.14.2的Hyperledger Fabric網絡v1.3.0,並且我的客戶端應用程序已在package.json文件中設置了fabric-client v.1.1.0和grpc 1.6.6。

解決后,我又遇到了另一個錯誤:

無法成功調用:: TypeError:fabric_client.newEventHub不是函數

但是,該錯誤已在此處解決: 無法找到newEventHub函數

因此,如果您遇到相同的問題,則必須在網絡和客戶端應用程序中使用相同版本的軟件包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM