---
# System prepended metadata

title: Etherium
tags: [blockchain]

---

# Etherium

## Basic terms

Basic terms for beginner, explain how blockchain works, etc.
https://ethereum.org/en/developers/docs/intro-to-ethereum/

### Account
https://ethereum.org/en/developers/docs/accounts/
`An Ethereum account is an entity with an ether (ETH) balance that can send transactions on Ethereum. Accounts can be user-controlled or deployed as smart contracts.`

### Transaction:
https://ethereum.org/en/developers/docs/evm/#transactions
`Transactions are cryptographically signed instructions from accounts.`
- So just a signed EVM program?? Everything is opcode??
- The fee to submit a transaction is called "gas"
- 2 types of transaction:
    - Transactions that result in message calls --> basically code that call a smart contract, aka just like an API call
    - Transactions that result in contract creation.

- Gas costs for contract deployment are far higher: https://ethereum.org/en/developers/docs/smart-contracts/#permissionless

- External Function Calls: https://docs.soliditylang.org/en/latest/control-structures.html#external-function-calls
- **External Function Calls (aka a special message call) vs transaction**: https://ethereum.stackexchange.com/questions/765/what-is-the-difference-between-a-transaction-and-a-call
    - Reentrancy only happens with transaction, not External Function Calls

#### call() method vs delegatecall() method:
- Despite the name, these are both used to perform **transaction**
- call: current smart contract call another contract --> msg.sender is current smart contract, storage belongs to the new smart contract
- delegatecall: current smart contract pull the code of another contract to current context to execute --> msg.sender stays the same, storage is of current contract
- https://solidity-by-example.org/delegatecall/

### Node
https://ethereum.org/en/developers/docs/nodes-and-clients/
`Ethereum is a distributed network of computers (known as nodes) running software that can verify blocks and transaction data`
- Peer-to-peer network, so the actual machines that runs EVM programs are the nodes 
- A node has to run two clients: a consensus client and an execution client:
    - `The execution client listens to new transactions broadcasted in the network, executes them in EVM, and holds the latest state and database of all current Ethereum data.` --> the thing that implement EVM and execute EVM instruction
    - The consensus client: feel like I dont need to care about this yet.
- When message calls transaction happen, the node just take the contract's opcode from the blockchain then execute it 

Side note: 
    - Only validator (people that put down 32 ETH) can receive part of the gas money 
    - Normal people that is not validator doesn't have any benefit if they become a node --> beside privacy reason, what motivate people to become a node?
## Smart contract and EVM:
https://ethereum.org/en/developers/docs/evm/
https://ethereum.org/en/developers/docs/smart-contracts/
https://ethereum.org/en/developers/docs/smart-contracts/anatomy/
- The EVM executes as a stack machine
- Basically a smart contract is a freaking bot
- It has address (similar to user's wallet address), balance,... just like a user
- "When a smart contract is deployed on the Ethereum blockchain, its bytecode is stored on the blockchain as a transaction." ==> From: https://josnif.hashnode.dev/understanding-abi-and-bytecode-in-ethereum-smart-contract-development-concepts-tools-and-best-practices ==> help with integrity of the code.
- https://ethereum.stackexchange.com/questions/149140/how-to-find-the-bytecode-of-ethereum-smart-contract-by-just-its-address
- The code for the vast majority of smart contracts is open-source --> Helps with transparency --> no rev needed :sadge:

## Smart contract security:
https://ethereum.org/en/developers/docs/smart-contracts/security/#mitigate-common-smart-contract-vulnerabilities

## Non-native token
https://ethereum.org/en/developers/docs/standards/tokens/erc-20/#top

https://www.dappuniversity.com/articles/code-your-own-cryptocurrency-on-ethereum

Most non native tokens seems to be just smart contracts with a mapping of (address->amount).

## Blockchain oracle:
https://cointelegraph.com/learn/what-is-a-blockchain-oracle-and-how-does-it-work

## Fallback method:
https://solidity-by-example.org/sending-ether/
