Wir verwenden die Standard-Truffle-Box ( https://github.com/smartcontractkit/box ), um den Chainlink-Vertrag ($LINK-Definition, Oracle, Muster-Endbenutzervertrag usw.) in einem privaten Ethereum-Testnetz bereitzustellen.
Alles funktioniert, da ich Jobs von Smart-Contract-Anrufen in der Kette auslösen kann, es sei denn, meine Job-Spezifikation endet mit dem „EthTx“-Adapter. Wenn ich meinen Job mit einem "EthTx"-Adapter beende, schlägt die Aufgabe fehl, und der einzige Fehler lautet "transaction reverted on-chain".
Meine Oracle-ETH-Konten sind gut finanziert, daher ist der Mangel an Benzin für die Ausführung der Transaktionen kein Problem. Außerdem funktionieren alle anderen Adapter ohne Fehler ... es ist also kein Problem, wenn der HTTP-Endpunkt ausgefallen ist, der Pfad falsch ist oder die falschen Typen gecastet werden. Was ist los?
Es gibt ein paar Dinge, die passieren können, aber höchstwahrscheinlich liegt es daran, dass die Fulfillment-Berechtigungen Ihres Oracle-Vertrags nicht richtig eingestellt sind.
Wenn Sie den Orakelvertrag bereitstellen, müssen Sie auch den setfulfillmentpermission
to true
für Ihren Knoten aufrufen. Sie können dies in remix/etherscan oder über ein Skript tun . In diesem Skript benötigen Sie Folgendes:
PRIVATE_KEY
Umgebungsvariable, die mit derselben Brieftasche verbunden ist, die den Oracle-Vertrag bereitstelltKOVAN_RPC_URL
Umgebungsvariable verbunden die Blockchain der Wahl.oracleAddress
die Oracle-Vertragsadresse festlegen.address
die Adresse Ihres Chainlink-Knotens festlegen.Ich hoffe es hilft.