Wie kann ich angesichts eines Blockhashs nachweisen, dass eine Transaktion mit einem bestimmten Hash abgebaut wurde?

Ich arbeite an einem Proof-of-Relay-Vertrag, der nur dann auszahlt, wenn ein bestimmter Transaktionshash abgebaut wurde. Ich stelle mir vor, es gibt eine Art Merkle-Beweis, der dies möglich machen würde?

Antworten (1)

Innerhalb des Vertrags sind Sie auf eine Reihe vordefinierter Strukturen beschränkt , die dem Block zur Verfügung stehen, der den Vertrag enthält (siehe diese Frage).

Sie können keine detaillierten Abfragen zu Transaktionen und ihren Feldern durchführen. Es gibt hier eine schöne Code-Zusammenfassung von pyethapp , die zeigt, was passiert, wenn eine Transaktion bestätigt wird.

Bearbeiten:

Hier finden Sie alle Variablen, auf die Sie in solidity Zugriff haben . Der Sichtbarkeitsbereich ist nur der letzte Block (der den geschürften Vertrag enthält), was bedeutet, dass Sie keine Daten zu früheren und zukünftigen Blöcken erhalten können. Trotzdem können Sie sich immer noch den Transaktionsursprung ansehen; Wenn es sich um ein Konto handelt, von dem Sie erwarten, dass es eine Transaktion durchführt, und in der Blockchain in einem nicht lokalen Knoten erscheint (relativ zum Initiator der Transaktion), besteht die Möglichkeit, dass die Transaktion von mehreren Minern bestätigt wird (es ist eine gültige Transaktion).

Der Blockhash enthält einen Hash des Transaktionsstamms. Das heißt, Sie sollten in der Lage sein, eine Kombination aus Header-Feldern und Transaktions-Hashes zu übergeben, um die Existenz eines bestimmten Transaktions-Hashes zu beweisen
Sie haben innerhalb des Vertrags keinen Zugriff auf diese Kopfzeilenfelder. Sie können höchstens einen Vertrag definieren, der eine Reihe von Feldern akzeptiert, die von der Blockchain selbst erhalten wurden, und einige Operationen an ihnen durchführen.
Yup, das ist genau das, was ich erstellen möchte. Der Vertrag würde Eingaben entgegennehmen und überprüfen, ob eine Transaktion abgebaut wurde
Ich habe die Antwort bearbeitet.