Ist der Transaktions-Hash innerhalb einer Solidity-Funktion als globale Variable innerhalb des Vertrags verfügbar? Ich hätte gedacht, es wäre so etwas wie tx.hash
Sie es tun können tx.origin
usw.
Ich denke, dass der Transaktionshash erst verfügbar sein wird, wenn der Vertrag abgebaut wurde. Ist das richtig?
Hier haben Sie alle globalen Variablen in Solidity:
Globale Variablen
- block.coinbase (Adresse): aktuelle Adresse des Blockminers
- block.difficulty (uint): aktuelle Blockschwierigkeit
- block.gaslimit (uint): aktuelle Blockgasgrenze
- block.number (uint): aktuelle Blocknummer
- block.blockhash (Funktion (uint) gibt (Bytes32) zurück): Hash des angegebenen Blocks - funktioniert nur für die 256 neuesten Blöcke
- block.timestamp (uint): Zeitstempel des aktuellen Blocks
- msg.data (Bytes): vollständige Anrufdaten
- msg.gas (uint): verbleibendes Gas
- msg.sender (Adresse): Absender der Nachricht (aktueller Anruf)
- msg.value (uint): Anzahl der mit der Nachricht gesendeten Wei
- now (uint): Zeitstempel des aktuellen Blocks (Alias für block.timestamp)
- tx.gasprice (uint): Gaspreis der Transaktion
- tx.origin (Adresse): Absender der Transaktion (vollständige Aufrufkette)
- keccak256(...) gibt (bytes32) zurück: Berechnen Sie den KECCAK256-Hash der (dicht gepackten) Argumente
- sha256(...) gibt (bytes32) zurück: berechnet den SHA256-Hash der (dicht gepackten) Argumente
- reifemd160(...) liefert (bytes20): berechnet RIPEMD von 256 den (dicht gepackten) Argumenten
- ecrecover(bytes32, uint8, bytes32, bytes32) gibt (Adresse) zurück: Stellt den öffentlichen Schlüssel aus der Signatur der elliptischen Kurve wieder her
- addmod(uint x, uint y, uint k) gibt (uint) zurück: compute (x + y) % k wobei die Addition mit beliebiger Genauigkeit durchgeführt wird und nicht bei 2**256 umbricht.
- mulmod(uint x, uint y, uint k) gibt (uint) zurück: compute (x * y) % k wobei die Multiplikation mit beliebiger Genauigkeit durchgeführt wird und nicht bei 2**256 umbricht.
- this (aktueller Vertragstyp): der aktuelle Vertrag, der explizit in eine Adresse umgewandelt werden kann
- super: der Vertrag eine Ebene höher in der Vererbungshierarchie
- Selbstzerstörung (Adresse): Zerstöre den aktuellen Vertrag und sende sein Geld an die angegebene Adresse
- <Adresse>.balance: Saldo der Adresse in Wei
- <address>.send(uint256) gibt zurück (bool): sendet die gegebene Menge an Wei an die Adresse, gibt bei einem Fehler false zurück.
Wie Sie sagen, da die Transaktion nicht abgebaut wird, können Sie hier die tx.hash
.
block.hash(block.number)
, da der Blockhash vom Ergebnis der Vertragsausführung abhängt, es sich also um einen Zirkelverweis handelt.
eth