2016-09-26 1 views
2

L'API Invoke accepte la transaction et renvoie immédiatement un code de transaction et un état ok.Quelle est la meilleure approche pour vérifier l'état des transactions?

La demande est traitée par la suite et peut effectivement être rejetée par le chaînage ou l'ajout du ledger peut échouer pour une raison quelconque.

Quelle est la meilleure approche pour vérifier si la transaction est traitée avec succès par le chaincode et le résultat ajouté au ledger?

Répondre

2

La structure v0.6 invoke est un processus asynchrone et le seul moyen d'obtenir une indication de succès ou d'échec est d'utiliser le framework d'événements intégré. Section 3.5 of Fabric Protocol Specification contains Event related information Cette structure d'événement génère 3 types d'événements.

  1. événements Bloquer
  2. événements rejet
  3. événements de Chaincode

Si vous êtes intéressé par la détection d'une exécution chaincode réussie, alors vous devriez suivre pour événements bloc. Vous devez juste surveiller l'occurrence d'un message d'événement de bloc contenant l'UUID que vous avez reçu lorsque vous avez soumis la transaction Invoke. Si vous voulez garder une trace des échecs Chaincode, alors vous devez suivre événements de rejet également. Encore une fois, suivez le message contenant votre UUID comme TxId. Veuillez noter qu'en cas d'événement de rejet, un événement de bloc ne serait pas créé. Et vice versa. Les exemples de structure ont un exemple d'implémentation qui peut être utilisé pour donner une idée sur la façon d'écrire du code. https://github.com/hyperledger/fabric/tree/master/examples/events/block-listener

Veuillez noter que depuis Hyperledger Fabric v1.x.x, l'architecture est entièrement différente. La réponse ci-dessus a été donnée à une question posée dans le contexte de Hyperledger Fabric v0.6