Llame a mint usando openzeppelin CappedToken. Fallando en Ropsten

Tengo un token creado con la biblioteca OpenZeppelin. Uso el contrato CappedToken.

mi código es:

pragma solidity ^0.4.18;

import 'openzeppelin-solidity/contracts/token/ERC20/CappedToken.sol';

contract YLBToken is CappedToken {
    string public name = "My Token Beta";
    string public symbol = "MTB";
    uint8 public decimals = 18;

    function YLBToken(uint256 cap) CappedToken(cap) {
    }
}

Usando trufa lo compilo y pruebo. Emigré a Ropsten.

He creado una página web para ejecutarlo.

<html>
    <head>
        <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
        <script type='text/javascript'>
            var deployedContract;
            const ADDRESS = "0xcbcc819866a24a777b0c076d4922c127de9ecb06";
            const ABI = MY_ABI;

            // Init and detect metamask
            window.addEventListener('load', function () {
                if (typeof web3 !== 'undefined') {
                    web3 = new Web3(web3.currentProvider);
                    currentAccount = web3.eth.accounts[0];
                } else {
                    // set the provider you want from Web3.providers
                    web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));
                    console.log("Metamask or similar not detected");
                }

                deployedContract = web3.eth.contract(ABI).at(ADDRESS);
                deployedContract.mint(currentAccount, parseInt(1000) * 1000000000000000000, { from: currentAccount, gasPrice: web3.toWei(1, 'gwei') }, function (error, result) {
                    if (!error) {
                        console.log("Mint result = " + result);
                    }
                    else {
                        console.log(error);                        
                    }
                });
            })
        </script>
    </head>
    <body>  
    </body>
</html>

Espero que Metamask se abra y después de hacer clic en enviar para acuñar 1000 tokens en la dirección del propietario, solo para probar funciona bien. Lo tengo ejecutándose en un servidor web.

Pero esto es lo que muestra Metamask:

Metamask que muestra el mensaje "Error de transacción. Excepción lanzada en el código del contrato

No tengo idea de por qué Metamask muestra este mensaje. Usando la prueba de trufa, la función de menta funciona bien. Usar Metamask apuntando a localhost:8545 y ejecutar testrpc en una consola también funcionó bien.

¿Alguien puede señalarme una solución?

Respuestas (1)

Respondiendo a mi propia pregunta:

El mensaje "Error de transacción. Excepción lanzada en el código del contrato" aparece cuando se activan algunos de los "requisitos" en su código de solidez.

En mi caso, estaba configurando un límite en el archivo de migración de trufa de 10.000 y al acuñar estaba usando:

parseInt(1000) * 1000000000000000000

debido a los 18 decimales.

Entonces 1000000000000000000000000 > cap y se arrojó el error