1
votes

Requêtes sur la configuration de plusieurs codes de chaîne sur un canal

1) Dans un canal avec plusieurs chaincodes (disons myccA et myccB) instanciés, lorsque nous interrogeons via myccB, récupérons-nous également les données / transactions qui ont été publiées via myccA?

2) Pouvons-nous ajouter une fonction dans myccB qui appellera l'une des fonctions de myccA puis interrogera les données?

4) S'il y a 3 organisations sur un canal - disons A, B et C. Les organisations A et B ont chaincode_1 installé et instancié. Org B et C ont chaincode_2 installé et instancié. L'organisation A peut-elle (en quelque sorte) interroger les données / transactions publiées via chaincode_2? Je pose cette question car je pense que le grand livre est le même dans toutes les organisations d'une chaîne.


0 commentaires

3 Réponses :


1
votes

1) Non, chaque code de chaîne aura son propre registre, donc les données de l'un ne seront pas atteintes par l'autre.

2) Je ne pense pas. Et cela n'a pas de sens étant donné la raison pour laquelle les chaînes existent.

3) Les canaux sont utilisés lorsque les transactions entre certaines organisations ne doivent pas être accédées par d'autres. Vous devriez en savoir plus sur la documentation: https: // hyperledger-fabric. readthedocs.io/en/release-1.3/channels.html .

4) Comme pour le premier point, chaque chaincode a son propre registre.

Ce document explique les canaux et les codes de chaîne multiples: https: //hyperledger-fabric.readthedocs.io/en/release-1.3/network/network.html


1 commentaires

Je comprends qu'un canal est "un" sous-réseau "privé de communication entre deux ou plusieurs membres spécifiques du réseau, dans le but d'effectuer des transactions privées et confidentielles". Il ne suffit donc pas d'avoir une séparation du grand livre par canal. Pourquoi avons-nous une séparation du grand livre au niveau du code de chaîne? Pourquoi une transaction publiée par un code de chaîne sur un canal ne peut-elle pas être accessible par un autre code de chaîne sur le même canal? Merci pour votre temps.



2
votes

Je ne diffère avec @gustavo que dans la deuxième question, vous pouvez invoquer et interroger d'autres données de code de chaîne dans le même canal si votre pair a les deux codes de chaîne installés en appelant la fonction de code de chaîne mycca: https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/ chaincodenamespace.html # cross-chaincode-access


0 commentaires

0
votes

Je pense que vous demandez une fonction d'invocation de chaincode dans une autre. Ce qui suit fera l'affaire

let chainCodeArgs = ["foo", data]; 
let response = await stub.invokeChaincode("chaincodeName", chainCodeArgs, "channelName");

Vous pouvez appeler la fonction foo (qui est une fonction en code de chaîne à appeler) dans laquelle vous pouvez accéder aux données de ce code de chaîne particulier. Il est évident que si vous exécutez une fonction qui fait partie de myccA, elle récupérera toutes les données (ou comment vous écrivez le code pour récupérer les données) liées à ce CC, donc maintenant si vous appelez la fonction de myccA à partir de myccB (comme je comme indiqué ci-dessus), vous verrez les données écrites par myccA.

Remarque: Si le code chaîne appelé est sur le même canal, il ajoute simplement l'ensemble de lecture et d'écriture de code chaîne appelé la transaction appelante.

Si le code chaîne appelé est sur un canal différent, seule la réponse est renvoyée au code chaîne appelant; tout appel PutState à partir du code de chaîne appelé n'aura aucun effet sur le grand livre; c'est-à-dire que le code de chaîne appelé sur un canal différent n'aura pas son jeu de lecture et son jeu d'écriture appliqués à la transaction. Seuls les jeux de lecture et d'écriture du code chaîne appelant seront appliqués à la transaction. En fait, le chaincode appelé sur un canal différent est une Query , qui ne participe pas aux contrôles de validation d'état dans la phase de validation ultérieure.


0 commentaires