Let's say we have a private Ethereum network. One node has created a smart contract and pushed it to the network, while some validating node validates it and then every node puts it in the blockchain. I have couple of questions in this scenario, which I've tried to find online, but didn't get any definitive answer anywhere.
How do the other nodes in the network find out about all public functions that can be invoked on the smart-contract? Is there some way to 'extract' those function signatures from the EVM bytecode? If that's not feasible, then is it a good design decision, to enforce a function naming scheme network-wide? e.g. the getter will always be called
getMyBalance(Address)
, something like that.I read that a contract's Ethereum address is derived from the contract creation transaction as a function of the originating account and nonce. In that case, if a node somehow loses the contract's address, how can it retrieve the corresponding nonce, so that it can regenerate the address?
In a private network, can the nodes set a watch/trigger (like what Zookeeper provides), so that the nodes get notified if a new contract is deployed to the blockchain?