Hi Developer advocate from Chainstack here
I can't tell if the full trace is working but
is perfectly correct.
This is a transaction swapping 0.07 WETH for ApeIn, during the tx, the sender
0xd44fbeb26c88f0f18f72664e3c446e0c2836908d doesn't really lose any Eth except for his gas fee, which won't reflect in a trace_call.
A trace_call basically "simulates" a call against a specific "state", the gas fee is undetermined until the tx is finalized in a block. Hence it is not part of this "simulation". If you trace it using
trace_transaction, you will probably see the balance reduce due to gas.
Your confusion comes from Etherscan incorrectly using the word "state" here. Maybe it has a different understanding from Geth, but here it certainly mixes Eth(the native currency) and WETH(wrapped Eth, a token) together.
stateDiff doesn't trace smart contract data changes, as Nulik pointed out, that should be a storage change. You can use
disableStorage:false to trace this changes.
I had two blog posts: this is about eth_call, this is about debug_trace API.
There are some examples that may help you.
Hope you find it useful, Happy coding!