Modifier le contenu de la variable d’état dans le contrat A à partir du contrat B

NowsyMe

Modifier le contenu de la variable d’état dans le contrat A à partir du contrat B


Si j’ai deux contrats, le contrat A et le contrat B. Comment puis-je changer le contenu des variables d’état déclarées publiquement dans le contrat A du contrat B?

Réponses


 Rob Hitchens B9lab

Il n’est pas important que la variable soit public . Cela implique beaucoup de choses, mais cela n’implique pas que n’importe qui ou n’importe quel contrat puisse venir le remplacer.

contract A devra expliquer une fonction. contract B devra connaître cette fonction et connaître l’adresse du contrat A. C’est plus d’une façon de répondre à chacune de ces préoccupations. Comme point de départ, réfléchissez.

Dans le contrat A, créez une fonction qui écrit réellement dans la variable d’état.

 function  setValue ( uint  newValue )   public  returns ( bool  success )   { someValue =  newValue ; 
   return   true ; 
 } 

dans le contrat B.sol, informez B de l’interface et de l’emplacement de A et instanciez une instance.

 contract AInterface   { 
   function  setValue ( uint  newValue )   public  returns ( bool  success ); 
 } contract B { 

   AInterface  a ; 

   function  B ( address addressContractA )   public   { a =   AInterface ( addressContractA ); 
   } 

   function  setThatThing ( uint  newNumber )   public  returns ( bool  success )   { 
     return  a . setValue ( newNumber ); 
   } 
 } 

J’espère que cela aide.

NowsyMe

Salut Rob, donc sans l’approche par interface, techniquement, les variables d’état ne peuvent pas être écrasées par des contrats externes?

Rob Hitchens B9lab

Droite. Non. L’état du contrat interne est à 100% sous le contrôle du contrat lui-même et personne n’y échappe. public fait quelques choses, dont l’un est un getter « gratuit ». Cela ne signifie pas qu’il y a un setter gratuit. Cette fonction pratique est logique car il n’y a pas de problèmes de contrôle d’accès sur les fonctions en lecture seule … tout est visible pour tout le monde, il est donc logique de le rendre plus pratique. Les setters ont très souvent des problèmes de contrôle d’accès spécifiques au cas d’utilisation, il est donc logique de laisser à l’auteur le soin de décider ce qui est acceptable.

 

#à, #de, #la, B, contenu, contrat, d’état, dans, du, Le, modifier, partir, variable

 

yahoo

Laisser un commentaire

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