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?
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.
Verwirrung herrscht
Sanchit