Verfolgung des Transaktionsstatus mit der privaten Kette von Ethereum

Ich implementiere ein Auftragsverwaltungssystem mit der privaten Blockchain von Ethereum. Jede Bestellung ist ein Smart Contract. Jede Bestellung wird von mehreren Akteuren ausgeführt. Der Status der Bestellung wird auch von diesen Akteuren aktualisiert. Wie erhalte ich den aktuellen Status der Bestellung? Benötigt Details, z. B. wann die Bestellung zuletzt bearbeitet wurde und von wem, und ihren Status. Ich brauche auch die Möglichkeit, Bestellungen nach Status zu finden (z. B.: Abgeschlossen, Fehlgeschlagen usw.). Finden Sie Bestellungen, die innerhalb eines Datumsbereichs usw. bearbeitet wurden. Ist es möglich, solche Daten aus der Blockchain selbst abzurufen?

Wenn nicht, wie sollte der Ansatz zur Implementierung eines solchen Systems aussehen?

Antworten (1)

Zum Speichern des Status können Sie Ereignisse in Ihren Smart-Contract-Funktionen verwenden und jeden gewünschten Status protokollieren. Außerdem können Sie auf Ereignisprotokolle im Transaktionsbeleg zugreifen oder alle in einem Vertrag protokollierten Ereignisse anzeigen, um auf die protokollierten Daten zuzugreifen. Abgesehen vom Speichern des Statuscodes in Ereignissen können Sie alles andere protokollieren, sowie nach Ihren Anforderungen.

Wir haben die Statuscode-Funktionalität in einem unserer Projekte implementiert, Sie können einen Blick darauf werfen und das kann Ihnen helfen, diese Lösung besser zu verstehen -

Smart Contract mit Statusereignissen – https://github.com/Imaginea/lms/blob/master/contracts/LMS.sol

Testfälle für den Zugriff auf diese Ereignisprotokolle – https://github.com/Imaginea/lms/blob/master/test/testLMS.js

Die Statusliste, die wir in unserem Code verwenden – https://github.com/Imaginea/lms/blob/master/app/components/notifications/status.js#L2

Hinweis: Beim Definieren von Ereignissen können Sie Ihr Argument als indizierten Wert übergeben, sodass Sie später Ereignisse auf der Grundlage dieses Attributs herausfiltern können.

Hoffe das hilft.

Danke für die Antwort. Das Erstellen von Events war das, woran ich dachte. Aber wenn ich Ereignisse erstelle und diese Daten dann protokolliere/speichere, wäre das nicht ähnlich wie beim Aufbau eines nicht verteilten Systems? Ist das der richtige Ansatz?
Ereignisse sind nichts anderes als Transaktionen, daher werden sie nach meinem Verständnis in der Blockchain gespeichert (die letztendlich verteilt wird). Das Abrufen des Status ist sehr praktisch und das Abrufen ist auch einfach.