Como posso entender por que uma transação falhou?
1 responda
- votos
-
- 2019-02-02
Astransações comfalha devem ser detectadase obter um código deerro retornadono Repregoply (RPC). Para queessatransação sejainjetada,indique umbug ou ummaumanuseio deerrosem uma carteira. Émuitofácil verpor queestatransaçãofalhou. Tentouenviar oequilíbriototale nãoterfundos suficientespara cobrir a queimadura.
Vocêpode usar o RPCpara obter osmetadados. Nesteexemplo,você verificaria os Ofashesnonível
296452
. O OPHASH Estamosinteressados em seu link original éONUEBJVRBAXTN4IK8KFZC4A8XTKFKYAFXINE698SLM3MTNIMDUS Todas asinformações sobre oblocopodem ser acessadasem
https://rpc.tezrpc.me/chains/main/blocks/296452
Parafacilitar,podemosfiltrar a operaçãoespecíficaem queestamosinteressados. As operações sãoindexadaspor 2 valores. Oprimeiro índice será sempre 3para as operaçõesfeitas apartir de uma carteira.
https://rpc.tezrpc.me-chains/main/blocos/296452 /Operation_hashes/3
["ooujv9f66p54xzkl3d8ugsdriapwqtoiplzrdvxvjkpd6oamja","onuebjvrbaxtn4ik8kfzc4a8xtkfkyafxine698slm3mtnimdus"]
O segundo hash de operação (índice 1) Aqui é o queestamosinteressados,então vamosencontrar o seu Ofashna localização 3/1.
https://rpc.tezrpc.me/Main/blocos/296452 /Operação_Hashes/3/1
"onuebjvrbaxtn4ik8kfzc4a8xtkfkyafxine698slm3mtnimdus"
Finalmente,pedimos ao RPCparabloco
296452
e a operaçãono local3/1
.https://rpc.tezrpc.me/Main/blocos/296452 /Operações/3/1
{ "Protocolo": "psddfki32cmj2qpjf43qv5gdwldpzb3t3bf6flkif5htvhnu7ap", "Chain_id": "netxdqprcvkpawu", "Hash": "onuebjvrbaxtn4ik8kfzc4a8xtkfkyafxine698slm3mtnimdus", "Branch": "bmvq2bdfvh4y3ndna9dr8smihhkfkfqid7qrkt9sh6th4zrr74m", "Conteúdo": [ { "tipo": "transação", "Fonte": "tz1eksvd2g7qxsjvim5zbyhxnun7sjle2phy", "Taxa": "1420", "Contador": "302028", "Gas_limit": "10300", "Storage_limit": "300", "Quantidade": "1681485669", "Destino": "tz1mneqxdtu8yt4pf5trj7pls8vrzj19frq", "Metadados": { "BalanQUEND_UPDATES": [ { "tipo": "contrato", "Contrato": "tz1eksvd2g7qxsjvim5zbyhxnun7sjle2phy", "Mudança": "-1420" }, { "Kind": "freezer", "Categoria": "Taxas", "Delegado": "tz1yju7jmmsuig9qqloyv35v5fgnwolwbt", "Nível": 72, "Mudança": "1420" } ], "Operação_Result": { "Status": "Backtracked", "Erros": [ { "tipo": "temporário", "ID": "proto.003-psddfki3.contract.cannot_pay_storage_fee" }, { "gentil": "permanente", "ID": "proto.003-psddfki3.context.storage_error", "Missing_key": [ "Contratos", "índice", "ED25519", "CC", "fb", "95", "87", "2a", "59f77f57299376bcb315E917E322E", "Saldo" ], "Função": "Get" } ], "BalanQUEND_UPDATES": [ { "tipo": "contrato", "Contrato": "tz1eksvd2g7qxsjvim5zbyhxnun7sjle2phy", "Mudança": "-1681485669" }, { "tipo": "contrato", "Contrato": "tz1mneqxdtu8yt4pf5trj7pls8vrzj19frq", "Mudança": "1681485669" }, { "tipo": "contrato", "Contrato": "tz1eksvd2g7qxsjvim5zbyhxnun7sjle2phy", "Mudança": "-257000" } ], "Consumed_gas": "10260", "Allocated_Destination_Contract": verdadeiro } } } ], "Assinatura": "sigs5lzsjh9wuk4vnigtb2xn8jifgbjvujd3nrwxvszhigqhkwm7scvoevgwmgsrqpq5um3frp6b1dbzyzfnhaytisv1yew5" }
Você verá que oprimeiro código deerro é
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
códigos deerro detransação?
Um aleatóriofalhou transação deexemplonotzscan.io nãofornece um código deerro .Elefoiinjetadopor umnó desconhecido sem acesso à sua saída determinal.
Existe umamaneira de refazer como surgiu oerroe isso simplesmentenão émostradoem tzscan?