Q1)So firstly, I wonder whether this action is even practical in usual circumstances, like having a hot wallet. When Jon sends 10 bitcoin to Mike, it should deduct 10 bitcoin from his hot wallet immediately. So, how could Jon even try to double spend? No bitcoin…(Now, if Jon is trying to go to a public ledger, and redo the block by adding or deleting particular transactions, I get it this type of activity leads to the double spending. For the longest chain, I understand 51% hash power is necessary to do so.)
In short, I understand that Jon can send Mike and Lisa 10 bitcoin each at the very same time to do double spending, but is it even possible in a hot wallet situation (which I think is a usual circumstance for many people).
Your wallet probably won't allow you to make another transaction that spends an input that has already been spent. However, there is nothing stopping you from constructing the transaction and pushing it yourself.
When a node receives a transaction, it'll get validated and the node will remove the UTXO involved from their UTXO set. This means that every other transaction that spends the same UTXO will be invalid to the node as the node has already removed it. However, if you were to broadcast the transaction to two half of the network, then assuming equal propagation, each half will see different transactions. This is known as a race attack, where in a scenario that a merchant sees TX A but infact TX B with the same inputs and sent back to a different address is also propagated on the network. In this case, then whichever transaction that gets included in a block first wins. The premise of 51% attack or any of that sort usually will have the attacker building a chain alongside the honest network.
For example, if the transaction gets included at block height of 2, then the attacker will start mining at a block height of 2 with a rogue transaction until they outpace the network. Afterwhich, they broadcast that chain and they're able to effectively overwrite the other chain as it has a higher PoW.
Q2)In any case, if Jon tries to send bitcoin, other four will check if this transaction is valid or not. Exactly, are they checking if Jon has enough founds by going back to the public ledger, and Jon is not doing the double spending also by going back to the public ledger? I suppose the answer is yes, but here I am starting to get confused because this is the point which PoW is coming in as two of four nodes could be Jon's, and they might lie. In my understanding, PoW plays a role to choose a representative who puts a block. I understand that it is a hashing race to get a certain value where inputs are all transactions to be included in a block, the past information from the previous block, and a nonce which you choose to get an ideal output. Hence, anyone who is participating to this hash race already knows which transactions they should include into the block. So, there should be a consensus before PoW that would check which transactions to be included?
When a transaction gets broadcasted, it stays in a memory pool of nodes before it gets mined into a block. This state is different from each and every node; if you were to push two conflicting transactions equally to two nodes, they would perceive the state differently with them regarding the first transaction received as valid while not accepting the other transaction into their mempool. As a result, there is no consensus here at this stage.
Don't think of Bitcoins as an account but rather each transaction spending a specific UTXO (unspent transaction output) which gets used and created in the transaction. The concept of PoW gives whoever having the larger hashrate the liberty to choose and include either transactions, the number of nodes the attacker hold is irrelevant. As long as Jon is able to create a block that includes the transaction that he desires, then that transaction will be included in the longest chain.
Since no consensus is involved before the transaction is included in a block, then accepting a transaction with zero confirmation is riskier. PoW defeats double spending by achieving a consensus whereby each unique UTXO can only be spent once and once only in the same chain and an agreement by the nodes agreeing on the chain with the longest valid PoW.