Как развернуть контракт Ethereum Alarm Clock в частной сети Ethereum?

Будильник Эфириума :

Schedule Contract Function Calls Контракт Эфириума, который облегчает планирование вызовов функций для указанного блока в будущем. Вызовы функций могут быть запланированы для выполнения по любому контракту. Планирование может выполняться контрактами или владельцами учетных записей ethereum. Полностью содержится в сети ethereum.

[В] Как я могу использовать Ethereum Alarm Clock(в основном контракт Scheduler.sol) в частной сети Эфириума? Вручную я пытался скомпилировать контракты/* библиотеки/* файлы, расположенные внутри исходного кода , с помощью Solidity Browser, но столкнулся со следующими ошибками, которые мне не удалось исправить.

В файле 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));
               ^------------------------^

В 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)(
                   ^-------------------------^

Спасибо за ваше драгоценное время и помощь.

Какую версию компилятора solc вы используете? Текущая основная ветка, скорее всего, будет компилироваться только под 0.3.6.
Ах, вот в чем проблема, я использовал версию компилятора Solidity Browser по умолчанию, которая была 0.4.8. Я изменил компилятор на 0.3.5то, что вы рекомендовали, и он скомпилировался. Браузер Solidity зависает или компиляция занимает около 10 минут из-за размера кода (я вставил все контракты в один файл и скомпилировал все вместе), может быть более эффективно развернуть код контракта с помощью geth? @PiperMerriam. Можно ли как-то ответить на этот вопрос?
Браузер Solditiy, похоже, не может развернуть и добыть контракт будильника Ethereum из-за перегрузки и зависания.
Сигнализация контрактов не простая, так что меня это не удивляет. Если память не изменяет, он использует около 10 библиотек и 4 контракта, которые имеют сложную иерархию ссылок. Когда-нибудь в самом ближайшем будущем (1-2 месяца) я верну библиотеку в актуальное состояние и снова смогу ее развернуть с помощью populus.
Я написал очень простой способ планирования звонков по контрактам (Chronos). Код общедоступен, так что вы можете попробовать. Я все еще тестирую его, но уже работаю на Rinkeby, если вы захотите попробовать. Вы найдете информацию здесь

Ответы (2)

Версия, на которую вы ссылаетесь (0.7.0), была выпущена 31 января 2016 года. В то время последней версией Solidity была 0.2.1 (30 января 2016 года).

Если вы переключите свою версию компилятора на этот выпуск Solidity в Remix IDE, контракт будет скомпилирован очень хорошо. Вы можете найти рабочий фрагмент ETHFiddle здесь .

Имейте в виду, что контракт будильника Ethereum бесполезен в частных сетях, поскольку он зависит от внешних сторон (людей), которые будут вознаграждены в эфире за фактическое срабатывание будильника .

Стало проще развертывать EAC в любой сети, включая локальную.

Решение

В существующем или новом проекте NPM запустите:

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

Затем, когда у вас есть работающая сеть, запустите:

npx eac-deploy-contracts

Это использует новый @ethereum-alarm-clock/lib .

Ресурсы

Если вы хотите увидеть полное руководство, см.:

Текстовое руководство: https://github.com/ethereum-alarm-clock/ethereum-alarm-clock/wiki/Integration-using-EAC-JavaScript-library

Видеоурок: https://youtu.be/DY0QYDQG4lw

Спасибо, что поделились этим. Кстати, было бы здорово, если бы вы знали, как получить адреса контрактов при развертывании с помощью команды «npx eac-deploy-contracts». У меня есть ссылка, если вы хотите ответить там в виде отдельной темы. эфириум.stackexchange.com/questions/110235/…