Hyperledger Fabric: Stub.getState возвращает пустой буфер - PullRequest
0 голосов
/ 22 декабря 2018

вот наш код для помещения объекта:

let asset = {
        owner: org,
        sgtin: sgtin 
      };
      let asset_as_string = JSON.stringify(asset);
      console.log(asset_as_string);
      let bytes = Buffer.from(asset_as_string);
      console.log(bytes);
      await stub.putState(sgtin, bytes);

и наш код для его извлечения:

let bytes = await stub.getState(sgtin);
      console.log(bytes);

вот консольный журнал при помещении объекта:

{"owner":"jnj","sgtin":"00000"}
<Buffer 7b 22 6f 77 6e 65 72 22 3a 22 6a 6e 6a 22 2c 22 73 67 74 69 6e 22 3a 22 30 30 30 30 30 22 7d>

и при попытке его получить:

<Buffer >

буфер пуст и вызывает ошибку при попытке его проанализировать:

SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at update (/usr/local/src/chaincode.js:108:24)

как это исправить

1 Ответ

0 голосов
/ 26 декабря 2018

Проблема заключалась в том, что Fabric ничего не записывал в базу данных блокчейна.Вызов invoke будет возвращаться без каких-либо признаков сбоя, что-то вроде

[chaincodeCmd] chaincodeInvokeOrQuery -> INFO 067 Chaincode invoke successful. result: status:200 payload:"\"OK\""

(еще одна причина, по которой мы сожалеем об использовании ткани), но когда мы смотрели в одноранговых журналах, мы видели некоторую ошибку.Нечто подобное не могло получить одобрение.Это дало нам подсказку, так как мы установили нашу политику одобрения на AND, но вызывали цепной код только для одного участника.Когда мы изменили команду invoke для выполнения цепного кода для всех пиров, ошибка исчезла.

root@d0931df7a681:/# peer chaincode invoke -C mychannel -n mycc -c '{"Args":["create","00000"]}' -o orderer1-ord:7050 --tls --cafile /data/ord-ca-chain.pem --clientauth $ORDERER_CONN_ARGS --peerAddresses peer1-jnj:7051 --tlsRootCertFiles data/jnj-ca-chain.pem --peerAddresses peer1-kp:7051 --tlsRootCertFiles data/kp-ca-chain.pem --peerAddresses peer1-cvs:7051 --tlsRootCertFiles data/cvs-ca-chain.pem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...