Wie kann man mit web3js eingehende Smart-Contract-Transaktionen nachverfolgen?

Ich habe einen Ethereum Smart Contract, der Funktionen des anderen aufruft. Wie könnte ich diese Anrufe mit web3js oder einem anderen Tool verfolgen, wenn dies überhaupt möglich ist? Ich brauche es, weil ich nach Erhalt eines solchen Aufrufs einen JavaScript-Code (oder eine andere Nicht-Solidity-Sprache) ausführen und dann eine andere Funktion des ersten Smart Contract aufrufen möchte, sodass die Reihenfolge der Aufrufe wie folgt sein sollte:

  1. Smart Contract N1 ruft N2 Smart Contract-Funktion auf.
  2. JavaScript-Code (oder eine andere Nicht-Solidity-Sprache) fängt diesen Aufruf ab und führt einen Code aus.
  3. Smart Contract N2 ruft N1 unter Verwendung von Daten aus dem vorherigen Schritt zurück.

Könnte jemand dabei helfen?

Ich denke, Sie können Javascript als Brücke verwenden. Sie verwenden Javascript, um eine Funktion in Vertrag N1 aufzurufen, um N2 anzurufen, und hören dann auf den Anruf. Wenn es die Bestätigung erhält und den Code ausführt, ruft Javascript den Vertrag N2 auf, um N1 anzurufen. Beide Verträge müssen eine Funktion haben, um den anderen Vertrag aufzurufen, sonst ist es meiner Meinung nach nicht möglich.

Antworten (1)

Was Sie zu archivieren versuchen, widerspricht den Designprinzipien von Solidity und der Blockchain. Die Antwort auf die Frage Warum können Verträge keine API-Aufrufe tätigen? wird ziemlich genau erklären, warum.

Kurz gesagt: Wenn Sie Solidity öffnen würden, um willkürlichen Nicht-Solidity-Code aufzurufen, würde dies nicht deterministisch, da dieser Nicht-Solidity-Code außerhalb der Blockchain nicht existieren würde und unabhängig modifiziert werden könnte.

Ich verstehe es, aber eine Lösung wie oraclize.it existiert und ist erfolgreich. Ich brauche so etwas.
Ein Orakel und das, wonach Sie fragen, ist nicht genau dasselbe. Was ein Oracle im Grunde tut, um bestimmte Daten von der Außenwelt an die Blockchain zu senden, während ein API-Aufruf genau umgekehrt wäre. Merken Sie den Unterschied? Vielleicht müssen Sie überdenken, was Sie erreichen wollen, oder zumindest ein bisschen mehr Details erklären.
Überprüfen Sie möglicherweise auch die Codebeispiele unter docs.oraclize.it/#ethereum-quick-start . Oder Sie sollten wahrscheinlich eine andere Frage stellen, die lauten würde: Wie schreibe ich mein eigenes Orakel auf der Blockchain?