I have a question regarding smart contract execution.
It is my understanding that when a user requests a smart contract, miners will execute the smart contract, and bundle its output in a block before broadcasting to the network.
But then all other full nodes / miners will have to check the transactions inside the received block, and doing such requires also executing the smart contract to see if the output is the same as the miner's. And so all full nodes end up executing the smart contract requested by the user.
However, only the miner earns the gas associated with the smart contract execution. Does that mean that all nodes that execute the smart contract after the miner to verify its result do not earn any gas?
I understand why in Bitcoin it's not really problematic to only reward the miner because most of the computation goes into solving a proof of work. But verifying a block is "easy" (verify transactions, the pow solution, and a few other things). So it's fair to say that block creation is where most of the calculation is at, not block verification (cost per node; energy consumption of block creation vs verification network wide is another question I guess...)
In Ethereum however, it's not exactly the same thing, because verifying a block may include executing many smart contracts. Which is more costly than just verifying a user<=>user transaction I assume.
Am I missing Something?
Is it worrying for smart contract scalability that all nodes execute the contact?
What are the energy code of adding two integers together via an Ethereum smart contract considering all nodes will execute this addition?
What will convince nodes to become full nodes and verify blocks if it becomes costly for them ? What is the most computationally intensive smart contract one could reasonably have on Ethereum?
I guess I've just realized the implications of everyone node running smart contracts at some point hence my many questions. I would love it if someone could enlighten me a bit on that aspect!
Cheers!