Wie kann man auf eine Transaktion achten, die von Node A von einem anderen Node B gesendet wird?

Was ich zu erreichen kämpfe, ist Folgendes:

  • Knoten A sendet eine Transaktion.
  • Node B beginnt mit der Überwachung dieser Transaktion.
  • Wenn Node B die Transaktion im letzten Block sieht (dh nicht als anstehende Transaktion), aktualisiert er einige Daten im lokalen Server und hört dann auf zu beobachten.
  • Wenn die Transaktion fehlschlägt (dh es wird Gas gegeben oder es geht ihm das Gas aus), sendet Node B eine Fehlermeldung und stoppt die Überwachung.
  • PS: Node B hat Zugriff auf den Transaktions-Hash und alle verfügbaren Informationen aus dem sendTransaction( ... )Callback von Node A.

Hat bitte jemand eine Idee, wie man das erreichen kann? Danke!

Kontext:

Ich versuche, Benutzern (dem Knoten A oben) die Interaktion mit einem Vertrag über einen Webclient zu ermöglichen. Wenn sie eine Transaktion senden, möchte ich, dass mein Server (der Node B) beginnt, darauf zu achten, und sobald er sie im letzten Block sieht, einen Eintrag damit in meine Datenbank einfügt. Wenn die Transaktion fehlschlägt, sollte der Datenbank kein Eintrag hinzugefügt werden. Ich benutze Meteor als Stack.

Zusätzliche Gedanken

Ich habe darüber nachgedacht, Ereignisse für jede Transaktion in meinem Soliditätsvertrag zu haben. Wenn der Client dann eine Transaktion sendet, ruft er eine serverseitige Methode auf, die mit der Überwachung des Ereignisses beginnt. Beim Rückruf des Ereignisses überprüfe ich den transactionHash, um sicherzustellen, dass er übereinstimmt. Wenn dies der Fall ist, führe ich die oben beschriebenen Aktionen aus. Mein Problem hier ist, was passiert, wenn die Transaktion fehlschlägt (dh sie wirft oder kein Benzin mehr hat ...)? Das richtige Ereignis wird nie ausgelöst und mein Server hört nie auf zu beobachten ...

Antworten (1)

Sehen Sie sich diese verwandte Frage an. Sie können die Transaktion basierend auf allen Transaktionsfeldern abfragen . Wenn Sie planen, die Blockchain innerhalb eines Vertrags abzufragen, denken Sie daran, dass Sie nur auf bestimmte Felder des Blocks zugreifen können, in dem der Vertrag abgebaut wurde.