Comment créer automatiquement des contrats enfants?

Tanmay

Comment créer automatiquement des contrats enfants?


Existe-t-il un moyen de créer automatiquement plusieurs contrats enfants (avec une logique spécifique) à partir d’un contrat parent?

Mes cas d’utilisation sont la gestion de la chaîne d’approvisionnement et la gestion des identités sur la blockchain. Étant donné l’ampleur de ces cas, je ne suis pas enclin à utiliser des structures ou des mappages dans un seul contrat et je souhaite créer des contrats individuels qui peuvent être traités individuellement.

D’un point de vue technique, comment pouvons-nous mettre en œuvre cette logique de création d’un contrat «mère» qui donne naissance à des contrats «enfants» basés sur certaines conditions commerciales, puis ces contrats «enfants» fonctionnent seuls?

wtk219

Ces contrats enfants sont-ils tous identiques ou y en a-t-il plusieurs?

Tanmay

Si je prends l’exemple de la gestion de la chaîne d’approvisionnement, je souhaite créer plusieurs contrats enfants (pour chaque numéro de lot d’expédition). Ici, je ne peux pas prédire le nombre de contrats enfants à l’avance car cela continuera d’augmenter avec le transport de nouveaux articles. La logique dans tous les contrats enfants sera la même.

Réponses


 wtk219

Vous pouvez instancier un contrat à partir d’un autre contrat à l’aide du nouveau mot clé.

Vous pouvez ensuite suivre ces nouveaux enfants à l’aide d’un tableau ou, idéalement, d’un mappage.

Vous devez importer le code source Child.sol dans votre fichier Parent.sol (c’est-à-dire import './Child.sol'; )

Vous pouvez envelopper cela dans une fonction par exemple, comme

 import   './Child.sol' ; mapping ( bytes32 =>   Child )  childList ; 

 function  spawnChild ( bytes32 childId )   { 
     Child  current =   new   Child (); childList [ childId ]   =  current ; 
 } 

ce qui créera un nouveau contrat enfant chaque fois que vous appellerez la fonction.

Vous pouvez ensuite appeler des fonctions sur vos contrats enfants à partir de votre contrat parent comme ceci

 function  callChildFunction ( bytes32 childId )   { childList [ childId ]. theChildfunction (); 
 } 

Tanmay

merci, @ wtk219, je suppose que cela doit fonctionner pour mon cas. Un autre conseil?

wtk219

@tanmay J’ai ajouté un peu sur la façon dont vous pouvez appeler des fonctions sur votre contrat enfant à partir de votre contrat parent. Bonne chance!

 

automatiquement, comment, contrats, créer, des, enfants?

 

yahoo

Laisser un commentaire

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