Necesito obtener todas las transacciones internas del contrato . Para hacerlo, necesitaré instrumentar Ethereum EVM.
Mi pregunta es: ¿qué debo hacer para obtener los detalles de la transacción? En este momento, estoy buscando el código, pero si alguien puede indicarme la parte correcta del código, se lo agradeceré.
Para hacer esto, debe definir un recopilador de registros de VM, que implemente StructLogCollector . Esta función se llama en cada paso de la VM y se proporciona con copias de la memoria, la pila y las partes modificadas del almacenamiento, junto con el contador del programa, el código de operación actual, el combustible restante y otros datos. También se llama cuando se produce un error que hace que falle una transacción.
Para extraer los datos que desea, debe estar atento a varias cosas: los códigos de operación 'CREATE', 'CALL', 'CALLCODE' y 'DELEGATECALL', que invocan nuevos contratos o cuentas y potencialmente transfieren valor, y 'SUICIDIO' que devuelve valor a la persona que llama También debe estar atento a cualquier cosa que provoque que se devuelva una llamada y a los errores antes mencionados.
Durante el seguimiento, debe mantener una pila que represente la pila de llamadas realizadas por la transacción actual, con cada marco de pila que contiene una lista de transferencias de valor que se han realizado hasta el momento. Un retorno sin error abre un marco de pila, agregando todas sus transferencias de valor al marco a continuación. Un retorno de error abre el marco, descartando todas las transferencias. Cuando abre el cuadro final, el conjunto de transferencias en él son las que se finalizaron como parte de la transacción.
Una implementación de todo esto se puede ver como parte de mi código Etherquery .
zanzú
pablo yabo
ética
pablo yabo