This question already has an answer here:
I'm trying to understand Ethereum smart contract interaction at the base level using the JSON-RPC.
Say I want to update a contract programmatically. I create the contract, there is a public method that allows me to updateBestFriend. I compile and add it to the blockchain, I have the address where it now lives.
Awhile later, I want to interact with this contract. Do I need to save the ABI that whole time, or, using the contract address I still have (because I'm aware that it would be difficult or impossible to find it otherwise).
It seems to me like I should be able to call eth_getAbi(contract address), and then using that data to make the call. Or, even better, I just call the contract by address, and it would load the ABI for me, like:
contract = client.eth_getContract(contract address); contract.updateBestFriend('Simon');
I'm reading this over and over, but I'm not understanding how it is supposed to work.