I'm connected to an Ethereum node (running Geth) I manage and I'm able to connect to it using RPC. I can access web3 in the terminal after issuing `geth console`. I can access and run the RPC function calls as listed in the documentation [here](https://github.com/ethereum/wiki/wiki/JSON-RPC). I have to switch between different libraries like webpy and web3.js so an implementation in either should be fine.

Given a transaction hash, I can fetch the transaction details, say using `web3.eth.getTransaction(transaction_hash)`. But all the details I get only includes: `hash`, `input`, `nonce`, `from`, `to`, `transaction_index`, `value`, `v`, `r`, `s`. 

What I'm curious about is how does [this website](https://etherscan.io/tx/0x92d8ac6da5eac42a2e7fb701fe16ffe46658bafdb47b100963d5d97ce5a09dbe) access rest of the rich details as to how many tokens were transferred. More specifically, **how can we read (given the sender and contract address involved in a transactions) the value of tokens transferred i.e. *the value parameter of the function call*?**

A snapshot of such details from the above website. (**How does one figure out the Token Transfer**, shown in the picture below)

[![enter image description here](https://i.stack.imgur.com/shCFD.png)](https://i.stack.imgur.com/shCFD.png)

Is it from the input field? If so, how does one interpret the hex to actuall values and the function called?