177

Update on Dec 9th, 2018 / Block ~ 6_850_000 - It's quite an annoyance to keep this answer updated. Geth (Go) Last Update: May 14th, 2018 / Block ~ 5_600_000 Client / Mode | Block Number | Disk Space ======================|================|=========== geth light | 5_600_000 | 363M geth fast full | 5_600_000 | 142G geth ...


110

Here's my interpretation, based on the yellow paper: ...the Tries should look more like this:


86

Lazy vs Eager Execution There are two fundamental ways of designing a contract to be called at a later time: lazy evaluation or eager evaluation. Lazy evaluation means that the contract's state will be updated only when needed. This often makes sense for contracts that naturally incentivise users to call them at a future date. An example of this might be ...


69

There's a lot of detail on this PR on github. Here's a quote: Instead of processing the entire block-chain one link at a time, and replay all transactions that ever happened in history, fast syncing downloads the transaction receipts along the blocks, and pulls an entire recent state database.


68

Trie (also called digital tree, prefix trie or radix trie) An ordered tree data structure that is used to store a dynamic set or associative array where the keys are usually strings. A node's position in the tree defines the key with which it is associated. https://en.wikipedia.org/wiki/Trie A trie for keys "A","to", "tea", "ted", "ten", "i", "in", and "...


64

Lets first start with my adaptation of this figure illustrating the Bitcoin block structure: So far so good. All fairly basic. Enter Ethereum and things get a wee bit more complex. After reading through this and this, and as per @eth 's recommendation this, my best interpretation is the figure below: The header field definitions are available in section 4....


64

tl;dr: $0.076/KB or $76,000/GB According to the yellow paper, the fee is 20k gas to store a 256 bit word. A kilobyte is thus 640k gas. Gas right now is around 50 Gwei (0.00000005 ETH). So a KB of storage costs 0.032 ETH. A GB costs 32,000 ETH. To test this empirically, I created a contract with this code: contract test { bytes data; function ...


51

Uncles are stale blocks that contribute to the security of the main chain, but are not considered the canonical "truth" for that particular chain height. In contrast to orphan blocks (which have no parent), uncle blocks are linked to the chain but are not part of the final selection. Uncles are stale blocks which are not orphaned. Orphan blocks have no ...


47

Ethereum is a world computer [1] and might change how we interact, just like the internet did, 20 years ago. Like Bitcoin, it is based on a block chain, but Ethereum is more than just a currency. It is a platform for building decentralized apps (dapps), which can be used for any activity that has an economic or governance aspect, such as: Transparent ...


47

You can do this by calling address.balance. To get the contract's balance, just do this.balance. Read the docs. Update: As of Solidity ^0.4.24, you need to do: address(this).balance (Copied from answer by Paul Berg)


44

From the glossary Uncle: a child of a parent of a parent of a block that is not the parent, or more generally a child of an ancestor that is not an ancestor. If A is an uncle of B, B is a nephew of A. Why they are needed? To help reward miners for when duplicate block solutions are found because of the shorter block times of Ethereum (compared to other ...


39

From George Hallam: 12 confirmations; however, exchanges and entities handling very large amounts of Ether frequently are still encouraged to run two different Ethereum implementations and only accept transactions that have been confirmed by both for maximum security (e.g. Go & C++). For reference, 12 confirmations is approximately 3 minutes.


39

Hosted Main Chain Explorers: https://ethtools.com/mainnet/chain Can explore: Contract Addresses Non Contract Addresses Transactions (and their internal steps) Blocks Contract Code https://www.etherchain.org Can explore: Contract Addresses Non Contract Addresses Transactions Blocks Contract Code https://live.ether.camp Can explore: Contract Addresses Non ...


37

Do following steps to check the sync state: 1.) open a new geth instance and type in geth attach 2.) now type in eth.syncing This shows you the "currentBlock" and the "highestBlock".


36

An 'Ethereum client' is just a term. It refers to any node able to parse and verify the blockchain, its smart contracts and everything related. It also allows you/provides interfaces to create transactions and mine blocks which is the key for any blockchain interaction. Official reference implementations (CLI) There are currently three reference ...


