utiliser « payable » même lorsque nous n’envoyons pas d’ETH?

sas

utiliser « payable » même lorsque nous n’envoyons pas d’ETH?


Lorsque nous voulons envoyer de l’ ETH , nous devons utiliser le mot-clé  » payable « . Cependant, même lorsque nous voulons envoyer des tokens (c’est-à- uint256 token ), nous devons utiliser à nouveau le mot-clé  » payable  » dans notre fonction comme suit? ou on peut l’enlever ?

 struct   AssetStruct   { address owner ; 
         bool  isOwner ; 
     } mapping ( uint256 =>   AssetStruct )  assetStructs ; uint256 []   public  assetList ; mapping ( address =>   uint )   public  balance ; mapping ( uint256 =>  mapping ( address =>  mapping ( address =>   bool )))   public  isPaymentDoneMutual ; 

 function  playerPaymentMutual ( uint256 _id ,  address _player ,  uint256 _token )  payable public  returns ( bool  isIndeed )   { address _owner ; _owner =  assetStructs [ _id ]. owner ; balance [ _owner ]   =  balance [ _owner ]   +  _token ; balance [ _player ]   =  balance [ _player ]   -  _token ; isPaymentDoneMutual [ _id ][ _player ][ _owner ]   =   true ; 

                         return   true ; 
 } 

Réponses


 Lauri Peltonen

Vous n’avez pas besoin de payable lors du transfert de jetons.

Il y a essentiellement deux raisons à cela:

1) Vous ne transférez pas d’éthers

2) Les jetons ne sont pas transférés directement. Ils ne se déplacent pas de votre portefeuille vers un autre portefeuille en tant que tel – le transfert est effectué en appelant le contrat de jeton qui mélange simplement les nombres en interne (modifie le contenu des variables des balances )

sas

Je vous remercie. Et en cas d’utilisation de payable , lorsque nous n’envoyons que des token , cela peut causer des problèmes? (Je veux dire dans ma fonction, il vaut mieux le supprimer? Ou je dois le supprimer?) Merci

Lauri Peltonen

Vous n’êtes pas obligé de le supprimer, mais sauf si vous souhaitez autoriser l’Ether entrant pour cette fonction, vous devez le supprimer. Plus vous restreignez ce que les gens peuvent faire avec votre contrat, moins il y a de chance pour eux (et pour vous) de bousiller la logique.


 Jaime

Il vous suffit d’utiliser le modificateur payable pour permettre à votre fonction d’accepter l’éther. Ce n’est pas nécessaire pour envoyer des éthers.

J’espère que cela t’aides.

 

#pas, d’ETH,, lorsque, même, n’envoyons, nous, payable, utiliser

 

yahoo

Laisser un commentaire

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