Получение и хранение адреса контракта erc20 после его динамического создания

У меня есть функция, которая динамически создает контракт ERC20 на вызов функции в другом контракте следующим образом:

 function  createDao ( string  _tokenName )   public  payable { tokenNumberIndex =  safeAdd ( tokenNumberIndex ,   1 ); 

   string  memory _tokenSymbol = bytes32ToString ( uintToBytes ( tokenNumberIndex )); address _tokenAddress =  
        ( new  REP ). value ( msg . value )( _tokenSymbol ,  _tokenName ); erc20SymbolAddresses [ _tokenSymbol ]   =  _tokenAddress ; proposalIndex =  safeAdd ( proposalIndex ,   1 ); emit NewProposalCreated ( proposalIndex ); newProposalInternal ( proposalIndex , _tokenSymbol , _tokenName , _tokenName , msg . sender , msg . value );     
 } 

Я уверен, что следующий код выполняется правильно:

 address _tokenAddress =  
    ( new  REP ). value ( msg . value )( _tokenSymbol ,  _tokenName ); erc20SymbolAddresses [ _tokenSymbol ]   =  _tokenAddress ; 

Однако erc20SymbolAddresses дает адрес 0 для всех возможных символов токена. Сколько времени занимает создание репутации? Как я узнаю, что создание не удастся?

Код контракта REP следующий:

 contract REP is  ERC20Interface ,   SafeMath   { 
 string   public  symbol ; 
 string   public  name ; uint8 public  decimals ; 
 uint   public  _totalSupply ; mapping ( address =>   uint )  balances ; mapping ( address =>  mapping ( address =>   uint ))  allowed ; 

 constructor ( string  _tokenSymbol ,   string  _name )   public  payable { symbol =  _tokenSymbol ; name =  _name ; decimals =   18 ; _totalSupply =  msg . value ; balances [ msg . sender ]   =  _totalSupply ; emit Transfer ( address ( 0 ),  msg . sender ,  _totalSupply ); 
 } 
  .......... 
  .......... 
 } 

Что мне здесь не хватает?

Ответы (1)

Я подозреваю, что вы называете параметры неправильными, попробуйте использовать и не включать свойство msg.value , я не вижу выгоды от включения его в ваш конкретный контракт.

 address _tokenAddress =   ( new  REP ( _tokenSymbol ,  _tokenName ); 

Есть несколько эталонных трюфельных коробок, которые вы также можете проверить на фабриках erc20, таких как EIP20Factory.