Siguiendo el tutorial de token en ethereum.org, aparece el mensaje de error "No se implementan datos en la dirección del contrato"

Simplemente estoy copiando el código de moneda completo que se encuentra en este tutorial para implementar un contrato en la red de prueba usando mist, pero recibo el mensaje de error "No hay datos implementados en la dirección del contrato". Luego, el contrato aparece como una transacción en mi billetera, pero no aparece en los contratos. Estoy usando la tarifa más alta posible y mi propia dirección de billetera como argumento de entrada de la dirección central de minter. ¿Es esto válido? Este argumento solo parece usarse en la línea

if(centralMinter != 0 ) propietario = mensaje.remitente;

lo que hace que me parezca bastante redundante, por lo que también se agradece cualquier explicación de esto, independientemente de la relevancia para el mensaje de error.

Estoy teniendo el mismo problema. La implementación del contrato de Token funciona bien, pero My Advanced Token muestra "No se implementan datos en la dirección del contrato".
Cuando dices que estás usando la mayor cantidad gratis posible, ¿estás hablando de gasolina o de precio de la gasolina? Necesitas aumentar el gas. Además, si pudiera publicar un hash de transacción, sería útil para nosotros

Respuestas (1)

No es tu culpa, el MyAdvancedTokencontrato está mal. Cuando extiende otro contrato, y el constructor de ese contrato necesita parámetros, debe pasar esos parámetros durante la fase de creación. MyAdvancedTokenhereda tokenpero no pasa parámetros a su padre, por lo que no funciona como se esperaba. Arreglé el ejemplo y ya envié un pull request a la página oficial. Mientras tanto, puede solucionarlo usted mismo siguiendo estas instrucciones.

Dentro del tokencontrato, elimine la primera línea del constructor:

balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens

Dentro del MyAdvancedTokencontrato, reemplace el constructor incorrecto:

/* Initializes contract with initial supply tokens to the creator of the contract */
function MyAdvancedToken(
    uint256 initialSupply,
    string tokenName,
    uint8 decimalUnits,
    string tokenSymbol,
    address centralMinter
) {
    if(centralMinter != 0 ) owner = msg.sender;         // Sets the minter
    balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens
    name = tokenName;                                   // Set the name for display purposes
    symbol = tokenSymbol;                               // Set the symbol for display purposes
    decimals = decimalUnits;                            // Amount of decimals for display purposes
    totalSupply = initialSupply;
}

Con este:

/* Initializes contract with initial supply tokens to the creator of the contract */
function MyAdvancedToken(
    uint256 initialSupply,
    string tokenName,
    uint8 decimalUnits,
    string tokenSymbol,
    address centralMinter
) token (initialSupply, tokenName, decimalUnits, tokenSymbol) {
    if(centralMinter != 0 ) owner = centralMinter;      // Sets the owner as specified (or msg.sender if centralMinter is not specified)
    balanceOf[owner] = initialSupply;                   // Give the owner all initial tokens
}
Sigo teniendo el mismo problema con la nueva actualización, ¿deberíamos llamar también al constructor propietario?