Compilation back to the original source code from just the bytecode is impossible because all variable names, type names and even function names are removed. (source)
It's possible to call functions on a contract by using a bytes4 hash of that functions name, so that means that the contract stores that hash of the name.
If a de-compiler had access to the ABI, could it reverse a contract, or parts of a contract, to Solidity?
And http://ilspy.net seems to do decompile from assembly to human-level language, http://community.sharpdevelop.net/blogs/danielgrunwald/archive/2011/04/26/ilspy-decompiler-architecture-overview.aspx
– 3to Feb 02 '17 at 05:42if ABIs are stored to be easily fetched over swarm using ENS https://www.reddit.com/r/ethereum/comments/50zej1/small_thought_contracts_serving_up_their_own_abi/ then variable names would also be easy to look up for a decompiler
– 3to Feb 02 '17 at 06:40