Comment puis-je coder un contrat crowdsale pour envoyer tous les jetons invendus à une adresse spécifique?

John Murphy

Comment puis-je coder un contrat crowdsale pour envoyer tous les jetons invendus à une adresse spécifique?


D’après ma compréhension des contrats intelligents, il semblerait qu’il n’y ait aucun moyen de définir une fonction ou une action spécifique pour qu’elle se déclenche après un certain temps, est-ce le cas?

Est-ce le seul moyen d’allouer des jetons invendus pour définir une fonction qui le fait, puis d’appeler cette fonction manuellement à la fin de la date de fin de l’ICO?

Je ne trouve aucune implémentation de ce genre de chose, mais c’est sûrement une méthode courante au sein des ICO? Le contrat OpenZeppelins « FinalizeAgent » n’est d’aucune utilité, car il n’explique pas comment il est déclenché.

Je vous remercie.

Réponses


 MSwezey

Avez-vous pensé à utiliser un jeton [mintable] ( https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/MintableToken.sol )? Il n’y aurait alors pas de jetons invendus à avoir à se soucier de la gravure 😉

Mais si vous ne pouvez pas faire ça.

Alors oui, vous avez raison de penser qu’un contrat intelligent ne peut pas se déclencher pour faire quelque chose car cela nécessiterait une sorte de boucle. Et pourriez-vous imaginer à quel point l’EVM serait vissé si tous les contrats intelligents étaient en boucle en attendant qu’un événement basé sur le temps se produise? Pas de bueno. Non seulement cela, les contrats intelligents ne peuvent pas payer les coûts de gaz (IIRC qui est en cours ou est un EIP)

Réponse directe:

 function  burnTokens ()   public  onlyOwner onlyCrowdsaleOver { address ( 0 ). transfer ( remainingTokens ); 
 } 


 licorne propre

Vous avez raison de dire qu’il n’y a aucun moyen de définir une action à déclencher seule après un laps de temps spécifique. Il doit y avoir une transaction qui fait cela.

La transaction pourrait déclencher une fonction comme celle-ci

 function  burnTokensAfterSale ()   { 
     if   ( finalized &&   ( block . number >   6000000 ))   { _transfer ( 0 ,  remainingTokens ) 
     } 
 } 


 Betcheg

Il y a le mot-clé now dans ethereum qui est égal à un horodatage.

Pourquoi n’utilisez-vous pas quelque chose comme:

      if ( now >   1500000 ) 
     { sendTo ( 0x123456789213456789123456789 ); 
     } 

John Murphy

Mais cela ne devrait-il pas être à l’intérieur d’une fonction qui serait ensuite appelée après la fin de la vente publique? L’appel d’une fonction via l’adresse du propriétaire est-il le moyen accepté de l’implémenter? Merci de votre aide.

Betcheg

ethereum.org/crowdsale Regardez l’exemple, ici la vérification est appelée par un modificateur chaque fois qu’une fonction est appelée.

 

#(une, #à, #pour, adresse, coder, comment, contrat, crowdsale, envoyer, invendus, jetons, Les, Puis-je, spécifique, tous, un

 

yahoo

Laisser un commentaire

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