Ich gebe derzeit alle Ereignisse ohne Filter zurück und alle indizierten Variablen werden zurückgegeben, aber sie sind codiert. Die anderen nicht indizierten Variablen sind sichtbar und werden problemlos abgerufen und sind nicht codiert.
fevent.GetAllChanges<TEvent>(filterAll).Result;
Wie decodiere ich diese Felder oder fordere sie so an, dass sie nicht codiert sind?
CampaignId oben sollte eine indexierte Ganzzahl sein.
Bearbeiten :
Das obige sollte funktionieren, da dies in den NEtherium-Beispielen gezeigt wird, die hier unter Aufrufen eines Ereignisses gezeigt werden
Das kannst du nicht.
Indizierte Themen enthalten keine ungehashten Werte. Es ist in Ordnung, wenn Sie die CampaignId kennen, an der Sie interessiert sind, und danach filtern. Es ist nicht so toll, wenn Sie versuchen, von einem Thema zurück in die ursprüngliche Eingabe zu konvertieren.
Ich hoffe es hilft.
Fügen Sie die Antwort von Rob Hitchens B9lab hinzu und gehen Sie vom Solidity-Dokument hier aus
Sie können das Attribut indexed zu bis zu drei Parametern hinzufügen, wodurch sie zu einer speziellen Datenstruktur namens „Topics“ anstelle des Datenteils des Protokolls hinzugefügt werden. Wenn Sie Arrays (einschließlich Zeichenfolgen und Bytes) als indizierte Argumente verwenden, wird der Keccak-256-Hash stattdessen als Thema gespeichert, da ein Thema nur ein einzelnes Wort (32 Bytes) enthalten kann.
Nicht alle Datentypen, die für Themen verwendet werden, werden gehasht, nur String- und Bytes-Datentypen werden gehasht. Als ich also in meinem Beispiel die Variable in ein int änderte, löste dies mein Problem und ich konnte das Ergebnis meiner Themen-/indizierten Variablen sehen.
Joshua Duxbury
Joshua Duxbury