Wie kann ich verstehen, warum eine Transaktion fehlgeschlagen ist?
1 Antworten
- Stimmen
-
- 2019-02-02
Fehlgeschlagene Transaktionen solltenerkannt undeinen Fehlercodeermittelt werden,derin der Vorabnahme (RPC) zurückgegeben wird. Damit diese Transaktion sogarinjiziert wurde,zeigteinen Fehler odereine schlechte Fehlerbehandlungin einer Brieftasche an. Esist sehr leicht zu sehen,warum diese Transaktionfehlgeschlagenist. Es hat versucht,den vollen Gleichgewicht zu senden undnichtgenug Geld zu haben,um die Verbrennung abzudecken.
Sie können den RPC verwenden,um die Metadaten zuerhalten. In diesem Beispiel würden Sie die Ophashes auf Ebene
296452
überprüfen. Der Ophash,den wir an Ihrem ursprünglichen Linkinteressieren,istonuebjvrbaxtn4ik8kfzc4a8xtkkkyafxine698Slm3mtnimdus
Diegesamten Informationen zum Block können auf
zugegriffen werdenhttps://rpc.tezrpc.me/chains/main/blocks/296452
Umeseinfacher zuerleichtern,können wir den spezifischen Betrieb herausfiltern,an dem wirinteressiert sind. Die Operationen werden um 2 Werteindexiert. Dererste Indexistimmer 3für Operationen,die voneiner Brieftasche durchgeführt werden.
https://rpc.tezrpc.me/chains/main/Blöcke/296452 /operation_hashes/3
["ooeeujv9f66p54xzkl3d8ugsdriapwqroiplanrdvxvjkpd6oamja","onuebjvrbaxtn4ik8kfzc4a8xtkfkyafxine698slm3mtnimdus"]
Der zweite Operations-Hash (Index 1)ist hier derjenige,an dem wirinteressiert sind,alsofinden wir Ihren Ophash an Ort 3/1.
https://rpc.tezrpc.me/chains/Haupt-/Blöcke/296452 /Betrieb_Hashes/3/1
"onuebjvrbaxtn4ik8kfzc4a8xtkkkyafxine698slm3mtnimdus"
Schließlichfragen wir den RPCfür Block
296452
und den Betrieb am Ort3/1
.https://rpc.tezrpc.me/chains/Haupt-/Blöcke/296452 /Betrieb/3/1
{ "Protokoll": "psddfki32cmj2qpjf43qv5gdwldpzb3t3bf6flkif5Htvhnu7ap", "chain_id": "netxdqprcvkpawu", "Hash": "onuebjvrbaxtn4ik8kfzc4a8xtkfkyafxine698Slm3mtnimdus", "Zweig": "BMVQ2BDFVH4Y3NDNA9DR8SMIHHKFKFQUD7QRKT9SH6TH4ZRR74M", "Inhalt": [ { "Art": "Transaktion", "Quelle": "TZ1EKSVD2G7QXSJVIM5ZBYHXNUN7SJLE2PHY", "Gebühr": "1420", "Zähler": "302028", "gas_limit": "10300", "storage_limit": "300", "Menge": "1681485669", "Ziel": "TZ1MNEQXDTU8YT4PF5TRJ7PLS8VRZJ19FRQ", "Metadaten": { "BALANCE_UPDATES": [ { "Art": "Vertrag", "Vertrag": "TZ1EKSVD2G7QXSJVIM5ZBYHXNUN7SJLE2PHY", "Ändern": "-1420" }, { "Art": "Gefrierschrank", "Kategorie": "Gebühren", "Delegierter": "TZ1YJU7JMMSAUIG9QLOYV35V5PHGNWOLWBT", "Level": 72, "Ändern": "1420" } ], "operation_result": { "Status": "Backtracked", "Fehler": [ { "freundlich": "temporär", "ID": "proto.003-psdfki3.contract.cannot_pay_storage_fee" }, { "freundlich": "dauerhaft", "ID": "proto.003-psdfki3.ctext.storage_error", "missing_key": [ "Verträge", "Index", "ED25519", "cc", "fb", "95", "87", "2a", "59F77F5729E9376BCB315E917E322E", "Balance" ], "Funktion": "Holen" } ], "BALANCE_UPDATES": [ { "Art": "Vertrag", "Vertrag": "TZ1EKSVD2G7QXSJVIM5ZBYHXNUN7SJLE2PHY", "Ändern": "-1681485669" }, { "Art": "Vertrag", "Vertrag": "TZ1MNEQXDTU8YT4PF5TRJ7PLS8VRZJ19FRQ", "Ändern": "1681485669" }, { "Art": "Vertrag", "Vertrag": "TZ1EKSVD2G7QXSJVIM5ZBYHXNUN7SJLE2PHY", "Ändern": "-257000" } ], "consumed_gas": "10260", "ALOCATED_DESTINATION_CONTRACT": TRUE } } } ], "Signatur": "Sigs5lzsjh9wuk4vnigtb2xn8jifgbjvujd3nrwxvszhigqhkwm7scvoevgwmgsrq5um3Frp6b1dbzyzfnhaytisv1yw5" }
Sie sehen,dass dererste Fehlercode
proto.003-psddfki3.contract.cannot_pay_storage_fee
Failed transactions should be detected and get an error code returned in the preapply (RPC). So that this transaction even have been injected indicate a bug or bad error handling in a wallet. It is very easy to see why this transaction failed. It tried to send the full balance and wont have enough funds to cover the burn.
You can use the rpc to get the metadata. In this example you would check the ophashes on level
296452
. The ophash we are interested in from your original link isonuEbjVrbaXtn4iK8KFzc4a8xTkfkyAfxiNE698SLm3MtnimdUs
The entire information regarding the block can be accessed at
https://rpc.tezrpc.me/chains/main/blocks/296452
To make it easier we can filter out the specific operation we are interested in. Operations are indexed by 2 values. The first index will always be 3 for operations done from a wallet.
https://rpc.tezrpc.me/chains/main/blocks/296452/operation_hashes/3
["ooeujV9F66p54xzKL3d8UgsdriAPwqroipLZRdVXVJKpD6oAMJA","onuEbjVrbaXtn4iK8KFzc4a8xTkfkyAfxiNE698SLm3MtnimdUs"]
The second operation hash (index 1) here is the one we are interested in, so we'll find your ophash at location 3/1.
https://rpc.tezrpc.me/chains/main/blocks/296452/operation_hashes/3/1
"onuEbjVrbaXtn4iK8KFzc4a8xTkfkyAfxiNE698SLm3MtnimdUs"
Finally we ask the rpc for block
296452
and the operation at location3/1
.https://rpc.tezrpc.me/chains/main/blocks/296452/operations/3/1
{ "protocol": "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP", "chain_id": "NetXdQprcVkpaWU", "hash": "onuEbjVrbaXtn4iK8KFzc4a8xTkfkyAfxiNE698SLm3MtnimdUs", "branch": "BMVq2BDfVH4Y3NdNa9Dr8smiHHkFkFqiD7qRKT9SH6TH4zrr74M", "contents": [ { "kind": "transaction", "source": "tz1eKsvd2G7QXsJvim5ZBYhxnuN7SJLe2phy", "fee": "1420", "counter": "302028", "gas_limit": "10300", "storage_limit": "300", "amount": "1681485669", "destination": "tz1MNEqXdtu8YT4ppF5tRJ7PLS8vRZJ19FRQ", "metadata": { "balance_updates": [ { "kind": "contract", "contract": "tz1eKsvd2G7QXsJvim5ZBYhxnuN7SJLe2phy", "change": "-1420" }, { "kind": "freezer", "category": "fees", "delegate": "tz1Yju7jmmsaUiG9qQLoYv35v5pHgnWoLWbt", "level": 72, "change": "1420" } ], "operation_result": { "status": "backtracked", "errors": [ { "kind": "temporary", "id": "proto.003-PsddFKi3.contract.cannot_pay_storage_fee" }, { "kind": "permanent", "id": "proto.003-PsddFKi3.context.storage_error", "missing_key": [ "contracts", "index", "ed25519", "cc", "fb", "95", "87", "2a", "59f77f5729e9376bcb315e917e322e", "balance" ], "function": "get" } ], "balance_updates": [ { "kind": "contract", "contract": "tz1eKsvd2G7QXsJvim5ZBYhxnuN7SJLe2phy", "change": "-1681485669" }, { "kind": "contract", "contract": "tz1MNEqXdtu8YT4ppF5tRJ7PLS8vRZJ19FRQ", "change": "1681485669" }, { "kind": "contract", "contract": "tz1eKsvd2G7QXsJvim5ZBYhxnuN7SJLe2phy", "change": "-257000" } ], "consumed_gas": "10260", "allocated_destination_contract": true } } } ], "signature": "sigS5LzsJh9wuk4vniGtB2xn8jiFgBjVujd3nrWXVSZhigQhKwm7scVoEVgWmGSrqPq5uM3frp6b1dBZYzfnhAYTiSv1YEw5" }
You will see that the first error code is
proto.003-PsddFKi3.contract.cannot_pay_storage_fee
ein zufälligfehlgeschlagen Beispiel Transaktion auftzscan.io bietet keinenbestimmten -Fehlercode .Es wurde voneinem unbekannten Knoten ohne Zugriff auf den Terminalausganginjiziert.
Gibteseine Möglichkeit,zurückzukehren,wie der Fehler auftaucht,undist dieseinfachnichtin TZSCAN angezeigt?