Maison > Problème commun > Expérience pratique des débutants en matière de données privées Fabric

Expérience pratique des débutants en matière de données privées Fabric

little bottle
Libérer: 2019-04-30 14:56:33
avant
2663 Les gens l'ont consulté

Les données privées Hyperledger Fabric sont une nouvelle fonctionnalité introduite dans la version 1.2. Les données privées Fabric utilisent une base de données latérale (SideDB) pour enregistrer les données privées entre plusieurs membres du canal, fournissant ainsi une couche plus flexible au-dessus du mécanisme de protection des données. Cet article explique comment utiliser les données privées de Fabric dans le développement de codes en chaîne.

Expérience pratique des débutants en matière de données privées Fabric

fabric private data utilise SideDB pour enregistrer les données privées, ce qui équivaut à fournir un mécanisme de protection de la confidentialité des données plus fin au-dessus du canal. Cet article présentera l'objectif, les concepts de base et les scénarios d'application des données privées Fabric.

Qu'est-ce que les données privées de Fabric ?

La manière actuelle d'assurer la confidentialité des données dans Hyperledger Fabric consiste à utiliser des canaux. Cependant, les autorités ne sont pas les seules à créer un grand nombre de canaux dans les grands réseaux afin de garantir la protection de la confidentialité des données, car cela entraînera des coûts supplémentaires, tels que les politiques de gestion, les versions de code de chaîne et la fourniture de services aux membres (MSP). Dans un canal, toutes les données sont publiques ou privées. Par conséquent, ce sera très gênant si vous souhaitez transférer des actifs à des membres en dehors du canal. C'est pourquoi Hyperledger Fabric introduit les transactions privées. farbic private data permet la création d'ensembles de données privées basées sur des politiques permettant de définir quels membres du canal peuvent accéder aux données. Les données privées de Fabric peuvent être gérées simplement en ajoutant des politiques. Cela permet de rendre certaines données publiques uniquement à certains membres.

Prenons l’exemple des billes d’Hyperledger Fabric. Toutes les données sur le marbre peuvent être rendues publiques, à l'exception de son détenteur et de son prix. Ces deux données ne peuvent être divulguées à des tiers et le prix ne doit pas être connu de tiers. Peut-être avez-vous besoin de suivre ces données car vous devez vérifier que la personne qui vend le marbre est le véritable propriétaire. Un hypothétique cabinet d’audit de marbre peut agir en tant que partenaire pour vérifier cela. Si vous utilisez des canaux, toutes vos actions seront enregistrées dans l’état du grand livre et pourront être vues par n’importe qui.

Comment les données privées Fabric résolvent-elles les problèmes ci-dessus ?

Expérience pratique des débutants en matière de données privées Fabric

Dans l'image ci-dessus, le premier ensemble, Channel Read-Write Sets" est l'architecture lorsque les données privées de la structure ne sont pas introduites, chaque transaction à la fois enregistrer leur statut et leur historique.

Le deuxième ensemble, partition d'état privé 1, montre un état privé partagé entre deux nœuds appartenant à des organisations différentes. Cet état est basé sur des politiques prédéfinies répliquées entre les nœuds. set, partition d'état privée 2 et 3, montre le véritable exemple de données privées de structure, ce qui signifie que vous pouvez l'ignorer pour chaque marbre. Les vendeurs et les auditeurs configurent des ensembles de données privées séparément. Ces ensembles de données permettent l'ajout de données supplémentaires. les données principales sont toujours stockées dans l'état principal et les nœuds du grand livre pourront voir le hachage des données sur le grand livre principal, ainsi que les données réelles dans la base de données privée ne synchroniseront pas la base de données privée et ne pourront voir que la base de données privée. hachage des données sur le grand livre principal. Le hachage est irréversible, donc ces nœuds non autorisés ne peuvent pas voir les données réelles

D'un niveau supérieur, le problème résolu par les données privées de la structure ressemble à ceci :

Expérience pratique des débutants en matière de données privées Fabric

Cas d'utilisation des données privées Fabric

Expérience pratique des débutants en matière de données privées Fabric

Nous utilisons le cas Fabcar classique dans Hyperledger Fabric pour montrer comment utiliser l'ensemble de données privées dans la fonction initLedger. Créez 10 nouvelles voitures dans notre ensemble de données. Toutes ces voitures peuvent être consultées par n'importe qui sur le réseau. Créons maintenant une base de données privée, et ces données ne seront partagées qu'avec le garage d'un autre membre. >

Configuration de l'ensemble de données privées FabricNous avons d'abord besoin d'un fichier de configuration de l'ensemble de données collections_config.json, qui contient le nom de l'ensemble de données privées et la politique d'accès. La politique d'accès est similaire à l'approbation. Policy. Cela nous permet d'utiliser la logique de politique existante telle que OR, AND, etc.

[
  {
    "name": "carCollection",
    "policy": "OR ('Org1MSP.member','Org2MSP.member')",
    "requiredPeerCount": 0,
    "maxPeerCount": 3,
    "blockToLive":1000000
  }
]
Copier après la connexion

Modifier le code de chaîne pour prendre en charge les données privées de Fabric

Voici le createCar original. fonction :

async createCar(stubHelper: StubHelper, args: string[]) {
      const verifiedArgs = await Helpers.checkArgs<any>(args[0], Yup.object()
          .shape({
              key: Yup.string().required(),
              make: Yup.string().required(),
              model: Yup.string().required(),
              color: Yup.string().required(),
              owner: Yup.string().required(),
          }));
      let car = {
          docType: &#39;car&#39;,
          make: verifiedArgs.make,
          model: verifiedArgs.model,
          color: verifiedArgs.color,
          owner: verifiedArgs.owner
      };
      await stubHelper.putState(verifiedArgs.key, car);
}
Copier après la connexion

Pour ajouter des données à l'ensemble de données privé carCollection, nous devons spécifier l'ensemble de données cible :

await stubHelper.putState(verifiedArgs.key, car, {privateCollection: &#39;carCollection&#39;});
Copier après la connexion

Ensuite, si nous voulons interroger le véhicule, nous devons également spécifier l'ensemble de données privées cible :

async queryPrivateCar(stubHelper: StubHelper, args: string[]) {
      const verifiedArgs = await Helpers.checkArgs<any>(args[0], Yup.object()
          .shape({
              key: Yup.string().required(),
          }));
      const car = await stubHelper.getStateAsObject(verifiedArgs.key, {privateCollection: &#39;carCollection&#39;});
      if (!car) {
          throw new NotFoundError(&#39;Car does not exist&#39;);
      }
      return car;
}
Copier après la connexion
De même, pour les opérations de suppression et de mise à jour, vous devez spécifier l'ensemble de données privées cible sur lequel opérer.

meilleures pratiques en matière de code de chaîne de données privées Fabric

Bien entendu, certaines de nos données sont visibles par toute personne appartenant au réseau Hyperledger Fabric. Cependant, certaines de ces données sont privées et conservées dans un ensemble de données privé et ne sont donc accessibles qu'aux homologues définis dans le fichier de configuration de l'ensemble de données.

Nous vous recommandons de sauvegarder les données en utilisant la même clé dans les ensembles de données publics et privés afin de faciliter l'extraction des données. Enfin, j’espère que cet article vous sera utile.

Si vous souhaitez en savoir plus sur les didacticiels connexes, veuillez faire attention au Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:oschina.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal