Provider creates a link between me and a node in the mainnet/testnet, right? What will happen if say, one or more nodes of infura for example goes down. My app would still like to use that node but it won't be able to connect, right? Then how does that guarantee high availability which is required in distributed systems, I am still relying on one node that my app connects to using the provider. Or do I understand it completely wrong?
Also in the courses of solidity nobody tells what actually happens when I call
web3.eth.contract(....).deploy(...). I mean what does deploy do behind the scenes? It reaches the node then does that node advertise my contract to every miner's mempool? Basically, how do mempools get filled when information is initiated at one place?