¿Cómo implementar el contrato Ethereum Alarm Clock en una red privada de Ethereum?

Despertador Etéreo :

Programar llamadas de función de contrato Un contrato de ethereum que facilita la programación de llamadas de función para un bloque específico en el futuro. Las llamadas de función se pueden programar para que se ejecuten contra cualquier contrato. La programación puede ser realizada por contratos o titulares de cuentas de ethereum. Completamente contenido dentro de la red ethereum.

[P] ¿Cómo podría usar Ethereum Alarm Clock(principalmente contrato Scheduler.sol) en una red privada de ethereum? Manualmente, he intentado compilar contratos/* bibliotecas/* archivos que se encuentran dentro del código fuente utilizando Solidity Browser, pero me enfrento a los siguientes errores que no pude corregir.

En el archivo CallLib.sol

Untitled:474:25: Error: Fallback function cannot return values.
    function () returns (bool) {
                        ^----^
Untitled:394:16: Error: Explicit type conversion not allowed.
        return State(CallLib.state(call));
               ^------------------------^

En SchedulerLib.Sol:

Untitled:191:20: Error: Member "value" not found or not visible after argument-dependent lookup in function (address,uint256,uint8,address,bytes4,bytes memory,uint256,uint256,uint16,uint256,uint256) returns (contract FutureBlockCall) - did you forget the "payable" modifier?
        var call = (new FutureBlockCall).value(callConfig.endowment)(
                   ^-------------------------^

Gracias por su valioso tiempo y ayuda.

¿Qué versión del compilador solc estás usando? Es probable que la rama maestra actual solo se compile en 0.3.6.
Ah, ese era el problema, estaba usando la versión del compilador predeterminada de Solidity Browser, que era 0.4.8. Cambié el compilador 0.3.5como me recomendaste y se compiló. Solidity Browser se congela o tarda alrededor de 10 minutos en completar la compilación debido al tamaño del código (pegué todos los contratos en el mismo archivo y compilé todos juntos), ¿puede ser más eficiente implementar el código del contrato usando geth? @PiperMerriam. ¿Hay alguna manera de que pueda responder a esta pregunta?
Solditiy Browser parece incapaz de implementar y minar el contrato de reloj despertador de Ethereum, debido a que se sobrecargó y congeló.
El sistema de alarma de los contratos no es sencillo así que esto no me sorprende. Si la memoria no me falla, usa alrededor de 10 bibliotecas y 4 contratos que tienen una jerarquía de enlace compleja. En algún momento en un futuro muy cercano (1-2 meses) volveré a actualizar la biblioteca y la implementaré nuevamente usando populus.
Escribí una forma muy sencilla de programar llamadas a contratos (Chronos). El código es público, así que podrías intentarlo. Todavía lo estoy probando, pero ya se está ejecutando en Rinkeby en caso de que quieras probarlo. Encontrarás la información aquí

Respuestas (2)

La versión que vinculó (0.7.0) se lanzó el 31 de enero de 2016. En ese momento, la última versión de Solidity era 0.2.1 (30 de enero de 2016).

Si cambia la versión de su compilador a esa versión de Solidity en el IDE de Remix, el contrato se compilará perfectamente. Puede encontrar un fragmento de ETHFiddle que funcione aquí .

Tenga en cuenta que el contrato Ethereum Alarm Clock es inútil en redes privadas, ya que depende de partes externas (humanos) para ser recompensados ​​en Ether para activar la alarma .

Se hizo más fácil implementar EAC en cualquier red, incluida la red local.

Solución

En ejecución de proyecto NPM nuevo o existente:

npm i --save @ethereum-alarm-clock/lib

Luego, cuando tenga una red en ejecución, ejecute:

npx eac-deploy-contracts

Esto está usando new @ethereum-alarm-clock/lib .

Recursos

Si desea ver el tutorial completo, consulte:

Tutorial de texto: https://github.com/ethereum-alarm-clock/ethereum-alarm-clock/wiki/Integration-using-EAC-JavaScript-library

Videotutorial: https://youtu.be/DY0QYDQG4lw

Gracias por compartir esto. Por cierto, sería genial si supiera cómo obtener las direcciones de los contratos a medida que se implementan usando el comando 'npx eac-deploy-contracts'. He creado un enlace si desea responder allí como un hilo separado. ethereum.stackexchange.com/questions/110235/…