Create an account


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
What is Ethereum?

#1
What is Ethereum?

<div style="margin: 5px 5% 10px 5%;"><img src="http://www.sickgaming.net/blog/wp-content/uploads/2018/07/what-is-ethereum.png" width="672" height="68" title="" alt="" /></div><div><p>Ethereum is a blockchain protocol that includes a programming language which allows for applications, called contracts, to run within the blockchain. Initially described in a white paper by it’s creator, Vitalik Buterin in late 2013, Ethereum was created as a platform for the development of decentralized applications that can do more than make simple coin transfers.</p>
<h4 class="graf graf--h4 graf-after--p">How does it work?</h4>
<p class="graf graf--p graf-after--h4">Ethereum is a blockchain. In general, a blockchain is a chain of data structures (blocks) that contains information such as account ids, balances, and transaction histories. Blockchains are distributed across a network of computers; the computers are often referred to as <em class="markup--em markup--p-em">nodes</em>.</p>
<p class="graf graf--p graf-after--p">Cryptography is a major part of blockchain technology. Mathematical encryption algorithms like <a class="markup--anchor markup--p-anchor" href="https://www.youtube.com/watch?v=vgTtHV04xRI">RSA</a> and <a class="markup--anchor markup--p-anchor" href="https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/">ECDSA</a> are used to generate public and private keys that are mathematically coupled. Public keys, or <em class="markup--em markup--p-em">addresses</em>, and private keys allow people to make transactions across the network without involving any personal information like name, address, date of birth, etc. These keys and addresses are often called <em class="markup--em markup--p-em">hashes</em> and are usually a long string on hexadecimal symbols.</p>
<div class="aspectRatioPlaceholder is-locked">
<p><img alt="1*mjowAqqMPCvO25ptToWrag.png" class="graf-image" src="http://www.sickgaming.net/blog/wp-content/uploads/2018/07/what-is-ethereum.png" /></p>
</div>
<p>Example of an RSA generated public key</p>
<p class="graf graf--p graf-after--figure">Blockchains have a public ledger that keeps track of all transactions that have occurred since the first, “genesis”, block. A block will include, at least, a hash of the current and previous blocks, and some data. Nodes across the network work to verify transactions and add them to the public ledger. In order for a transaction to be considered legitimate, there must be <em class="markup--em markup--p-em">consensus</em>.</p>
<p class="graf graf--p graf-after--p">Consensus means that the transaction is considered valid by the majority of the nodes in the Network. There are four main algorithms used to achieve consensus among a distributed blockchain network: the byzantine fault tolerance, proof-of-work, proof-of-stake, and delegated proof-of-stake. Chris explains them well in <a class="markup--anchor markup--p-anchor" href="https://medium.com/@chrshmmmr/consensus-in-blockchain-systems-in-short-691fc7d1fefe">his post</a>.</p>
<p class="graf graf--p graf-after--p">Attempting to make even the slightest alteration to the data in a block will change the hash of the block and will therefore be noticed by the entire network. This makes blockchains <em class="markup--em markup--p-em">immutable </em>and <em class="markup--em markup--p-em">append-only</em>. A transaction can only be added at the end of the chain, and once a transaction is added to a block there can be no changes made to it.</p>
<p>Source: andrefortuna.org</p>
<h4 class="graf graf--h4 graf-after--figure">Accounts</h4>
<p class="graf graf--p graf-after--h4">Users of Ethereum control an account that has a cryptographic private key with a corresponding Ethereum address. If Alice, for example, wants to send Bob 1,000 ETH (<em class="markup--em markup--p-em">ETH / Ether </em>is Ethereum’s money). Alice needs Bob’s Ethereum address so she knows where to send it, and then Bob needs to use his private key that corresponds to that address in order to receive the 1,000 ETH.</p>
<p class="graf graf--p graf-after--p">Ethereum has two types of accounts: accounts that user’s control and <em class="markup--em markup--p-em">contracts</em> (or “smart contracts”). Accounts that user’s control, like Alice and Bob, primarily serve for ETH transfers. Just about every blockchain system has this type of account that can make money transfers. But what makes Ethereum special is the second type of account; a contract.</p>
<p class="graf graf--p graf-after--p">Contract accounts are controlled by a piece of code (an application) that is run inside the blockchain itself.</p>
<p class="graf graf--p graf--startsWithDoubleQuote graf-after--p">“What do you mean, <em class="markup--em markup--p-em">inside</em> the blockchain?”</p>
<h4 class="graf graf--h4 graf-after--p">EVM</h4>
<p class="graf graf--p graf-after--h4">Ethereum has a Virtual Machine, called <em class="markup--em markup--p-em">EVM</em>. This is where contracts get executed. EVM includes a stack (~processor), temporary memory (~RAM), storage space for permanent memory (~disk/database), environment variables (~system information, e.g: timestamp), logs, and sub-calls (you can call a contract <em class="markup--em markup--p-em">within</em> a contract).</p>
<p class="graf graf--p graf-after--p">An example contract might look like this:</p>
<pre class="graf graf--pre graf-after--p">
if (something happens): send 1,000 ETH to Bob (addr: 22982be234)
else if (something else happens): send 1,000 ETH to Alice (addr: bbe4203fe)
else: don't send any ETH</pre>
<p class="graf graf--p graf-after--pre">If a user sends 1,000 ETH to this account (the contract), then the code in this account is the only thing that has power to transfer that ETH. It’s kind of like an escrow. The sender no longer has control over the 1,000 ETH. The digital assets are now under the control of a computer program and will be moved depending on the conditional logic of the contract.</p>
<h4 class="graf graf--h4 graf-after--p">Is it free?</h4>
<p class="graf graf--p graf-after--h4">No. The execution of contracts occurs within the blockchain, therefore within the Ethereum Network. Contracts take up storage space, and they require computational power. So Ethereum uses something called <em class="markup--em markup--p-em">gas </em>as a unit of measurement of how much something costs the Network. The price of <em class="markup--em markup--p-em">gas</em> is voted on by the nodes and the fees user’s pay in gas goes to the miners.</p>
<h4 class="graf graf--h4 graf-after--p">Miners</h4>
<p class="graf graf--p graf-after--h4">Miners are people using computers to do computations required validate transactions across the Network and add new blocks to the chain.</p>
<p class="graf graf--p graf-after--p">Mining works like this: when a block of transactions is ready to be added to the chain, miners use computer processing power to find hashes that match a specific target. When a miner finds the matching hash, she will be rewarded with ETH and will broadcast the new block across the network. The other nodes verify the matching hash, then if there is consensus, it is added to the chain.</p>
<h4 class="graf graf--h4 graf-after--p">What’s inside a block?</h4>
<p class="graf graf--p graf-after--h4">Within an Ethereum block is something called the <em class="markup--em markup--p-em">state </em>and <em class="markup--em markup--p-em">history</em>. The state is a mapping of addresses to account objects. The state of each account object includes:</p>
<ul class="postList">
<li class="graf graf--li graf-after--p">ETH balance</li>
<li class="graf graf--li graf-after--li">nonce **</li>
<li class="graf graf--li graf-after--li">the contract’s source code (if the account is a contract)</li>
<li class="graf graf--li graf-after--li">contract storage (database)</li>
</ul>
<p class="graf graf--p graf-after--li">** a nonce is a counter that prevents the account from repeating a transaction over and over resulting perhaps in taking more ETH from a sender than they are supposed to.</p>
<p class="graf graf--p graf-after--p">Blocks also store history: records of previous transactions and receipts.</p>
<p class="graf graf--p graf-after--p">State and History and stored in each node (each member of the Ethereum Network). Having each node contain the history of Ethereum transactions and contract code is great for security and immutability, but can be hard to scale. A blockchain cannot process more transactions than a single node can. Because of this, Ethereum limits the number of transactions to 7–15 per second. The protocol has adopted <a class="markup--anchor markup--p-anchor" href="https://github.com/ethereum/wiki/wiki/Sharding-FAQ">sharding</a> — a technique that essentially breaks up the chain into smaller pieces but still aims to have the same level of security.</p>
<h4 class="graf graf--h4 graf-after--p">Transactions</h4>
<p class="graf graf--p graf-after--h4">Every transaction specifies a TO: address. If the TO: is a user-controlled account, and the transaction contains ETH, it is considered a transfer of ETH from account A to account B. If the TO: is a contract, then the code of the contract gets executed. The execution of a contract can result in further transactions, even calls to contracts within a contract, an event known as an inter-transaction.</p>
<p class="graf graf--p graf-after--p">But contracts don’t always have to be about transferring ETH. Anyone can create an application with any rules by defining it as a contract.</p>
<h4 class="graf graf--h4 graf-after--p">Who is using Ethereum?</h4>
<p class="graf graf--p graf-after--h4">Ethereum is currently being used mostly by crytocurrency traders and investors, but there is a growing community of developers that are building dapps (decentralized applications) on the Ethereum Network.</p>
<p class="graf graf--p graf-after--p">There are thousands of <a class="markup--anchor markup--p-anchor" href="https://www.stateofthedapps.com/">Ethereum-based projects</a> being developed as we speak. Some more the most popular dapps are games (e.g <a class="markup--anchor markup--p-anchor" href="https://www.cryptokitties.co/">CryptoKitties</a> and <a class="markup--anchor markup--p-anchor" href="https://cryptotulips.me/">CrptyoTulips</a>).</p>
<h4 class="graf graf--h4 graf-after--p">How is Ethereum different than <a class="markup--anchor markup--h4-anchor" href="https://bitcoin.org/en/">bitcoin</a>?</h4>
<p class="graf graf--p graf-after--h4">Bitcoin is a blockchain technology where users are assigned a private key, linked with a <em class="markup--em markup--p-em">wallet</em> that generates bitcoin addresses where people can send bitcoins to. It’s all about the coins. It’s a way to exchange money in an encrypted, decentralized environment.</p>
<p class="graf graf--p graf-after--p">Ethereum not only lets users exchange money like bitcoin does, but it also has programming languages that let people build applications (contracts) that are executed within the blockchain.</p>
<p class="graf graf--p graf-after--p">Bitcoin functions on <em class="markup--em markup--p-em">proof of work </em>as a means of achieving consensus across the network. Whereas Ethereum uses <em class="markup--em markup--p-em">proof of stake.</em></p>
<p class="graf graf--p graf-after--p">Ethereum’s creator is public (Vitalik Buterin). Bitcoin’s is unknown (goes by the alias, <a class="markup--anchor markup--p-anchor" href="https://en.wikipedia.org/wiki/Satoshi_Nakamoto">Satoshi Nakamoto</a>)</p>
<h4 class="graf graf--h4 graf-after--p">Other blockchains that do contracts</h4>
<p class="graf graf--p graf-after--h4">There are other blockchain projects that allow the creation of contracts. Here is a brief description of what they are and how they are different than Ethereum:</p>
<p class="graf graf--p graf-after--p"><a class="markup--anchor markup--p-anchor" href="https://neo.org/">Neo</a> — faster transaction speeds, inability to fork, less energy use, has two tokens (NEO and GAS), will be quantum resistant.</p>
<p class="graf graf--p graf-after--p"><a class="markup--anchor markup--p-anchor" href="https://coincentral.com/what-is-icon-icx/">Icon</a> — uses <a class="markup--anchor markup--p-anchor" href="https://www.theloop.co.kr/">loopchain</a> to connect blockchain-based communities around the world.</p>
<p class="graf graf--p graf-after--p"><a class="markup--anchor markup--p-anchor" href="https://nem.io/">Nem</a> — contract code is stored <em class="markup--em markup--p-em">outside</em> of the blockchain resulting in a lighter and faster network.</p>
<p class="graf graf--p graf-after--p graf--trailing">Ethereum Classic — a continuation of the original Ethereum blockchain (before it was <a class="markup--anchor markup--p-anchor" href="https://www.etherchain.org/hardForks">forked</a>)</p>
<h3 class="graf graf--p graf-after--p graf--trailing">Conclusion</h3>
<p class="graf graf--p graf-after--p graf--trailing">Ethereum is a rapidly growing blockchain protocol that allows people to not only transfer assests to each other, but to create decentralized applications that run securely on a distributed network of computers.</p>
<div class="section-divider">
<div class="contextual-links-region panel-pane pane-entity-field pane-node-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="contextual-links-region panel-pane pane-entity-field pane-node-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<p class="graf graf--li graf-after--li graf--trailing"><em>This article was produced in partnership with Holberton School and originally appeared on <a href="https://medium.com/@romalms10/big-o-more-like-big-o-m-g-ed24d302101f">Medium</a>.</em></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Reply



Forum Jump:


Users browsing this thread:
2 Guest(s)

Forum software by © MyBB Theme © iAndrew 2016