Warum hat das Ethereum-Protokoll keinen klaren Indikator für eine rückgängig gemachte Transaktion?
Hier gibt es eine Heuristik sowie eine Problemumgehung mit Geth . Aber es gibt wahrscheinlich Möglichkeiten, wie das Protokoll einen klaren Indikator liefern könnte. Könnte beispielsweise ein Transaktionsbeleg eine boolesche Eigenschaft für kein Gas haben?
Was könnte das Protokoll tun, um einen „Out of Gas“-Indikator bereitzustellen, und warum wurde keiner implementiert?
Der größte Teil des Protokolls (und insbesondere der Transaktionsbeleg) ist konsenskritisch. Die Menge der verarbeiteten Informationen muss so weit wie möglich begrenzt und stabil sein. Eine Fehlermeldung entspricht nicht wirklich diesen Anforderungen.
Andererseits können Implementierungen diese Art von Informationen leicht hervorbringen. Zumindest tun dies sowohl Ethereumj als auch Geth. Ein Beispiel finden Sie hier in der Eigenschaft "execution_error":
debug.traceTransaction
oder etwas anderes, wo eine neue Antwort auf ethereum.stackexchange.com/questions/6007/… helfen würde?Das Protokoll wurde in Block 4370000 (Byzanz) dahingehend aktualisiert, dass status
den Quittungen ein Indikator hinzugefügt wurde.
eth.getTransactionReceipt(transactionHash)
gibt ein status
Feld zurück, das einen Wert hat, 0
wann eine Transaktion fehlgeschlagen ist und 1
wann die Transaktion erfolgreich war.
Hier ist ein Beispiel, das das status
Feld zeigt:
{ blockHash: '0xb1fcff633029ee18ab6482b58ff8b6e95dd7c82a954c852157152a7a6d32785e',
blockNumber: 4370000,
contractAddress: null,
cumulativeGasUsed: 21000,
gasUsed: 21000,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
root: null,
status: 1, // **** HERE IS THE STATUS FIELD *****
transactionHash: '0x1421a887a02301ae127bf2cd4c006116053c9dc4a255e69ea403a2d77c346cf5',
transactionIndex: 0 }
(Blöcke vor 4370000 haben einen status
Nullwert.)
Näheres hier .
Benutzer3407
Roland Köfler
Giuseppe Bertone