Placement d’adresses dans le contrat Crowdsale

Une fois mordu

Placement d’adresses dans le contrat Crowdsale


Je suis coincé avec une crowdsale qui doit être déployée demain! Jeton déjà créé et maintenant juste envie de crowdsale. J’ai donc essayé plusieurs exemples – ethereum.org, zeppelin, github et tout, mais ils ne semblent pas donner d’aide réelle en cas de besoin sur la syntaxe d’adresse de 3 types d’adresses Adresse de jeton, adresse de contrat et adresse de réception des dons eth. Plus précisément, je veux simplement savoir OERE dans le code (ou le compilateur) pour brancher mon adresse de jeton et O to placer l’adresse du contrat à l’aide du compilateur Solidity et où l’adresse du destinataire.

Deuxièmement, je pense que je suis confus par les deux dernières adresses. Ces adresses sont-elles générées ou dois-je les saisir manuellement? Voici un lien vers la pièce que je veux vendre. Je veux que ce soit aussi simple que possible.

Merci d’avance

 pragma solidity ^ 0.4 . 13 ; contract ECToken   { 
     function  balanceOf ( address _owner )  constant returns ( uint256 ); 
     function  transfer ( address _to ,  uint256 _value )  returns ( bool ); 
 } library SafeMath   { 
   function  mul ( uint256 a ,  uint256 b )   internal  constant returns ( uint256 )   { uint256 c =  a *  b ; 
     assert ( a ==   0   ||  c /  a ==  b ); 
     return  c ; 
   } 

   function  div ( uint256 a ,  uint256 b )   internal  constant returns ( uint256 )   { uint256 c =  a /  b ; 
     return  c ; 
   } 

   function   sub ( uint256 a ,  uint256 b )   internal  constant returns ( uint256 )   { 
     assert ( b <=  a ); 
     return  a -  b ; 
   } 

   function  add ( uint256 a ,  uint256 b )   internal  constant returns ( uint256 )   { uint256 c =  a +  b ; 
     assert ( c >=  a ); 
     return  c ; 
   } 
 } 

 interface   Token   {  
     function  transfer ( address _to ,  uint256 _value )  returns ( bool ); 
     function  totalSupply ()  constant returns ( uint256 supply ); 
     function  balanceOf ( address _owner )  constant returns ( uint256 balance ); 
 } contract TokenCrowdsale   { 

     using   SafeMath   for  uint256 ; 

     // Crowdsale details address public  beneficiary ;        //<---? Do I place a key string here 0x..... ? address public  creator ;            //<---? Do I place a key string here 0x..... ? address public  confirmedBy ;        //<---? Do I place a key string here 0x..... ? uint256 public  maxSupply =   15000 ;     
     bool   public  purchasingAllowed =   false ; uint256 public  totalSupplied =   0 ; 

     // Eth to token rate uint256 public  rate =   1200 ; 

     enum   Stages   { 
         PreSale ,   //0 
         InProgress ,   //1 
         Ended ,   //2 
         Withdrawn   //3 
     } 

     Stages   public  stage =   Stages . PreSale ; 

     // deployed token 
     Token   public  deplToken ; 

     // Invested balances mapping ( address =>  uint256 )  balances ; 

     /** * Throw if at stage other than current stage * * @param _stage expected stage to test for */ modifier atStage ( Stages  _stage )   { 
         require ( stage ==  _stage ); _ ; 
     } 

     /** * Throw if sender is not beneficiary */ modifier onlyBeneficiary ()   { 
         require ( beneficiary ==  msg . sender ); _ ; 
     } 

     /** * Get balance of `_investor` * * @param _investor The address from which the balance will be retrieved * @return The balance */ 
     function  balanceOf ( address _investor )  constant returns ( uint256 balance )   { 
         return  balances [ _investor ]; 
     } 


     function  enablePurchasing ()  onlyBeneficiary atStage ( Stages . PreSale )   { purchasingAllowed =   true ; stage =   Stages . InProgress ; 
     } 

     function  disablePurchasing ()  onlyBeneficiary atStage ( Stages . InProgress )   { purchasingAllowed =   false ; stage =   Stages . Ended ; 
     } 

     function  enableNewPurchasing ()  onlyBeneficiary atStage ( Stages . Withdrawn )   { purchasingAllowed =   true ; stage =   Stages . InProgress ; 
     } 

     /** * Constructor * * @param _tokenAddress The address of the token contact * @param _beneficiary The address of the wallet for the beneficiary * @param _creator The address of the wallet for the creator */ 
     // Do I uncomment and define these parameters above in constructor area??? 

     function   TokenCrowdsale ( address _tokenAddress ,  address _beneficiary ,  address _creator )   { deplToken =   Token ( _tokenAddress ); beneficiary =  _beneficiary ; creator =  _creator ; 
     } 

     /** * For testing purposes * * @return The beneficiary address */ 
     function  confirmBeneficiary ()  onlyBeneficiary { confirmedBy =  msg . sender ; 
     } 


     event  sendTokens ( address indexed to ,  uint256 value ); 


     /** * Transfer raised amount to the beneficiary address */ 
     function  withdraw ()  onlyBeneficiary atStage ( Stages . Ended )   { uint256 ethBalance =   this . balance ; beneficiary . transfer ( ethBalance ); stage =   Stages . Withdrawn ; 
     } 

     /** * Receives Eth and issue tokens to the sender */ 
     function   ()  payable atStage ( Stages . InProgress )   { 

         require ( purchasingAllowed ); 
         if   ( msg . value ==   0 )   {   return ;   } uint256 weiAmount =  msg . value ; address investor =  msg . sender ; uint256 received =  weiAmount . div ( 10e7 ); uint256 tokens =   ( received ). mul ( rate ); 
         } sendTokens ( msg . sender ,  tokens ); deplToken . transfer ( investor ,  tokens ); totalSupplied =   ( totalSupplied ). add ( tokens ); 

         if   ( totalSupplied >=  maxSupply )   { purchasingAllowed =   false ; stage =   Stages . Ended ; 
         } 

     } 


     function  tokensAvailable ()  constant returns ( uint256 )   { 
         return  deplToken . balanceOf ( this ); 
     } 


     function  withdrawForeignTokens ( address _tokenContract )  onlyBeneficiary public  returns ( bool )   { 
         ECToken  token =   ECToken ( _tokenContract ); uint256 amount =  token . balanceOf ( address ( this )); 
         return  token . transfer ( beneficiary ,  amount ); 
     } 
 } 

