Que fais-je de mal avec la fonction Airdrop?

Dzeki Novak

Que fais-je de mal avec la fonction Airdrop?


J’essaie de déplacer certains jetons de mon jeton erc20 vers mon deuxième compte. J’utilise myetherwallet pour tester ceci:

ERC20Interface a uniquement une fonction de transfert.

  ERC20Interface token; constructor(address _token) public { token = ERC20Interface(_token); } 

Si je comprends bien, je passe l’adresse du jeton de contrat via le constructeur qui est ici: https://rinkeby.etherscan.io/address/0x8966504a3b07e2cecd4f4bbb3d51566c7127b156

J’utilise ensuite la fonction (je fais des transactions avec un compte qui a été initialement attribué des jetons donc j’ai des jetons erc20):

 function drop(address[] recipients, uint256[] values) public { for (uint256 i = 0; i < recipients.length; i++) { token.transfer(recipients[i], values[i]); emit DropedFun(address(this), recipients[i], values[i]); } } 

Je reçois une transaction qui a échoué: https://rinkeby.etherscan.io/tx/0x4dcb95d87feed1f62cd50fe3921b5683878f718bc17dddf0150b9ba1a94e3059

Dois-je utiliser transferFrom et mettre l’adresse qui contient les jetons erc20, ou dois-je transférer le jeton erc20 vers l’adresse pour pouvoir utiliser la fonction .transfer? Si tel est le cas, comment puis-je transférer le jeton erc20 en contrat?

Réponses


 hextet

Le contrat que vous utilisez pour disperser les parachutages doit avoir un solde de jetons de plus pour utiliser la fonction de transfer . Pour ce faire, envoyez des jetons au contrat. Notez cependant que si vous ne programmez pas une méthode pour retirer des jetons, il est possible qu’ils restent bloqués dans le contrat.

Si vous souhaitez utiliser la fonction transferFrom , vous devez vous assurer de donner une allowance appropriée.

Quelques liens pour lire:

Dzeki Novak

Bien sûr, mais comment transférer le jeton erc20 en contrat intelligent? Et comme vous pouvez le voir, j’ai essayé de ne pas transférer erc20 en invoquant drop avec mon propre compte qui possède tous les jetons erc20 mais cela a quand même échoué.

hextet

Si vous avez les jetons dans votre portefeuille, les envoyer à l’adresse contractuelle du contrat airdrop serait bien.

Dzeki Novak

C’est exactement ce que je fais dans la fonction mentionnée et j’obtiens toujours une transaction d’échec. En ce qui concerne erc20, cela signifie-t-il que je peux envoyer un jeton via new to contract et qu’il devrait fonctionner comme la fonction eth payable? Un exemple de mise en œuvre?

hextet

Non, vous devez d’abord envoyer des jetons au contrat. Le contrat que vous liez ne contient aucun jeton. Envoyez-lui d’abord des jetons, puis ce que vous faites fonctionnera. Ce n’est pas différent que d’envoyer des jetons normalement, assurez-vous simplement de l’envoyer au contrat.

Dzeki Novak

J’ai oublié que vous pouvez envoyer des jetons pour contracter comme à l’adresse normale. Vous avez juste besoin d’une fonction payante vide, je suppose.

 

#de, #la, AirDrop, avec, fais-je, fonction, Mal, que

 

yahoo

Laisser un commentaire

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