La siguiente respuesta ( https://ethereum.stackexchange.com/a/9437/4575 ) [ 1 ] nos guía para llamar debug_trace
usando geth
:
Como se documenta en debug.traceTransaction(...) , solo puede acceder a esta llamada de API mediante la consola de JavaScript geth o la API de JSON-RPC. No hay API web3 que yo sepa. Hay algunas API web3 de extensión no oficiales, pero no sé si debug.traceTransaction es compatible con estas. Parece que tiene que usar JSON-RPC para acceder a estos datos.
pero me preguntaba si es posible llamar al debug_Transaction
interior nodejs
.
Probé los pasos en https://ethereum.stackexchange.com/a/9462/4575 [2] pero parece que no funciona para mí y esta respuesta parece contradecir la respuesta anterior que he alineado en [1].
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
web3.currentProvider.sendAsync({
method: "debug_traceTransaction",
params: ['<transaction_id>', {}],
jsonrpc: "2.0",
id: "2"
}, function (err, result) {
console.log( result );
});
Resultado de salida:
{ jsonrpc: '2.0',
id: '2',
error:
{ code: -32601,
message: 'The method debug_traceTransaction does not exist/is not available' } }
Gracias por su valioso tiempo y ayuda.
(Aquí está la misma respuesta que la que agregué a la pregunta mencionada anteriormente)
Si empiezo a geth
usar la siguiente línea de comando:
Iota:~ user$ geth --rpc console
Y trato de ejecutar el siguiente curl
comando:
Iota:~ user$ curl localhost:8545 -X POST --header 'Content-type: application/json' --data '{"jsonrpc":"2.0", "method":"debug_traceTransaction", "params":["0x3684f071b34da1116282ee88a106a8f2a266d273ef7d8964957f65128fb58d77", {}], "id":1}'
Obtengo el siguiente resultado:
{"jsonrpc":"2.0","id":1,"error":{"code":-32601,"message":"The method debug_traceTransaction does not exist/is not available"}}
Si en cambio empiezo geth
con el siguiente comando:
Iota:~ user$ geth --rpc --rpcapi "eth,net,web3,debug" console
Y ejecuto el mismo curl
comando, obtengo el seguimiento de la transacción como se muestra a continuación:
{"jsonrpc":"2.0","id":1,"result":{"gas":45480,"returnValue":"0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"PUSH1","gas":76741,"gasCost":3,"depth":1,"error":null,"stack":[],"memory":null,"storage":{}},{"pc":2,"op":"PUSH1","gas":76738,"gasCost":3,"depth":1,"error":null,"stack":["0000000000000000000000000000000000000000000000000000000000000060"],"memory":null,"storage":{}},{ ...
También tenga en cuenta que no puede obtener la debug_traceTransaction
información de la sección de la cadena de bloques que ha --fast
sincronizado.
Entonces, solo necesita agregar la --rpcapi "eth,net,web3,debug"
opción de línea de comando.
@Avatar, consulte https://github.com/tjade273/web3_ipc/blob/master/index.js#L328-L335 . Ver también ¿Por qué no puedo conectarme por IPC? y Conéctese al nodo a través de IPC , ya que utilizan la misma biblioteca.
alper
geth
, y aprecié su respuesta. Mi pregunta es sobre (solo quería verificar dos veces), ¿su respuesta significa que debo usargeth
ya que no es posible llamar adebug_traceTransaction
travésnodejs
de otras aplicaciones? La razón por la que necesito llamardebug_traceTransaction
está relacionada con su respuesta para verificar el estado de la transacción. [ etereum.stackexchange.com/a/6011/4575]privacidadisahumanright.eth
--rpcapi ...debug
opción, parece que su llamada de nodejsdebug_traceTransaction
está llegando ageth
través de JSON-RPC perogeth
devuelve el mensaje de que ladebug_traceTransaction
llamada no está disponible. Entonces, en teoría, debería poder acceder adebug_traceTransaction
través de nodejs. ¿Me estoy perdiendo algo más?alper
geth
funciona como me recomendaste y funciona quegeth
me devuelve ladebug_traceTransaction
información. Entonces, el problema podría estar relacionado con la forma en que estoy llamandodebug_traceTransaction
adentronodejs
, dondenodejs
no puedo encontrar/llamar adebug_traceTransaction
la función.privacidadisahumanright.eth
debug_traceTransaction
.alper
Error: The method admin_datadir does not exist/is not available.
privacidadisahumanright.eth
admin
a la--rpcapi
opción?