Ausführen eines externen Befehls nach Transaktionsbestätigung

Ich habe mich gefragt, ob es möglich wäre, einen externen Befehl (Systemaufruf) zu starten, wenn eine von einem Knoten gesendete Transaktion bestätigt wird.

Wenn zum Beispiel Knoten A pyethapp (im Kontext einer privaten Blockchain) wie folgt ausführt :

$ pyethapp -c eth.network_id=1337 -c node.privkey_hex=091bd6067cb4612df85d9c1ff85cc47f259ced4d4cd99816b14f35650f59c322 -b 'enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@0.0.0.0:30303' -c eth.genesis_hash=283bd9430c5f3114872f93beefe99d6626980b3a4a18a44ddd27749cd89688f2 -m 50 run

und dann stellt Knoten B über pyethapp eine Verbindung her :

$ pyethapp -c eth.network_id=1337 -b 'enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@192.168.2.12:30303' -c eth.genesis_hash=283bd9430c5f3114872f93beefe99d6626980b3a4a18a44ddd27749cd89688f2 run

und eine Transaktion von einem Konto auf seiner Seite zu einem auf der Seite von A sendet , kann es Maßnahmen ergreifen (einen Systemaufruf einleiten), sobald die Transaktion bestätigt ist?

Antworten (1)

Ich denke, das ist eine gute Frage, aber sie wurde nie beantwortet, also beantworte ich sie.

Es gibt zwei Möglichkeiten, dies zu tun, denke ich.

Das erste wäre, den Quellcode des Knotens so zu modifizieren, dass sich nichts ändert, außer unmittelbar nach dem Abschluss einer Transaktion würde er einen Systemaufruf auslösen. Dazu müssten Sie jedoch den Knotencode herunterladen, ändern und erstellen. Das mag Sie ansprechen oder auch nicht. Ich würde es nicht so machen.

Eine andere Möglichkeit wäre, ein web3-Skript zu schreiben, um auf Ereignisse zu lauschen (hier beschrieben: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter ) und auf Änderungen zu reagieren, an denen Sie interessiert sind. Das web3 Das Skript würde außerhalb der Kette ausgeführt, sodass Sie alles tun können, einschließlich Systemaufrufe.

Es gibt keine Möglichkeit, einen Systemaufruf aus einem Solidity-Programm heraus durchzuführen, wenn Sie danach fragen.

Die zweite Option finde ich interessant und ich werde hinzufügen, dass er die Python-Implementierung von web3 verwenden könnte