Réponses


 smarx

REMARQUE : j’ai tenté de répondre à vos questions ci-dessous, mais il semble que vous soyez nouveau dans la lecture et l’écriture de code Solidity. Je vous déconseille fortement d’essayer de faire une vente de jetons sans comprendre le contrat que vous déployez.


Dans ce contrat, trois adresses sont transmises en tant que paramètres de constructeur, vous les fournirez donc au moment du déploiement du contrat. (La façon dont vous fournissez les paramètres du constructeur dépend de l’outil que vous utilisez.)

L’adresse tokenAddress est l’adresse du jeton que vous vendez (le contrat de jeton que vous avez déployé).

Le beneficiary est l’adresse du compte qui recevra l’éther.

L’adresse du creator semble être inutilisée, donc peu importe ce que vous y mettez. Vous avez également ajouté un commentaire sur confirmedBy . Cela aussi semble ne pas être utilisé de manière significative.

Une fois mordu

Merci, j’utilise le compilateur Solidity et oui relativement nouveau mais déployé il y a quelques mois et pensais que le code crowdsale serait également un jeu d’enfant mais sa 11e heure et des balles en sueur. C’est un groupe communautaire de toute façon … rien de critique. Donc, pour être clair, tokenAddress n’est pas identique à _tokenAddress dans la zone constructeur. Remarquez que j’ai également un commentaire dans la zone du constructeur demandant si ces ensembles de variables sont manipulés. Comment cela est-il transmis au constructeur?

smarx

Désolé, devrait être _tokenAddress .

Une fois mordu

Je ne sais toujours rien ici. J’obtiens les définitions des variables, mais je ne sais toujours pas O to placer les adresses réelles. J’utilise le compilateur en ligne Solidity si quelqu’un le connaît. C’est un copier / coller de 2 minutes de ce qui précède pour comprendre ceux qui connaissent le compilateur de solidité.

smarx

Ce sont des paramètres que vous transmettez au constructeur. Vous les fourniriez au moment où vous avez déployé le contrat, pas pendant la compilation.

 

contrat, crowdsale, d’adresses, dans, Le, placement

 

yahoo

Laisser un commentaire

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