My understanding is that all cryptocurrencies(including bitcoin) have a public/private key pair that is needed to perform transactions. I am curious how exchanges program these wallets and generate the keypair for all the cryptocurrencies. I assumed there would be a wallet SDK for each cryptocurrency so that developers could program their own wallets, but did not find any such thing. Also, how do they programmatically submit transactions to the network? I assume you need to provide some IP, but since this is a decentralized network what IP would you provide?