34

It depends on how technical your audience is, and you need to leave out a lot of subtleties, but I've been able to explain it to non-techie family and friends like so: A Distributed System (the blockchain) With most websites, information is stored on a server, which is basically just a computer with a database in it that has all of the site's information. ...


34

Currently, the network is growing at around 1GB per month. It's hard to anticipate how large it could grow and at what pace, but there are already efforts underway to implement state-tree pruning in various clients. These techniques will contribute towards so-called "light-clients". In linked chart above, Block size evolution estimating block size in bytes ...


34

Ethereum explained to my mom Source.


33

Don't forget to use an SSD If you're able to, using an NVMe SSD is even better. If you have limited space on SSD see Can chaindata be split across two (or more) locations? That said, the Ethereum state is large and getting larger. Be patient and it will be worth it. How can I get a geth node to download the blockchain quickly? wiki has been updated. This ...


31

It essentially means you can write programs (contracts) that can (for the most part) solve any reasonable computational problem. Using Solidity and Serpent you have the ability to perform looping and branching statements as well as local state storage. This functionality is important to have in order to implement most non-trivial computer programs. ...


30

You can also use geth removedb to remove the blockchain and state databases. geth removedb Remove local database? [y/N] After removing the old databases, run geth --fast --cache=1024 (see answer to this question by @eth). Note that using geth --fast will prevent you from using debug.traceTransaction(...) on the blocks that were --fast downloaded. Some ...


29

Lets take it one step at a time. Blockchains generally work by having an origin (genesis) state with a few accounts having funds, and then every block that you place on top of the chain moves those origin funds around, also granting a bit of extra for the miner. So whenever you import a new block into your existing chain to take a look at what your view (...


29

You can store data in the blockchain: In a special place on the blockchain reserved for contract data In a special place on the blockchain reserved for transaction input data To store your data in a special place 1 you'll need to create a contract and deploy it on the blockchain. To store your data in a special place 2 you'll need to send someone a ...


29

It can't be canceled, but it can be "out-gassed". You can grab the nonce (can be found on the pending tx on etherscan) and send another transaction with a higher gas price with the same nonce. If you use a different nonce, then they can both be mined, but if you use the same nonce, only one can be mined. If miners see both, they should be smart enough to ...


28

Just like teaching someone about a computer for the first time, there's no need to dive into the nitty gritty details. You just have to tell them what the system does! Here's one way I might describe blockchains and Ethereum in a few short, simple sentences: Blockchains are a way for many different people or computers to agree on something even though ...


28

Shard is a concept not so much related to the Proof-Of-Stake, but rather to the scalability improvement. The idea of 'sharding' is to split the space of possible accounts (contracts are accounts too) into subspaces, for example, based on first digits of their numerical addresses. Each shard gets its own set of validators (therefore PoS is a pre-requisite), ...


28

For geth, delete $home/Libary/Ethereum/chaindata. That should wipe out the blockchain itself and let you sync from scratch. Also you probably want to do a fast sync afterwards to get back fast-ish on the chain --fast.


28

The blockchain is a list of blocks which are fundamentally lists of transactions. Each transaction has an attached receipt which contains zero or more log entries. Log entries represent the result of events having fired from a smart contract. In the Solidity source code, to define an event, you mark it thus by preceding it with the event keyword (similar in ...


25

This question is too broad to be easily answered, and there are several good existing tutorials available online. But here are the first steps you might take: Read up on the basic concepts. The Ethereum white paper isn't a bad place to start, and some of the tutorials I linked above intersperse conceptual explanations with step-by-step tutorial instructions....


25

First, make sure you have an account. web3.personal.listAccounts If you get [] ... web3.personal.newAccount() Try again. Then ... web3.personal.unlockAccount(web3.personal.listAccounts[0],"<password>", 15000) meaning unlock the first account with this password for 15,000 seconds (don't bug me for a while.) The DAPP side should stop ...


Only top voted, non community-wiki answers of a minimum length are eligible