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.
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 ?
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 :
Cas d'utilisation des 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 } ]
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: 'car', make: verifiedArgs.make, model: verifiedArgs.model, color: verifiedArgs.color, owner: verifiedArgs.owner }; await stubHelper.putState(verifiedArgs.key, car); }
await stubHelper.putState(verifiedArgs.key, car, {privateCollection: 'carCollection'});
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: 'carCollection'}); if (!car) { throw new NotFoundError('Car does not exist'); } return car; }
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!