Comprobando si la transacción falló en RPC

Llamo a un contrato sobre geth RPC usando sendTransaction y obtengo un hash de transacción. ¿Hay alguna manera de verificar a través de la interfaz geth RPC si esta transacción falló debido a un aborto de VM (declaración de lanzamiento de Solidity, similar)?

El recibo de la transacción no parece ofrecer ninguna variable que indique esto.

Respuestas (2)

La respuesta de @eth no es precisa.

use eth_getTransactionReceipt para obtener el estado: CANTIDAD 1 (éxito) o 0 (falla) será más preciso

referencia:
https://eth.wiki/json-rpc/API

             // Request
            curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'

            // Result
            {
            "id":1,
            "jsonrpc":"2.0",
            "result": {
                transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',
                transactionIndex:  '0x1', // 1
                blockNumber: '0xb', // 11
                blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
                cumulativeGasUsed: '0x33bc', // 13244
                gasUsed: '0x4dc', // 1244
                contractAddress: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', // or null, if none was created
                logs: [{
                    // logs as returned by getFilterLogs, etc.
                }, ...],
                logsBloom: "0x00...0", // 256 byte bloom filter
                status: '0x1'
            }
            }
Moví el marcador de respuesta correcta. Tenga en cuenta que la respuesta original se escribió en 2016 y el statuscampo no existía en ninguna API en ese momento.

Verificar el recibo de la transacción gas == gasUsedes una heurística práctica , porque la única forma en que la VM aborta es consumir todo el gas.

Actualmente no hay ningún indicador para una transacción que se quedó sin gas, por lo que nada más preciso que la heurística está disponible a través de RPC.

¿Qué hay de tirar declaración? ¿Se comporta igual?
Sí, el enlace "consumir todo el gas" apunta a la pregunta: ¿Por qué un lanzamiento de Solidity consume todo el gas?