Wie setze ich den Ethereum-Weckervertrag in einem privaten Ethereum-Netzwerk ein?

Ethereum-Wecker :

Schedule Contract Function Calls Ein Ethereum-Vertrag, der die Planung von Funktionsaufrufen für einen bestimmten Block in der Zukunft erleichtert. Funktionsaufrufe können so geplant werden, dass sie gegen jeden Vertrag ausgeführt werden. Die Planung kann von Verträgen oder Ethereum-Kontoinhabern durchgeführt werden. Vollständig im Ethereum-Netzwerk enthalten.

[F] Wie kann ich Ethereum Alarm Clock(hauptsächlich Scheduler.sol-Vertrag) in einem privaten Ethereum-Netzwerk verwenden? Manuell habe ich versucht, Verträge/* Bibliotheken/* Dateien, die sich im Quellcode befanden, mit Solidity Browser zu kompilieren, aber ich bin mit folgenden Fehlern konfrontiert, die ich nicht beheben konnte.

Auf CallLib.sol-Datei

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));
               ^------------------------^

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

Vielen Dank für Ihre wertvolle Zeit und Hilfe.

Welche Version des Solc-Compilers verwenden Sie? Der aktuelle Master-Zweig wird wahrscheinlich nur unter 0.3.6.
Ah, das war das Problem, ich habe die Standard-Compiler-Version von Solidity Browser verwendet, die 0.4.8. Ich habe den Compiler 0.3.5wie von Ihnen empfohlen geändert und kompiliert. Solidity Browser friert ein oder es dauert etwa 10 Minuten, bis das Kompilieren aufgrund der Größe des Codes abgeschlossen ist (ich habe alle Verträge in dieselbe Datei eingefügt und alle zusammen kompiliert). Kann es effizienter sein, den Vertragscode mit bereitzustellen geth? @PiperMerriam. Kann ich diese Frage irgendwie beantworten?
Solditiy Browser scheint nicht in der Lage zu sein, den Ethereum-Weckervertrag bereitzustellen und abzubauen, da er überlastet und eingefroren ist.
Das Alarmsystem von Verträgen ist nicht einfach, also überrascht mich das nicht. Wenn der Speicher dient, verwendet er etwa 10 Bibliotheken und 4 Verträge, die eine komplexe Verknüpfungshierarchie haben. Irgendwann in sehr naher Zukunft (1-2 Monate) werde ich die Bibliothek wieder auf den neuesten Stand bringen und mithilfe von populus.
Ich habe eine sehr einfache Möglichkeit geschrieben, Anrufe zu Verträgen (Chronos) zu planen. Der Code ist öffentlich, Sie können es also versuchen. Ich teste es noch, aber es läuft bereits auf Rinkeby, falls Sie es ausprobieren möchten. Sie finden die Informationen hier

Antworten (2)

Die von Ihnen verlinkte Version (0.7.0) wurde am 31. Januar 2016 veröffentlicht. Zu diesem Zeitpunkt war die neueste Solidity-Version 0.2.1 (30. Januar 2016).

Wenn Sie Ihre Compiler-Version auf diese Solidity-Version in der Remix-IDE umstellen, wird der Vertrag problemlos kompiliert. Ein funktionierendes ETHFiddle-Snippet finden Sie hier .

Denken Sie daran, dass der Ethereum-Wecker-Vertrag in privaten Netzwerken nutzlos ist, da er darauf angewiesen ist, dass externe Parteien (Menschen) in Ether belohnt werden, um den Alarm tatsächlich auszulösen .

Es wurde einfacher, EAC in jedem Netzwerk bereitzustellen, einschließlich lokaler Netzwerke.

Lösung

Im bestehenden oder neuen NPM-Projektlauf:

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

Wenn Sie dann ein laufendes Netzwerk haben, führen Sie Folgendes aus:

npx eac-deploy-contracts

Dies verwendet das neue @ethereum-alarm-clock/lib .

Ressourcen

Wenn Sie das vollständige Tutorial sehen möchten, lesen Sie bitte:

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

Video-Tutorial: https://youtu.be/DY0QYDQG4lw

Danke, dass du das geteilt hast. Übrigens wäre es großartig, wenn Sie wüssten, wie Sie die Vertragsadressen erhalten, wenn Sie mit dem Befehl „npx eac-deploy-contracts“ bereitgestellt werden. Ich habe einen Link erstellt, wenn Sie dort als separaten Thread antworten möchten. ethereum.stackexchange.com/questions/110235/…