{"id":35836,"date":"2018-07-27T10:49:23","date_gmt":"2018-07-27T10:49:23","guid":{"rendered":"http:\/\/www.sickgaming.net\/blog\/2018\/07\/27\/what-is-ethereum\/"},"modified":"2018-07-27T10:49:23","modified_gmt":"2018-07-27T10:49:23","slug":"what-is-ethereum","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2018\/07\/27\/what-is-ethereum\/","title":{"rendered":"What is Ethereum?"},"content":{"rendered":"<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\u2019s 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>\n<h4 class=\"graf graf--h4 graf-after--p\">How does it\u00a0work?<\/h4>\n<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\u00a0<em class=\"markup--em markup--p-em\">nodes<\/em>.<\/p>\n<p class=\"graf graf--p graf-after--p\">Cryptography is a major part of blockchain technology. Mathematical encryption algorithms like\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.youtube.com\/watch?v=vgTtHV04xRI\">RSA<\/a>\u00a0and\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/blog.cloudflare.com\/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography\/\">ECDSA<\/a>\u00a0are used to generate public and private keys that are mathematically coupled. Public keys, or\u00a0<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\u00a0<em class=\"markup--em markup--p-em\">hashes<\/em>\u00a0and are usually a long string on hexadecimal symbols.<\/p>\n<div class=\"aspectRatioPlaceholder is-locked\">\n<p><img decoding=\"async\" alt=\"1*mjowAqqMPCvO25ptToWrag.png\" class=\"graf-image\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/07\/what-is-ethereum.png\" \/><\/p>\n<\/div>\n<p>Example of an RSA generated public\u00a0key<\/p>\n<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, \u201cgenesis\u201d, 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\u00a0<em class=\"markup--em markup--p-em\">consensus<\/em>.<\/p>\n<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\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/medium.com\/@chrshmmmr\/consensus-in-blockchain-systems-in-short-691fc7d1fefe\">his post<\/a>.<\/p>\n<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\u00a0<em class=\"markup--em markup--p-em\">immutable\u00a0<\/em>and\u00a0<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>\n<p>Source: andrefortuna.org<\/p>\n<h4 class=\"graf graf--h4 graf-after--figure\">Accounts<\/h4>\n<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\u00a0<\/em>is Ethereum\u2019s money). Alice needs Bob\u2019s 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>\n<p class=\"graf graf--p graf-after--p\">Ethereum has two types of accounts: accounts that user\u2019s control and\u00a0<em class=\"markup--em markup--p-em\">contracts<\/em>\u00a0(or \u201csmart contracts\u201d). Accounts that user\u2019s 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\u00a0contract.<\/p>\n<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>\n<p class=\"graf graf--p graf--startsWithDoubleQuote graf-after--p\">\u201cWhat do you mean,\u00a0<em class=\"markup--em markup--p-em\">inside<\/em>\u00a0the blockchain?\u201d<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">EVM<\/h4>\n<p class=\"graf graf--p graf-after--h4\">Ethereum has a Virtual Machine, called\u00a0<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\u00a0<em class=\"markup--em markup--p-em\">within<\/em>\u00a0a contract).<\/p>\n<p class=\"graf graf--p graf-after--p\">An example contract might look like this:<\/p>\n<pre class=\"graf graf--pre graf-after--p\">\nif (something happens): send 1,000 ETH to Bob (addr: 22982be234)\nelse if (something else happens): send 1,000 ETH to Alice (addr: bbe4203fe)\nelse: don't send any ETH<\/pre>\n<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\u2019s 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>\n<h4 class=\"graf graf--h4 graf-after--p\">Is it\u00a0free?<\/h4>\n<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\u00a0<em class=\"markup--em markup--p-em\">gas\u00a0<\/em>as a unit of measurement of how much something costs the Network. The price of\u00a0<em class=\"markup--em markup--p-em\">gas<\/em>\u00a0is voted on by the nodes and the fees user\u2019s pay in gas goes to the miners.<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">Miners<\/h4>\n<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>\n<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>\n<h4 class=\"graf graf--h4 graf-after--p\">What\u2019s inside a\u00a0block?<\/h4>\n<p class=\"graf graf--p graf-after--h4\">Within an Ethereum block is something called the\u00a0<em class=\"markup--em markup--p-em\">state\u00a0<\/em>and\u00a0<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>\n<ul class=\"postList\">\n<li class=\"graf graf--li graf-after--p\">ETH balance<\/li>\n<li class=\"graf graf--li graf-after--li\">nonce **<\/li>\n<li class=\"graf graf--li graf-after--li\">the contract\u2019s source code (if the account is a contract)<\/li>\n<li class=\"graf graf--li graf-after--li\">contract storage (database)<\/li>\n<\/ul>\n<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>\n<p class=\"graf graf--p graf-after--p\">Blocks also store history: records of previous transactions and receipts.<\/p>\n<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\u201315 per second. The protocol has adopted\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/Sharding-FAQ\">sharding<\/a>\u200a\u2014\u200aa technique that essentially breaks up the chain into smaller pieces but still aims to have the same level of security.<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">Transactions<\/h4>\n<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>\n<p class=\"graf graf--p graf-after--p\">But contracts don\u2019t always have to be about transferring ETH. Anyone can create an application with any rules by defining it as a contract.<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">Who is using Ethereum?<\/h4>\n<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>\n<p class=\"graf graf--p graf-after--p\">There are thousands of\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.stateofthedapps.com\/\">Ethereum-based projects<\/a>\u00a0being developed as we speak. Some more the most popular dapps are\u00a0games\u00a0(e.g\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.cryptokitties.co\/\">CryptoKitties<\/a>\u00a0and\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/cryptotulips.me\/\">CrptyoTulips<\/a>).<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">How is Ethereum different than\u00a0<a class=\"markup--anchor markup--h4-anchor\" href=\"https:\/\/bitcoin.org\/en\/\">bitcoin<\/a>?<\/h4>\n<p class=\"graf graf--p graf-after--h4\">Bitcoin is a blockchain technology where users are assigned a private key, linked with a\u00a0<em class=\"markup--em markup--p-em\">wallet<\/em>\u00a0that generates bitcoin addresses where people can send bitcoins to. It\u2019s all about the coins. It\u2019s a way to exchange money in an encrypted, decentralized environment.<\/p>\n<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>\n<p class=\"graf graf--p graf-after--p\">Bitcoin functions on\u00a0<em class=\"markup--em markup--p-em\">proof of work\u00a0<\/em>as a means of achieving consensus across the network. Whereas Ethereum uses\u00a0<em class=\"markup--em markup--p-em\">proof of stake.<\/em><\/p>\n<p class=\"graf graf--p graf-after--p\">Ethereum\u2019s creator is public (Vitalik Buterin). Bitcoin\u2019s is unknown (goes by the alias,\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/en.wikipedia.org\/wiki\/Satoshi_Nakamoto\">Satoshi Nakamoto<\/a>)<\/p>\n<h4 class=\"graf graf--h4 graf-after--p\">Other blockchains that do contracts<\/h4>\n<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>\n<p class=\"graf graf--p graf-after--p\"><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/neo.org\/\">Neo<\/a>\u200a\u2014\u200afaster transaction speeds, inability to fork, less energy use, has two tokens (NEO and GAS), will be quantum resistant.<\/p>\n<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>\u200a\u2014\u200auses\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.theloop.co.kr\/\">loopchain<\/a>\u00a0to connect blockchain-based communities around the world.<\/p>\n<p class=\"graf graf--p graf-after--p\"><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/nem.io\/\">Nem<\/a>\u200a\u2014\u200acontract code is stored\u00a0<em class=\"markup--em markup--p-em\">outside<\/em>\u00a0of the blockchain resulting in a lighter and faster network.<\/p>\n<p class=\"graf graf--p graf-after--p graf--trailing\">Ethereum Classic\u200a\u2014\u200aa continuation of the original Ethereum blockchain (before it was\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.etherchain.org\/hardForks\">forked<\/a>)<\/p>\n<h3 class=\"graf graf--p graf-after--p graf--trailing\">Conclusion<\/h3>\n<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>\n<div class=\"section-divider\">\n<div class=\"contextual-links-region panel-pane pane-entity-field pane-node-body\">\n<div class=\"field field-name-body field-type-text-with-summary field-label-hidden\">\n<div class=\"field-items\">\n<div class=\"field-item even\">\n<div class=\"section-content\">\n<div class=\"section-inner sectionLayout--insetColumn\">\n<div class=\"contextual-links-region panel-pane pane-entity-field pane-node-body\">\n<div class=\"field field-name-body field-type-text-with-summary field-label-hidden\">\n<div class=\"field-items\">\n<div class=\"field-item even\">\n<div class=\"section-content\">\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p class=\"graf graf--li graf-after--li graf--trailing\"><em>This article was produced in partnership with Holberton School and originally appeared on\u00a0<a href=\"https:\/\/medium.com\/@romalms10\/big-o-more-like-big-o-m-g-ed24d302101f\">Medium<\/a>.<\/em><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<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\u2019s 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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":35837,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[],"class_list":["post-35836","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux-freebsd-unix"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/35836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=35836"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/35836\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/35837"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=35836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=35836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=35836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}