`ecrecover` tirando por error de gas en Ropsten

Aquí: http://solidity.readthedocs.io/en/v0.4.21/units-and-global-variables.html , establece

Puede ser que te encuentres con Out-of-Gas para sha256, ripemd160 o ecrecover en una cadena de bloques privada. La razón de esto es que se implementan como los llamados contratos precompilados y estos contratos solo existen realmente después de recibir el primer mensaje (aunque su código de contrato está codificado). Los mensajes a contratos no existentes son más caros y, por lo tanto, la ejecución se encuentra con un error de falta de gas. Una solución para este problema es enviar primero, por ejemplo, 1 Wei a cada uno de los contratos antes de usarlos en sus contratos reales. Esto no es un problema en la red oficial o de prueba.

También se está quedando sin gasolina en Ropsten, estoy llamando a una función que involucra ecrecovery no se está ejecutando.

Aunque, la misma función funcionó bien en las pruebas de trufas. Ejecutando la misma función en Remix , obtén

Error de estimación de gas con el siguiente mensaje (ver más abajo). Es probable que la ejecución de la transacción falle. ¿Quieres forzar el envío? Error: el gas requerido excede la asignación o siempre falla la transacción

Etherscan Tx: https://ropsten.etherscan.io/tx/0x229a4e16f4464809181a24a16e1db2acb82b11ac160c26a1aa5e692495fb4d4a

¿Cómo puedo ejecutar esta función usando Ropsten?

El problema que indicas solo se aplica a blockchains privadas y no a ropsten. Hay un error en la solidez que causa el cálculo incorrecto del gas para los contratos precompilados. Pero de su transacción no está claro que la ecrecover sea la causa.
Otras funciones de contrato funcionan bien, en trufa, he probado los mismos contratos. Solo las funciones que involucran ecrecover no funcionan usando metamask.
@AK, incluya su código de contrato o verifíquelo en Etherscan.
Incluya su código, de lo contrario es prácticamente imposible de depurar.

Respuestas (1)

Lo hice funcionar. El problema fue con el prefijo en la firma, es decir \x19Ethereum Signed Message:\n32. Se pueden encontrar más detalles del problema aquí: https://github.com/OpenZeppelin/zeppelin-solidity/issues/644