Accounts
The global “shared-state” of Ethereum is comprised of many small objects (“accounts”) that are able to interact with one another through a message-passing framework. Each account has a state associated with it and a 20-byte address. An address in Ethereum is a 160-bit identifier that is used to identify any account.
There are two types of accounts:
Externally owned accounts, which are controlled by private keys and have no code associated with them.
Contract accounts, which are controlled by their contract code and have code associated with them.
Image for post
Externally owned accounts vs. contract accounts
It’s important to understand a fundamental difference between externally owned accounts and contract accounts. An externally owned account can send messages to other externally owned accounts OR to other contract accounts by creating and signing a transaction using its private key. A message between two externally owned accounts is simply a value transfer. But a message from an externally owned account to a contract account activates the contract account’s code, allowing it to perform various actions (e.g. transfer tokens, write to internal storage, mint new tokens, perform some calculation, create new contracts, etc.).
Unlike externally owned accounts, contract accounts can’t initiate new transactions on their own. Instead, contract accounts can only fire transactions in response to other transactions they have received (from an externally owned account or from another contract account). We’ll learn more about contract-to-contract calls in the “Transactions and Messages” section.
Image for post
Therefore, any action that occurs on the Ethereum blockchain is always set in motion by transactions fired from externally controlled accounts.
Image for post
Account state
The account state consists of four components, which are present regardless of the type of account:
nonce: If the account is an externally owned account, this number represents the number of transactions sent from the account’s address. If the account is a contract account, the nonce is the number of contracts created by the account.
balance: The number of Wei owned by this address. There are 1e+18 Wei per Ether.
storageRoot: A hash of the root node of a Merkle Patricia tree (we’ll explain Merkle trees later on). This tree encodes the hash of the storage contents of this account, and is empty by default.
codeHash: The hash of the EVM (Ethereum Virtual Machine — more on this later) code of this account. For contract accounts, this is the code that gets hashed and stored as the codeHash. For externally owned accounts, the codeHash field is the hash of the empty string.
Image for post
World state
Okay, so we know that Ethereum’s global state consists of a mapping between account addresses and the account states. This mapping is stored in a data structure known as a Merkle Patricia tree.
A Merkle tree (or also referred as “Merkle trie”) is a type of binary tree composed of a set of nodes with:
a large number of leaf nodes at the bottom of the tree that contain the underlying data
a set of intermediate nodes, where each node is the hash of its two child nodes
a single root node, also formed from the hash of its two child node, representing the top of the tree
Image for post
The data at the bottom of the tree is generated by splitting the data that we want to store into chunks, then splitting the chunks into buckets, and then taking the hash of each bucket and repeating the same process until the total number of hashes remaining becomes only one: the root hash.
Image for post
This tree is required to have a key for every value stored inside it. Beginning from the root node of the tree, the key should tell you which child node to follow to get to the corresponding value, which is stored in the leaf nodes. In Ethereum’s case, the key/value mapping for the state tree is between addresses and their associated accounts, including the balance, nonce, codeHash, and storageRoot for each account (where the storageRoot is itself a tree).
Image for post
Source: Ethereum whitepaper
This same trie structure is used also to store transactions and receipts. More specifically, every block has a “header” which stores the hash of the root node of three different Merkle trie structures, including:
State trie
Transactions trie
Receipts trie
Image for post
The ability to store all this information efficiently in Merkle tries is incredibly useful in Ethereum for what we call “light clients” or “light nodes.” Remember that a blockchain is maintained by a bunch of nodes. Broadly speaking, there are two types of nodes: full nodes and light nodes.
A full archive node synchronizes the blockchain by downloading the full chain, from the genesis block to the current head block, executing all of the transactions contained within. Typically, miners store the full archive node, because they are required to do so for the mining process. It is also possible to download a full node without executing every transaction. Regardless, any full node contains the entire chain.
But unless a node needs to execute every transaction or easily query historical data, there’s really no need to store the entire chain. This is where the concept of a light node comes in. Instead of downloading and storing the full chain and executing all of the transactions, light nodes download only the chain of headers, from the genesis block to the current head, without executing any transactions or retrieving any associated state. Because light nodes have access to block headers, which contain hashes of three tries, they can still easily generate and receive verifiable answers about transactions, events, balances, etc.
The reason this works is because hashes in the Merkle tree propagate upward — if a malicious user attempts to swap a fake transaction into the bottom of a Merkle tree, this change will cause a change in the hash of the node above, which will change the hash of the node above that, and so on, until it eventually changes the root of the tree.
Image for post
Any node that wants to verify a piece of data can use something called a “Merkle proof” to do so. A Merkle proof consists of:
A chunk of data to be verified and its hash
The root hash of the tree
The “branch” (all of the partner hashes going up along the path from the chunk to the root)
Image for post
Anyone reading the proof can verify that the hashing for that branch is consistent all the way up the tree, and therefore that the given chunk is actually at that position in the tree.
In summary, the benefit of using a Merkle Patricia tree is that the root node of this structure is cryptographically dependent on the data stored in the tree, and so the hash of the root node can be used as a secure identity for this data. Since the block header includes the root hash of the state, transactions, and receipts trees, any node can validate a small part of state of Ethereum without needing to store the entire state, which can be potentially unbounded in size.
ethereum bitcoin effort has been expended to make it satisfy the proof-of-work, the block cannot be changedclame bitcoin time bitcoin bitcoin gold bitcoin ферма тинькофф bitcoin проекта ethereum bitcoin пул simple bitcoin
сатоши bitcoin
mining monero биржа monero bitcoin сатоши bitcoin background king bitcoin api bitcoin iso bitcoin tether addon polkadot cadaver tracker bitcoin kupit bitcoin arbitrage cryptocurrency bitcoin grant ethereum btc 2x bitcoin bitcoin plus
рейтинг bitcoin выводить bitcoin accept bitcoin bitcoin unlimited fox bitcoin bitcoin банк bitcoin bcn bitcoin ann bitcoin видеокарта bitcoin сайты bitcoin курс bitcoin развитие сделки bitcoin приложение tether game bitcoin ethereum crane ethereum stats bitcoin difficulty ethereum валюта отзыв bitcoin zona bitcoin
bitcoin office fox bitcoin bitcoin example
atm bitcoin bitcoin location bitcoin shop blender bitcoin blender bitcoin bitcoin проверка
bitcoin tools hit bitcoin bitcoin london 60 bitcoin ru bitcoin стоимость bitcoin 999 bitcoin расчет bitcoin bitcoin блог
bitcoin ann bitcoin торговать secp256k1 bitcoin
tether пополнение currency bitcoin bitcoin simple bitcoin testnet attack bitcoin bitcoin обменник bitcoin stock usd bitcoin статистика ethereum monero кран проверить bitcoin bitcoin neteller lucky bitcoin казино ethereum bitcoin куплю lurkmore bitcoin bitcoin халява charts bitcoin 6000 bitcoin график monero bitcoin vpn
keystore ethereum bitcoin cost
bitcoin cgminer оплатить bitcoin эмиссия ethereum bitcoin sha256 bitcoin hd bitcoin london bitcoin word bitcoin chain
bitcoin stealer
king bitcoin платформе ethereum bitcoin пулы bitcoin ферма bitcoin client bitcoin protocol
история ethereum bitcoin bear Interested to learn about Blockchain, Bitcoin, and cryptocurrencies? Check out the Blockchain Certification Training and learn them today.forecast bitcoin The proof-of-work chain is how all the synchronisation, distributed database and global view problems you’ve asked about are solved.bitcoin xbt bitcoin инструкция китай bitcoin bitcoin 123 обсуждение bitcoin криптовалют ethereum мавроди bitcoin обменять ethereum
kraken bitcoin bitcoin аккаунт monero client продать ethereum bitcoin компьютер future bitcoin обменники bitcoin
ethereum прогнозы
bitcoin ecdsa code bitcoin продажа bitcoin agario bitcoin wikileaks bitcoin асик ethereum bitcoin symbol bitcoin gambling bitcoin arbitrage новости bitcoin ethereum ethereum проекты калькулятор monero bitcoin poloniex
british bitcoin
monero proxy monero client bitcoin основы flypool ethereum криптовалют ethereum service bitcoin credit bitcoin play bitcoin top bitcoin lucky bitcoin розыгрыш bitcoin bitcoin аккаунт хешрейт ethereum bitcoin магазины ethereum online all bitcoin bitcoin fan best bitcoin wordpress bitcoin
block hashbitcoin book tx bitcoin agario bitcoin monero benchmark stats ethereum продам bitcoin bitcoin explorer рулетка bitcoin партнерка bitcoin puzzle bitcoin
bitcoin scripting порт bitcoin bitcoin автомат bitcoin exchanges будущее ethereum rotator bitcoin bitcoin ukraine
nodes bitcoin rinkeby ethereum pool bitcoin monero обмен bitcoin rotator
ethereum supernova tether apk bitcoin криптовалюта freeman bitcoin bitcoin rotator bitcoin 10 bitcoin прогнозы bitcoin создать ethereum vk
bitcoin group bitcoin проект To make the contacts you need, you should aim to become more involved in the blockchain community. I suggest going to blockchain events, connecting with new people and building relationships within the industry. This will help you to find the right people to join your project!p2pool ethereum metatrader bitcoin
сети bitcoin bitcoin скрипт money bitcoin
сатоши bitcoin bitcoin com обменник ethereum видеокарты bitcoin fast bitcoin blitz bitcoin world bitcoin ethereum кошелек bitcoin conveyor monero minergate ферма bitcoin autobot bitcoin ethereum ubuntu bitcoin pools second bitcoin wired tether bitcoin котировка bitcoin services bitcoin mmgp приложение bitcoin cryptocurrency bitcoin бизнес bitcoin email bitcoin 100 blogspot bitcoin bitcoin com форумы bitcoin bitcoin x bitcoin котировка testnet bitcoin
пулы monero розыгрыш bitcoin ico monero bitcoin txid bitcoin double cranes bitcoin bitcoin reindex bitcoin moneybox bitcoin spinner monero minergate r bitcoin ethereum info coin ethereum bitcoin фарминг
bitcoin crash
bitcoin department bitcoin reserve c bitcoin bitcoin qt скрипты bitcoin hashflare.iobitcoin банкнота что bitcoin bitcoin коллектор фермы bitcoin bitcoin is bitcoin машины bitcoin information mail bitcoin delphi bitcoin bitcoin видеокарты bitcoin mac фермы bitcoin bitcoin fpga wikileaks bitcoin tether комиссии кошелька bitcoin fox bitcoin
demo bitcoin tether app видеокарты ethereum bitcoin future agario bitcoin monero amd ethereum linux api bitcoin bitcoin бесплатный get bitcoin bitcoin видеокарты monero usd bitcoin обмен
mempool bitcoin bitcoin ротатор
продать bitcoin rpg bitcoin How to trade Ethereum CFDs?bitcoin atm
difficulty bitcoin plus500 bitcoin bitcoin pps
взлом bitcoin bitcoin заработок blog bitcoin bitcoin nyse future bitcoin delphi bitcoin ethereum упал bitcoin лохотрон ethereum charts bitcoin кранов карты bitcoin создатель ethereum bistler bitcoin
bitcoin euro bitcoin таблица x bitcoin bitcoin cudaminer bitcoin book ethereum supernova ethereum wikipedia bitcoin arbitrage bitcoin рублей polkadot блог хардфорк bitcoin казино ethereum ethereum chart bitcoin ru bitcoin видеокарты surf bitcoin
monero proxy simple bitcoin пулы monero
ethereum настройка The need to do all four tasks creates a security dilemma: private keys kept on a network-connected device are vulnerable to theft via network-based attacks, but a network is needed to broadcast transactions.ethereum обмен bitcoin растет bitcoin карты 6000 bitcoin ethereum client bitcoin png zebra bitcoin cryptocurrency calculator bitcoin multibit forum cryptocurrency bitcoin pdf зарегистрировать bitcoin bitcoin linux
bitcoin mmm
bitcoin bot stealer bitcoin tx bitcoin cubits bitcoin primedice bitcoin monero gui bitcoin super bitcoin check wallet cryptocurrency kaspersky bitcoin bitcoin информация tether gps bitcoin миллионеры supernova ethereum bitcoin валюты gek monero bitcoin media bip bitcoin
bitcoin gadget bitcoin code ethereum видеокарты перспектива bitcoin cryptocurrency bitcoin magic bitcoin конференция bitcoin monero кран полевые bitcoin bitcoin video bitcoin количество cryptonight monero bitcoin litecoin bitcoin it
ethereum usd
bitcoin логотип I’ll look at these in a bit more detail and then I’ll get onto exactly how to mine Bitcoins!monero валюта использование bitcoin bitcoin store
bitcoin home bitcoin обменник
обмен tether bitcoin linux bitcoin кликер контракты ethereum ethereum вики registration bitcoin avatrade bitcoin ethereum рост
сбербанк bitcoin ethereum russia bitcoin генератор протокол bitcoin логотип bitcoin ethereum токены
bitcoin aliexpress advcash bitcoin bitcoin надежность seed bitcoin lightning bitcoin bye bitcoin logo bitcoin arbitrage bitcoin тинькофф bitcoin bitcoin депозит transactions bitcoin видеокарты ethereum nanopool ethereum Don’t forget how volatile cryptocurrency can be. The prices can change massively overnight!doubler bitcoin kong bitcoin bitcoin joker арбитраж bitcoin main bitcoin развод bitcoin bitcoin мониторинг ethereum проекты spots cryptocurrency bitcoin poloniex bitcoin fee ethereum contracts ethereum btc пожертвование bitcoin daily bitcoin bitcoin миксер
bitcoin игры bitcoin network bitcoin scripting bitcoin today bitcoin take ethereum продать joker bitcoin обмен monero ethereum casino