I'm quite new to the blockchain technology and I would like to understand a few concepts for which I couldn't find an in-depth explanation online. All the resources I examined so far explain the subject in an extremely high-level way and there is no technical explanation of the process in which the system works, particularly Ethereum.
I will explain what I know about the system, then what I do not know. It could be that my question is a bit broad one, but I just can't split it into separate questions as the concepts are so tangled together!
In a simplified manner, this is how a blockchain looks like(I will have some ideas referencing this below):
Let's say we have a smart contract that stores a list of node addresses. Each time a node triggers the contract's iWasHere()
function, the node's address gets to be added in a list and one can read the list of addresses by calling the whoWasHere()
function.
I would like to have a more in-depth understanding on what exactly means for a smart contract to be ran on a blockchain and what happens exactly under-the-hood.
Here's what I do understand about the concept:
a smart contract can have the same capabilities a normal person has: can receive money, can send money, can listen to certain events and interact with other smart contracts.
a human person can interact with the smart contract through a frontend interface and so full-fledged applications can be built on top of that "backend" interface.
smart contracts are compiled into bytecode i.e. EVM assembly instructions that are ran on the EVM and each instruction consts Gas.
Here's what I do not understand about the concept:
what actually happens when one "deploys a smart contract on the blockchain"? Is it attached, to a block, on a newly mined block, e.g.
n + 17
? How does one access that contract, then? You just scan the whole chain for smart contracts with a certain contract address?what happens, exactly, under-the-hood, when a random human person triggers a smart contract function, for example
iWasHere()
. The EVM byte code corresponding to the code that needs to be executed by that function call gets added to a transaction and then recorded on the block? Who does the code execution per-se(i.e. what node will run the actual processor cycles needed to run the code on the actual hardware i.e. e.g. a human-ownd CPU), the node that calls the function or all the nodes in the network? If all the nodes in the network will run the code, how is this scalable? What happens when there are 10.000 applications running on blochcain simultaneously? Isn't the same as 10.000 application running on each node in the network?
Can someone explain or point me to some documentation that explains these concepts? The web is full of high-level explanations on how does the system works, but couldn't find anything on the low technical level.