I am building a web UI for testing smart contracts and currently I have to supply the ABI for a contract I test. Is there a way to extract the ABI from a deployed contract (preferably programmatically)?
If the source code has been published to Etherscan, then they have an API to retrieve it. From https://etherscan.io/apis#contracts:
Get Contract ABI for Verified Contract Source Codes
Yes, there are tools that try to recover ABI from bytecode.
For example porosity and mythril.
It is not always possible to recover ABI because bytecode does not contain function signatures but only last 4 bytes of function signature hash.
-
If you look at potosity or mythril, you need an ABI to Disassemble or Decompilation. There's no way to get an ABI from a deployed contract. – hefgi May 16 '18 at 13:44
Go to EtherScan > enter the contract address > click on the Code in the tab section heading > Scroll down to find the Contract ABI > click on the Copy icon to copy it