Déployer le contrat pour chaque utilisateur [doublon]

Anubhav Gupta

Déployer le contrat pour chaque utilisateur [doublon]


Cette question a déjà une réponse ici:

J’ai une application dans laquelle je dois mettre chaque information d’utilisateur sur un bloc différent pour obtenir l’adresse unique du bloc, dois-je déployer le contrat chaque fois que j’ajouterai de nouvelles informations d’utilisateur?

Anubhav Gupta

La réponse que vous avez suggérée ne rentre pas dans mon cas. Je dois créer un bloc unique pour chaque utilisateur. Pouvez-vous me suggérer une bonne approche pour y parvenir?

Henk

Qu’entendez-vous par «bloquer»?

Anubhav Gupta

Je veux dire une adresse unique pour chaque utilisateur, comme lorsque nous déployons un contrat intelligent, il renvoie une adresse unique du contrat. Donc, c’est un bloc pour moi.

Henk

Ok donc par bloc tu veux dire un nouveau contrat intelligent

Réponses


 Henk

Ok, donc vous voulez un contrat d’usine. Vous pouvez le faire de cette façon, mais je vous suggère tout de même d’utiliser un mappage.

Tout d’abord, déployez le contrat UserFactory . Chaque fois que vous souhaitez stocker de nouvelles informations utilisateur, appelez createUser . Il émet l’événement UserCreated , qui contient l’index dans lequel l’utilisateur a été stocké.

 pragma solidity ^0.4.22; contract User { uint256 public id; bytes32 public name; uint8 public age; constructor( uint256 _id, bytes32 _name, uint8 _age) public { name = _name; id = _id; age = _age; } } contract UserFactory { User[] public users; function createUser(uint256 _id, bytes32 _name, uint8 _age) external { User user = new User(_id, _name, _age); emit UserCreated(user, users.length); users.push(user); } event UserCreated(User user, uint256 index); } 
Anubhav Gupta

Désolé, Henk! Je suis plus frais à l’éthereum, je ne savais pas exactement ce que je demandais. Je viens de comprendre quand je déploie un contrat, puis j’appelle sa méthode en utilisant send (). J’obtiens un blockhash, blockNumber et un ID de transaction en réponse. Existe-t-il un bloc créé pour chaque transaction que je fais et le paramètre que je transmets à la fonction est-il stocké sur le nouveau bloc sans remplacer les données utilisateur précédentes? Et comment afficher les données stockées sur ces blocs? Quelle est la différence entre utiliser ce processus et celui que vous avez suggéré dans votre réponse?

Henk

Vous devriez peut-être lire la documentation Solidity avant de commencer à créer quoi que ce soit avec. Veuillez également lire le fonctionnement de la technologie blockchain, car il semble que vous ne connaissiez pas très bien les composants internes d’Ethereum et comment les contrats intelligents sont exécutés. Vous voudrez peut-être regarder cette vidéo sur la blockchain et cette vidéo sur les contrats intelligents

Anubhav Gupta

D’accord. Je vous remercie. Je vais certainement passer par là. Mais en ce moment, c’est un peu urgent pour moi. Pouvez-vous m’aider s’il vous plaît?

Anubhav Gupta

J’ajoute maintenant une transaction pour chaque ensemble de nouvelles données et j’obtiens en retour l’ID de transaction. Maintenant, comment puis-je voir mes données enregistrées en utilisant cet ID de transaction?

 

[doublon], #pour, chaque, contrat, déployer, Le, utilisateur

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *