0

Has anyone else used the JavaScript-based tracer that Geth provides, as part of its debug_traceTransaction method?

I want to look at segments of memory during a transaction's execution (specifically, I want to retrieve "input" data made by internal CALLs).

Using the JS tracer, one can access memory using log.memory, which has a method called log.memory.slice. The documentation says it,

"returns the specified segment of memory as a byte slice".

But I can't figure out what format this byte slice is in.

For example, when I request a segment 4 bytes long, I get this back: "FscnIQ==". How do I interpret that?

When I run debug_traceTransaction without the JS tracer, and print out the memory, I see that those 4 bytes should be "0x16c72721".

Similarly, when I ask for the first byte in memory when memory is all 0s, the JS tracer's log.memory.slice returns the string "AA==". The encoding is clearly not hex, and it doesn't seem to be ASCII either.

What kind of encoding maps "0x00" to "AA=="?

1

Ah, okay I figured it out. The output of log.memory.sliceis base64 encoded.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.