Kann ich mithilfe der RPC-API von einer Transaktion zum Vertragsstatus wechseln?

Wenn ich über die JSON-RPC-API mit Geth spreche, habe ich eine Transaktion gefunden, an der ich interessiert bin, und ich kann sehen, dass sie einen Vertrag aufruft (Daten im „Eingabe“-Teil des Transaktionsobjekts).

Kann ich dann herausfinden, welche Änderungen an Guthaben sich als Ergebnis dieses Aufrufs ergeben? Ich sehe nichts auf dem TransactionReceipt-Objekt.

Antworten (1)

Da Sie nach Salden fragen und die Transaktion mit JSON-RPC durchführen, können Sie die from, to, und valueder Transaktion sehen. Sie können einfach erraten , dass sich fromdas Guthaben um verringert valueund todas Guthaben um erhöht hat value.

Es ist eine einfache Vermutung, weil Sie nicht wissen können, ob der toVertrag die valuean andere Konten (einschließlich einiger zurück an from) gesendet hat, es sei denn, Sie sehen sich mehr an -- einige Beispiele: Sehen Sie sich den Code des Vertrags an, um zu sehen, was er tut, führen Sie den Code durch die Ethereum Virtual Machine oder einen Simulator, oder vergleichen Sie die Unterschiede zwischen dem aktuellen und dem vorherigen Block.

Das zeigt Ihnen nicht die Benzinkosten, wenn eine der Parteien die Transaktion eingereicht hat. Außerdem ist das Raten von Delta-Zahlen in verteilten Systemen im Allgemeinen voller Gefahren. Verwenden Sie nach Möglichkeit immer absolute Zähler. Um die ursprüngliche Frage noch einmal zu wiederholen: Können wir den Saldo einer Adresse bei einer bestimmten Transaktion sehen?
@PaulS. Stimmen Sie Ihren Punkten zu; Ihre Frage ist sicherlich klarer und ich bin mir nicht sicher, ob die Frage das beabsichtigt hat. Vielleicht ist es das und ich denke, es ist in Ordnung, Ihre Antwort so zu schreiben, wie Sie die Frage wahrnehmen.
Sie können auch einfach ein Ereignis in Ihrer Transaktion protokollieren und den Kontostand einer beliebigen Adresse abrufen (address.balance in solidity). Diese Protokolle sind in der Quittung, glaube ich.
Danke für die Antworten, aber was genau ist an meiner Frage nicht klar? Ich weiß, wie ich Saldoänderungen basierend auf den Feldern „value“ / „gasUse“ / „gasPrice“ aus den Objekten „Transaction“ und „TransactionReceipt“ ableiten kann. Aber es kann andere Nebenwirkungen geben; nicht nur zu den Von- oder Zu-Konten aus dem Code im Vertrag selbst - ich frage mich, ob diese über JSON RPC verfügbar gemacht werden. Ich möchte nicht wirklich anfangen zu versuchen, mein eigenes EVM zu starten, um dies zu tun. Aber vielleicht ist das ja der einzige Weg?
Wenn Sie mehr als eine Adresse haben, die die API Ihres Vertrags pro Block aufruft, kann es schwierig sein, zu entschlüsseln, welche Transaktion welchen Saldo belastet hat ...
Es ist nicht mein Vertrag - es könnte jeder Vertrag sein, von dem ich nichts weiß. Ich versuche nur herauszufinden, welche Saldenänderungen infolge des Anrufs aufgetreten sein könnten. Klingt für mich so, als wäre das im Moment nicht möglich.