From 0755ce78db76a0a7227c1166bfc4a23d05bab8f6 Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 7 Apr 2022 15:45:54 +0100 Subject: [PATCH 1/8] initial commit for updated history page --- src/content/history/bitcointalk_post.png | Bin 0 -> 269075 bytes src/content/history/index.md | 81 +++++++++++++++++++++-- 2 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 src/content/history/bitcointalk_post.png diff --git a/src/content/history/bitcointalk_post.png b/src/content/history/bitcointalk_post.png new file mode 100644 index 0000000000000000000000000000000000000000..cee30591414910c6665524d40aa163f11f55fe13 GIT binary patch literal 269075 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⁢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

@D`4JGJt`mY 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 literal 0 HcmV?d00001 diff --git a/src/content/history/index.md b/src/content/history/index.md index 87e28afe133..6d3572ffb46 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -1,5 +1,5 @@ --- -title: History and Forks of Ethereum +title: History of Ethereum description: A history of the Ethereum blockchain including major milestones, releases, and forks. lang: en sidebar: true @@ -8,7 +8,82 @@ sidebarDepth: 1 # The history of Ethereum {#the-history-of-ethereum} -A timeline of all the major milestones, forks, and updates to the Ethereum blockchain. +A timeline of protocol upgrades since Ethereum's inception is provided later on this page. First, the early history of Ethereum is explored in some detail, from Ethereum's inception to its first production release (Homestead). + +## Inception {#inception} + +Ethereum was initially described by Vitalik Buterin in late 2013 as a result of his research and work in the Bitcoin community. Shortly thereafter, Vitalik published the [Ethereum white paper](/whitepaper/whitepaper-pdf), where he described in detail the technical design and rationale for the Ethereum protocol and smart contracts architecture. In January 2014, Ethereum was formally announced by Vitalik at the The North American Bitcoin Conference in Miami, Florida, USA. + +![image](bitcointalk_post.png) +_Vitalik Buterin's announcement for the launch of Ethereum on [bitcointalk.org](https://bitcointalk.org/index.php?topic=428589.0)_ + +Around that time, Vitalik also started working with Dr. Gavin Wood. In April 2014, Gavin published the [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) that would serve as the technical specification for the Ethereum Virtual Machine (EVM). By following the detailed specification in the Yellow Paper, Ethereum clients were implemented in seven programming languages (C++, Go, Python, Java, JavaScript, Haskell, Rust) by 2016, some of which have since been deprecated. + +## The Ethereum Foundation and ether presale {#foundation-and-presale} + +In addition to developing the software for Ethereum, the ability to launch a new cryptocurrency and blockchain requires a massive bootstrapping effort in order to assemble the resources needed to get it up and running. To kickstart a large network of developers, miners, investors, and other stakeholders, Ethereum announced its plan to conduct a presale of ether tokens, the currency unit of Ethereum. The legal and financial complexities of raising funds through a presale led to the creation of several legal entities, including the Ethereum Foundation (Stiftung Ethereum) established June 2014 in Zug, Switzerland. + +Beginning in July 2014, Ethereum distributed the initial allocation of ether via a 42-day public ether presale, netting 31,591 bitcoins, worth $18,439,086 at that time, in exchange for about 60,102,216 ether. The results of the sale were initially used to pay back mounting legal debts and also for the months of developer effort that had yet to be compensated, and to finance the ongoing development of the Ethereum. + +- [Official announcement of the ether sale](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale) + +- [Slacknation ether sale report](https://medium.com/@slacknation/overview-ethereum-s-initial-public-sale-563c05e95501) + +- [Presale T&Cs](https://www.cryptocompare.com/media/1383735/pdfs-termsandconditionsoftheethereumgenesissale.pdf) + +## ETH/DEV and Ethereum development {#development} + +Following the successful ether presale, Ethereum development was formalized under a non-for-profit organization called ETH DEV, which managed the development of Ethereum under contract from Ethereum Suisse – with Vitalik Buterin, Gavin Wood, and Jeffrey Wilcke as the 3 directors of the organization. Developer interest in Ethereum grew steadily throughout 2014 and the ETH DEV team delivered a series of proof-of-concept (PoC) releases for the development community to evaluate. Frequent posts by ETH DEV team on the the Ethereum blog also kept the excitement and momentum around Ethereum going. Increasing traffic and growing user-base on both the Ethereum forum and the ethereum subreddit testified that the platform is attracting a fast-growing and devoted developer community. This trend has been continuing to this very day. + +## DEVCON-0 {#devcon-0} + +In November 2014, ETH DEV organized the DEVCON-0 event, which brought together Ethereum developers from around the world to Berlin to meet and discuss a diverse range of Ethereum technology topics. Several of the presentations and sessions at DEVCON-0 would later drive important initiatives to make Ethereum more reliable, more secure, and more scalable. Overall, the event galvanized developers as they continued to work towards the launch of Ethereum. + +[DEVCON-0 talks youtube playlist](https://www.youtube.com/watch?v=_BvvUlKDqp0&list=PLJqWcTqh_zKEjpSej3ddtDOKPRGl_7MhS) +[DEVCON-0 reddit post](https://www.reddit.com/r/ethereum/comments/2nle7m/community_update_whats_going_on_devcon0/) +[Gav’s DEV update mentioning DEVCON-0](https://blog.ethereum.org/2014/11/18/gavs-d%CE%BEv-update-iii/) +[DEVcon-0 recap blog post](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/) + +## Olympic testnet, bug bounty and security audit {#olympic-testnet} + +Throughout 2014 and 2015 development went through a series of proof of concept releases leading to the 9th POC open testnet, called Olympic. The developer community was invited to test the limits of the network and a substantial prize fund was allocated to award those holding various records or having success in breaking the system in some way or other. The rewards were announced officially a month after the live release. + +In early 2015, an Ethereum Bounty Program was launched, offering BTC rewards for finding vulnerabilities in any part of the Ethereum software stack. This has undoubtedly contributed to the reliability and security of Ethereum and the confidence of the Ethereum community in the technology. The bounty program is currently still active. + +The Ethereum security audit began at the end of 2014 and continued through the first half of 2015. Ethereum engaged multiple third party software security firms to conduct an end-to-end audit of all protocol-critical components (Ethereum VM, networking, Proof of Work). The audits uncovered security issues that were addressed and tested again and as a result ultimately led to a more secure platform. + +[Olympic testnet prerelease](https://blog.ethereum.org/2015/05/09/olympic-frontier-pre-release/) +[Olympic rewards announced](https://blog.ethereum.org/2015/08/26/olympic-rewards-announced/) +[Bug bounty program launch](https://blog.ethereum.org/2015/03/20/juttas-update-bug-bounty-program-security-audit/) +[Least Authority audit blogpost](https://blog.ethereum.org/2015/07/07/know-ethereum-secure/) + +## The Ethereum Frontier launch {#frontier-launch} + +The Ethereum Frontier network launched on July 30th, 2015, and developers began writing smart contracts and decentralized apps to deploy on the live Ethereum network. In addition, miners began to join the Ethereum network to help secure the Ethereum blockchain and earn ether from mining blocks. Even though the Frontier release is the first milestone in the Ethereum project and was intended for use by developers as a beta version, it turned out to be more capable and reliable than anyone expected, and developers rushed in to build solutions and improve the Ethereum ecosystem. + +[Original announcement of the release scheme by Vinay Gupta](https://blog.ethereum.org/2015/03/03/ethereum-launch-process/) +[Frontier is coming - Frontier launch announcement by Stephan Tual](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) +[Frontier launch final steps - Follow-up post to announcement](https://blog.ethereum.org/2015/07/27/final-steps/) +[Ethereum goes live with Frontier launch](https://blog.ethereum.org/2015/07/30/ethereum-launches/) +[The frontier website](https://web.archive.org/web/20160207033817/https://ethereum.org/) + +## DEVCON-1 {#devcon-1} + +The second developers’ conference DEVCON-1 took place in the city of London at the beginning of November 2015. The 5-day event featured more than 100 presentations, panel discussions and lightning talks, attracted more than 400 participants, a mix of developers, entrepreneurs, thinkers, and business executives. The talks were all recorded and are freely available + +The presence of large companies like UBS, IBM and Microsoft clearly indicated enterprise interest in the technology. Microsoft announced that it would offer Ethereum on its new Blockchain as a Service offering on the Microsoft Azure cloud platform. In conjunction with DEVCON-1, this announcement will be remembered as the moment when blockchain technology became mainstream, with Ethereum at the center of it. + +[DEVCON-1 talks Youtube playlist](https://www.youtube.com/playlist?list=PLJqWcTqh_zKHQUFX4IaVjWjfT2tbS4NVk) + +## The Homestead Release {#homestead-release} + +Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. + +At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumnerated in the Timeline section below. There will also be mroe changes to ethereum in the future. The [merge](/upgrades/merge), expected in summer 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). + +# Upgrade Timeline {#upgrade-timeline} + +Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/). @@ -20,8 +95,6 @@ These rule changes may create a temporary split in the network. New blocks could -Looking for future protocol upgrades? [Learn about upcoming upgrades to Ethereum](/upgrades/). - ## 2021 {#2021} From 9034e77e9fe930ca982547623d6462fa4517f5d9 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 12 Apr 2022 10:34:06 +0100 Subject: [PATCH 2/8] split content across two pages --- src/content/history/index.md | 448 +---------------- src/content/history/network-upgrades/index.md | 449 ++++++++++++++++++ 2 files changed, 450 insertions(+), 447 deletions(-) create mode 100644 src/content/history/network-upgrades/index.md diff --git a/src/content/history/index.md b/src/content/history/index.md index 6d3572ffb46..b37f1a8f11e 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -6,10 +6,6 @@ sidebar: true sidebarDepth: 1 --- -# The history of Ethereum {#the-history-of-ethereum} - -A timeline of protocol upgrades since Ethereum's inception is provided later on this page. First, the early history of Ethereum is explored in some detail, from Ethereum's inception to its first production release (Homestead). - ## Inception {#inception} Ethereum was initially described by Vitalik Buterin in late 2013 as a result of his research and work in the Bitcoin community. Shortly thereafter, Vitalik published the [Ethereum white paper](/whitepaper/whitepaper-pdf), where he described in detail the technical design and rationale for the Ethereum protocol and smart contracts architecture. In January 2014, Ethereum was formally announced by Vitalik at the The North American Bitcoin Conference in Miami, Florida, USA. @@ -79,446 +75,4 @@ The presence of large companies like UBS, IBM and Microsoft clearly indicated en Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. -At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumnerated in the Timeline section below. There will also be mroe changes to ethereum in the future. The [merge](/upgrades/merge), expected in summer 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). - -# Upgrade Timeline {#upgrade-timeline} - -Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/). - - - -Forks are when major technical upgrades or changes need to be made to the network – they typically stem from [Ethereum Improvement Proposals (EIPs)](/eips/) and change the "rules" of the protocol. - -When upgrades are needed in traditional, centrally-controlled software, the company will just publish a new version for the end-user. Blockchains work differently because there is no central ownership. [Ethereum clients](/developers/docs/nodes-and-clients/) must update their software to implement the new fork rules. Plus block creators (miners in a proof-of-work world, validators in a proof-of-stake world) and nodes must create blocks and validate against the new rules. [More on consensus mechanisms](/developers/docs/consensus-mechanisms/) - -These rule changes may create a temporary split in the network. New blocks could be produced according to the new rules or the old ones. Forks are usually agreed upon ahead of time so that clients adopt the changes in unison and the fork with the upgrades becomes the main chain. However, in rare cases, disagreements over forks can cause the network to permanently split – most notably the creation of Ethereum Classic with the [DAO fork](#dao-fork). - - - - - -## 2021 {#2021} - -### Arrow Glacier {#arrow-glacier} - -Dec-09-2021 07:55:23 PM +UTC
-Block number:
13,773,000
-ETH price: $4111 USD
- ethereum.org on waybackmachine - -#### Summary {#arrow-glacier-summary} - -The Arrow Glacier network upgrade pushed back the [difficulty bomb](/glossary/#difficulty-bomb) by several months. This is the only change introduced in this upgrade, and is similar in nature to the [Muir Glacier](#muir-glacier) upgrade. Similar changes have been performed on the [Byzantium](#byzantium), [Constantinople](#constantinople) and [London](#london) network upgrades. - -- [EF Blog - Arrow Glacier Upgrade Announcement](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) -- [Ethereum Cat Herders - Ethereum Arrow Glacier Upgrade](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) - - - -- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _delays the difficulty bomb until June 2022_ - - - -#### Node operators {#arrow-glacier-node-operators} - -Be sure to upgrade your client software to the latest version before December 5, 2021 to account for variable block times. This will help avoid having your client sync to a pre-fork chain, resulting in the inability to send funds or properly verify transactions. - ---- - -### Altair {#altair} - -Oct-27-2021 10:56:23 AM +UTC
-Epoch number: 74,240
-ETH price: $4024 USD
- ethereum.org on waybackmachine - -#### Summary {#altair-summary} - -The Altair upgrade was the first scheduled upgrade for the [Beacon Chain](/upgrades/beacon-chain). It added support for "sync committees"—enabling light clients, and bringing validator inactivity and slashing penalties up to their full values. - -- [Read the Altair upgrade specification](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) - -#### Fun fact! {#altair-fun-fact} - -Altair was the first major network upgrade that had an exact rollout time. Every upgrade prior had been based on a declared block number on the proof-of-work chain, where block times vary. The Beacon Chain does not require solving for proof-of-work, and instead works on a time-based epoch system consisting of 32 twelve-second "slots" of time where validators can propose blocks. This is why we knew exactly when we would hit epoch 74,240 and Altair became live! - -- [Beaconcha.in Glossary - Slots](https://kb.beaconcha.in/glossary#slots) - ---- - -### London {#london} - - Aug-05-2021 12:33:42 PM +UTC
- Block number: 12,965,000
- ETH price: $2621 USD
- ethereum.org on waybackmachine - -#### Summary {#london-summary} - -The London upgrade introduced [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), which reformed the transaction fee market, along with changes to how gas refunds are handled and the [Ice Age](/glossary/#ice-age) schedule. - -- [Are you a dApp developer? Be sure to upgrade your libraries and tooling.](https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/ecosystem-readiness.md) -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) - - - -- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _improves the transaction fee market_ -- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _returns the `BASEFEE` from a block_ -- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _reduces gas refunds for EVM operations_ -- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _prevents deploying contracts starting with `0xEF`_ -- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _delays the Ice Age until December 2021_ - - - ---- - -### Berlin {#berlin} - - Apr-15-2021 10:07:03 AM +UTC
- Block number: 12,244,000
- ETH price: $2454 USD
- ethereum.org on waybackmachine - -#### Summary {#berlin-summary} - -The Berlin upgrade optimized gas cost for certain EVM actions, and increases support for multiple transaction types. - -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) - - - -- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _lowers ModExp gas cost_ -- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _enables easier support for multiple transaction types_ -- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _gas cost increases for state access opcodes_ -- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _adds optional access lists_ - - - - - -## 2020 {#2020} - -### Beacon Chain genesis {#beacon-chain-genesis} - - Dec-01-2020 12:00:35 PM +UTC
- Beacon Chain block number: 1
- ETH price: $586.23 USD
- ethereum.org on waybackmachine - -#### Summary {#beacon-chain-genesis-summary} - -The [Beacon Chain](/upgrades/beacon-chain/) needed 16384 deposits of 32 staked ETH to ship securely. This happened on November 27, meaning the Beacon Chain started producing blocks on December 1, 2020. This is an important first step in achieving the [Ethereum vision](/upgrades/vision/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) - - - The Beacon Chain - - ---- - -### Staking deposit contract deployed {#staking-deposit-contract} - - Oct-14-2020 09:22:52 AM +UTC
- Block number: 11,052,984
- ETH price: $379.04 USD
- ethereum.org on waybackmachine - -#### Summary {#deposit-contract-summary} - -The staking deposit contract introduced [staking](/glossary/#staking) to the Ethereum ecosystem. Although a [Mainnet](/glossary/#mainnet) contract, it had a direct impact on the timeline for launching the [Beacon Chain](/upgrades/beacon-chain/), an important [Ethereum upgrade](/upgrades/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) - - - Staking - - ---- - -### Muir Glacier {#muir-glacier} - - Jan-02-2020 08:30:49 AM +UTC
- Block number: 9,200,000
- ETH price: $127.18 USD
- ethereum.org on waybackmachine - -#### Summary {#muir-glacier-summary} - -The Muir Glacier fork introduced a delay to the [difficulty bomb](/glossary/#difficulty-bomb). Increases in block difficulty of the [proof-of-work](/developers/docs/consensus-mechanisms/pow/) consensus mechanism threatened to degrade the usability of Ethereum by increasing wait times for sending transactions and using dapps. - -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) - - - -- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _delays the difficulty bomb for another 4,000,000 blocks, or ~611 days._ - - - - - -## 2019 {#2019} - -### Istanbul {#istanbul} - - Dec-08-2019 12:25:09 AM +UTC
- Block number: 9,069,000
- ETH price: $151.06 USD
- ethereum.org on waybackmachine - -#### Summary {#istanbul-summary} - -The Istanbul fork: - -- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). -- Improved denial-of-service attack resilience. -- Made [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling) solutions based on SNARKs and STARKs more performant. -- Enabled Ethereum and Zcash to interoperate. -- Allowed contracts to introduce more creative functions. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) - - - -- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _allow Ethereum to work with privacy-preserving currency like Zcash._ -- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _cheaper cryptography to improve [gas](/glossary/#gas) costs._ -- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _protects Ethereum against replay attacks by adding `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ -- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _optimising opcode gas prices based on consumption._ -- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _reduces the cost of CallData to allow more data in blocks – good for [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling)._ -- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _other opcode gas price alterations._ - - - ---- - -### Constantinople {#constantinople} - - Feb-28-2019 07:52:04 PM +UTC
- Block number: 7,280,000
- ETH price: $136.29 USD
- ethereum.org on waybackmachine - -#### Summary {#constantinople-summary} - -The Constantinople fork: - -- Ensured the blockchain didn't freeze before [proof-of-stake was implemented](#beacon-chain-genesis). -- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). -- Added the ability to interact with addresses that haven't been created yet. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) - - - -- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _optimises cost of certain on-chain actions._ -- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _allows you to interact with addresses that have yet to be created._ -- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _optimises cost of certain on-chain actions._ -- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _makes sure the blockchain doesn't freeze before proof-of-stake._ - - - - - -## 2017 {#2017} - -### Byzantium {#byzantium} - - Oct-16-2017 05:22:11 AM +UTC
- Block number: 4,370,000
- ETH price: $334.23 USD
- ethereum.org on waybackmachine - -#### Summary {#byzantium-summary} - -The Byzantium fork: - -- Reduced block [mining](/developers/docs/consensus-mechanisms/pow/mining/) rewards from 5 to 3 ETH. -- Delayed the [difficulty bomb](/glossary/#difficulty-bomb) by a year. -- Added ability to make non-state-changing calls to other contracts. -- Added certain cryptography methods to allow for [layer 2 scaling](/developers/docs/scaling/#layer-2-scaling). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) - - - -- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _adds `REVERT` opcode._ -- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _status field added to transaction receipts to indicate success or failure._ -- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _enables RSA signature verification._ -- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _adds support for variable length return values._ -- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _adds `STATICCALL` opcode, allowing non-state-changing calls to other contracts._ -- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _changes difficulty adjustment formula._ -- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _delays [difficulty bomb](/glossary/#difficulty-bomb) by 1 year and reduces block reward from 5 to 3 ETH._ - - - - - -## 2016 {#2016} - -### Spurious Dragon {#spurious-dragon} - - Nov-22-2016 04:15:44 PM +UTC
- Block number: 2,675,000
- ETH price: $9.84 USD
- ethereum.org on waybackmachine - -#### Summary {#spurious-dragon-summary} - -The Spurious Dragon fork was the second response to the denial of service (DoS) attacks on the network (September/October 2016) including: - -- tuning opcode pricing to prevent future attacks on the network. -- enabling “debloat” of the blockchain state. -- adding replay attack protection. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) - - - -- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _prevents transactions from one Ethereum chain from being rebroadcasted on an alternative chain, for example a testnet transaction being replayed on the main Ethereum chain._ -- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _adjusts prices of `EXP` opcode – makes it more difficult to slow down the network via computationally expensive contract operations._ -- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _allows for removal of empty accounts added via the DOS attacks._ -- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _changes the maximum code size that a contract on the blockchain can have – to 24576 bytes._ - - - ---- - -### Tangerine whistle {#tangerine-whistle} - - Oct-18-2016 01:19:31 PM +UTC
- Block number: 2,463,000
- ETH price: $12.50 USD
- ethereum.org on waybackmachine - -#### Summary {#tangerine-whistle-summary} - -The Tangerine Whistle fork was the first response to the denial of service (DoS) attacks on the network (September/October 2016) including: - -- addressing urgent network health issues concerning underpriced operation codes. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) - - - -- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _increases gas costs of opcodes that can be used in spam attacks._ -- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _reduces state size by removing a large number of empty accounts that were put in the state at very low cost due to flaws in earlier versions of the Ethereum protocol._ - - - ---- - -### DAO fork {#dao-fork} - - Jul-20-2016 01:20:40 PM +UTC
- Block number: 1,920,000
- ETH price: $12.54 USD
- ethereum.org on waybackmachine - -#### Summary {#dao-fork-summary} - -The DAO fork was in response to the [2016 DAO attack](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/) where an insecure [DAO](/glossary/#dao) contract was drained of over 3.6 million ETH in a hack. The fork moved the funds from the faulty contract to a [new contract](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) with a single function: withdraw. Anyone who lost funds could withdraw 1 ETH for every 100 DAO tokens in their wallets. - -This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes. - -Some miners refused to fork because the DAO incident wasn't a defect in the protocol. They went on to form [Ethereum Classic](https://ethereumclassic.org/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) - ---- - -### Homestead {#homestead} - - Mar-14-2016 06:49:53 PM +UTC
- Block number: 1,150,000
- ETH price: $12.50 USD
- ethereum.org on waybackmachine - -#### Summary {#homestead-summary} - -The Homestead fork that looked to the future. It included several protocol changes and a networking change that gave Ethereum the ability to do further network upgrades. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/02/29/homestead-release/) - - - -- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _makes edits to contract creation process._ -- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _adds new opcode: `DELEGATECALL`_ -- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _introduces devp2p forward compatibility requirements_ - - - - - -## 2015 {#2015} - -### Frontier thawing {#frontier-thawing} - - Sep-07-2015 09:33:09 PM +UTC
- Block number: 200,000
- ETH price: $1.24 USD
- ethereum.org on waybackmachine - -#### Summary {#frontier-thawing-summary} - -The frontier thawing fork lifted the 5,000 [gas](/glossary/#gas) limit per [block](/glossary/#block) and set the default gas price to 51 [gwei](/glossary/#gwei). This allowed for transactions – transactions require 21,000 gas. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) - ---- - -### Frontier {#frontier} - - Jul-30-2015 03:26:13 PM +UTC
- Block number: 0
- ETH price: N/A
- ethereum.org on waybackmachine - -#### Summary {#frontier-summary} - -Frontier was a live, but barebone implementation of the Ethereum project. It followed the successful Olympic testing phase. It was intended for technical users, specifically developers. [Blocks](/glossary/#block) had a [gas](/glossary/#gas) limit of 5,000. This ‘thawing’ period enabled miners to start their operations and for early adopters to install their clients without having to ‘rush’. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) - - - -## 2014 {#2014} - -### Ether sale {#ether-sale} - - July 22 - September 02, 2014
- ethereum.org on waybackmachine - -Ether officially went on sale for 42 days. You could buy it with BTC. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) - ---- - -### Yellowpaper released {#yellowpaper} - - April 01, 2014
- ethereum.org on waybackmachine - -The Yellow Paper, authored by Dr. Gavin Wood, is a technical definition of the Ethereum protocol. - -[View the Yellow Paper](https://github.com/ethereum/yellowpaper) - - - -## 2013 {#2013} - -### Whitepaper released {#whitepaper} - - November 27, 2013
- ethereum.org on waybackmachine - -The introductory paper, published in 2013 by Vitalik Buterin, the founder of Ethereum, before the project's launch in 2015. - - - Whitepaper - +At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumnerated on our [timeline page](/history/network-upgrades). There will also be more changes to ethereum in the future. The [merge](/upgrades/merge), expected in summer 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). diff --git a/src/content/history/network-upgrades/index.md b/src/content/history/network-upgrades/index.md new file mode 100644 index 00000000000..4cf1b16d31b --- /dev/null +++ b/src/content/history/network-upgrades/index.md @@ -0,0 +1,449 @@ +--- +title: Upgrade Timeline +description: An Ethereum network upgrade timeline +lang: en +sidebar: true +sidebarDepth: 1 +--- + +# Upgrade Timeline + +Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/). + + + +Forks are when major technical upgrades or changes need to be made to the network – they typically stem from [Ethereum Improvement Proposals (EIPs)](/eips/) and change the "rules" of the protocol. + +When upgrades are needed in traditional, centrally-controlled software, the company will just publish a new version for the end-user. Blockchains work differently because there is no central ownership. [Ethereum clients](/developers/docs/nodes-and-clients/) must update their software to implement the new fork rules. Plus block creators (miners in a proof-of-work world, validators in a proof-of-stake world) and nodes must create blocks and validate against the new rules. [More on consensus mechanisms](/developers/docs/consensus-mechanisms/) + +These rule changes may create a temporary split in the network. New blocks could be produced according to the new rules or the old ones. Forks are usually agreed upon ahead of time so that clients adopt the changes in unison and the fork with the upgrades becomes the main chain. However, in rare cases, disagreements over forks can cause the network to permanently split – most notably the creation of Ethereum Classic with the [DAO fork](#dao-fork). + + + + + +## 2021 {#2021} + +### Arrow Glacier {#arrow-glacier} + +Dec-09-2021 07:55:23 PM +UTC
+Block number: 13,773,000
+ETH price: $4111 USD
+ ethereum.org on waybackmachine + +#### Summary {#arrow-glacier-summary} + +The Arrow Glacier network upgrade pushed back the [difficulty bomb](/glossary/#difficulty-bomb) by several months. This is the only change introduced in this upgrade, and is similar in nature to the [Muir Glacier](#muir-glacier) upgrade. Similar changes have been performed on the [Byzantium](#byzantium), [Constantinople](#constantinople) and [London](#london) network upgrades. + +- [EF Blog - Arrow Glacier Upgrade Announcement](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) +- [Ethereum Cat Herders - Ethereum Arrow Glacier Upgrade](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) + + + +- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _delays the difficulty bomb until June 2022_ + + + +#### Node operators {#arrow-glacier-node-operators} + +Be sure to upgrade your client software to the latest version before December 5, 2021 to account for variable block times. This will help avoid having your client sync to a pre-fork chain, resulting in the inability to send funds or properly verify transactions. + +--- + +### Altair {#altair} + +Oct-27-2021 10:56:23 AM +UTC
+Epoch number: 74,240
+ETH price: $4024 USD
+ ethereum.org on waybackmachine + +#### Summary {#altair-summary} + +The Altair upgrade was the first scheduled upgrade for the [Beacon Chain](/upgrades/beacon-chain). It added support for "sync committees"—enabling light clients, and bringing validator inactivity and slashing penalties up to their full values. + +- [Read the Altair upgrade specification](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) + +#### Fun fact! {#altair-fun-fact} + +Altair was the first major network upgrade that had an exact rollout time. Every upgrade prior had been based on a declared block number on the proof-of-work chain, where block times vary. The Beacon Chain does not require solving for proof-of-work, and instead works on a time-based epoch system consisting of 32 twelve-second "slots" of time where validators can propose blocks. This is why we knew exactly when we would hit epoch 74,240 and Altair became live! + +- [Beaconcha.in Glossary - Slots](https://kb.beaconcha.in/glossary#slots) + +--- + +### London {#london} + + Aug-05-2021 12:33:42 PM +UTC
+ Block number: 12,965,000
+ ETH price: $2621 USD
+ ethereum.org on waybackmachine + +#### Summary {#london-summary} + +The London upgrade introduced [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), which reformed the transaction fee market, along with changes to how gas refunds are handled and the [Ice Age](/glossary/#ice-age) schedule. + +- [Are you a dApp developer? Be sure to upgrade your libraries and tooling.](https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/ecosystem-readiness.md) +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) + + + +- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _improves the transaction fee market_ +- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _returns the `BASEFEE` from a block_ +- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _reduces gas refunds for EVM operations_ +- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _prevents deploying contracts starting with `0xEF`_ +- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _delays the Ice Age until December 2021_ + + + +--- + +### Berlin {#berlin} + + Apr-15-2021 10:07:03 AM +UTC
+ Block number: 12,244,000
+ ETH price: $2454 USD
+ ethereum.org on waybackmachine + +#### Summary {#berlin-summary} + +The Berlin upgrade optimized gas cost for certain EVM actions, and increases support for multiple transaction types. + +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) + + + +- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _lowers ModExp gas cost_ +- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _enables easier support for multiple transaction types_ +- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _gas cost increases for state access opcodes_ +- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _adds optional access lists_ + + + + + +## 2020 {#2020} + +### Beacon Chain genesis {#beacon-chain-genesis} + + Dec-01-2020 12:00:35 PM +UTC
+ Beacon Chain block number: 1
+ ETH price: $586.23 USD
+ ethereum.org on waybackmachine + +#### Summary {#beacon-chain-genesis-summary} + +The [Beacon Chain](/upgrades/beacon-chain/) needed 16384 deposits of 32 staked ETH to ship securely. This happened on November 27, meaning the Beacon Chain started producing blocks on December 1, 2020. This is an important first step in achieving the [Ethereum vision](/upgrades/vision/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) + + + The Beacon Chain + + +--- + +### Staking deposit contract deployed {#staking-deposit-contract} + + Oct-14-2020 09:22:52 AM +UTC
+ Block number: 11,052,984
+ ETH price: $379.04 USD
+ ethereum.org on waybackmachine + +#### Summary {#deposit-contract-summary} + +The staking deposit contract introduced [staking](/glossary/#staking) to the Ethereum ecosystem. Although a [Mainnet](/glossary/#mainnet) contract, it had a direct impact on the timeline for launching the [Beacon Chain](/upgrades/beacon-chain/), an important [Ethereum upgrade](/upgrades/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) + + + Staking + + +--- + +### Muir Glacier {#muir-glacier} + + Jan-02-2020 08:30:49 AM +UTC
+ Block number: 9,200,000
+ ETH price: $127.18 USD
+ ethereum.org on waybackmachine + +#### Summary {#muir-glacier-summary} + +The Muir Glacier fork introduced a delay to the [difficulty bomb](/glossary/#difficulty-bomb). Increases in block difficulty of the [proof-of-work](/developers/docs/consensus-mechanisms/pow/) consensus mechanism threatened to degrade the usability of Ethereum by increasing wait times for sending transactions and using dapps. + +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) + + + +- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _delays the difficulty bomb for another 4,000,000 blocks, or ~611 days._ + + + + + +## 2019 {#2019} + +### Istanbul {#istanbul} + + Dec-08-2019 12:25:09 AM +UTC
+ Block number: 9,069,000
+ ETH price: $151.06 USD
+ ethereum.org on waybackmachine + +#### Summary {#istanbul-summary} + +The Istanbul fork: + +- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Improved denial-of-service attack resilience. +- Made [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling) solutions based on SNARKs and STARKs more performant. +- Enabled Ethereum and Zcash to interoperate. +- Allowed contracts to introduce more creative functions. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) + + + +- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _allow Ethereum to work with privacy-preserving currency like Zcash._ +- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _cheaper cryptography to improve [gas](/glossary/#gas) costs._ +- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _protects Ethereum against replay attacks by adding `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ +- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _optimising opcode gas prices based on consumption._ +- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _reduces the cost of CallData to allow more data in blocks – good for [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling)._ +- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _other opcode gas price alterations._ + + + +--- + +### Constantinople {#constantinople} + + Feb-28-2019 07:52:04 PM +UTC
+ Block number: 7,280,000
+ ETH price: $136.29 USD
+ ethereum.org on waybackmachine + +#### Summary {#constantinople-summary} + +The Constantinople fork: + +- Ensured the blockchain didn't freeze before [proof-of-stake was implemented](#beacon-chain-genesis). +- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Added the ability to interact with addresses that haven't been created yet. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) + + + +- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _optimises cost of certain on-chain actions._ +- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _allows you to interact with addresses that have yet to be created._ +- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _optimises cost of certain on-chain actions._ +- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _makes sure the blockchain doesn't freeze before proof-of-stake._ + + + + + +## 2017 {#2017} + +### Byzantium {#byzantium} + + Oct-16-2017 05:22:11 AM +UTC
+ Block number: 4,370,000
+ ETH price: $334.23 USD
+ ethereum.org on waybackmachine + +#### Summary {#byzantium-summary} + +The Byzantium fork: + +- Reduced block [mining](/developers/docs/consensus-mechanisms/pow/mining/) rewards from 5 to 3 ETH. +- Delayed the [difficulty bomb](/glossary/#difficulty-bomb) by a year. +- Added ability to make non-state-changing calls to other contracts. +- Added certain cryptography methods to allow for [layer 2 scaling](/developers/docs/scaling/#layer-2-scaling). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) + + + +- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _adds `REVERT` opcode._ +- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _status field added to transaction receipts to indicate success or failure._ +- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ +- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ +- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _enables RSA signature verification._ +- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _adds support for variable length return values._ +- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _adds `STATICCALL` opcode, allowing non-state-changing calls to other contracts._ +- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _changes difficulty adjustment formula._ +- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _delays [difficulty bomb](/glossary/#difficulty-bomb) by 1 year and reduces block reward from 5 to 3 ETH._ + + + + + +## 2016 {#2016} + +### Spurious Dragon {#spurious-dragon} + + Nov-22-2016 04:15:44 PM +UTC
+ Block number: 2,675,000
+ ETH price: $9.84 USD
+ ethereum.org on waybackmachine + +#### Summary {#spurious-dragon-summary} + +The Spurious Dragon fork was the second response to the denial of service (DoS) attacks on the network (September/October 2016) including: + +- tuning opcode pricing to prevent future attacks on the network. +- enabling “debloat” of the blockchain state. +- adding replay attack protection. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) + + + +- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _prevents transactions from one Ethereum chain from being rebroadcasted on an alternative chain, for example a testnet transaction being replayed on the main Ethereum chain._ +- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _adjusts prices of `EXP` opcode – makes it more difficult to slow down the network via computationally expensive contract operations._ +- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _allows for removal of empty accounts added via the DOS attacks._ +- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _changes the maximum code size that a contract on the blockchain can have – to 24576 bytes._ + + + +--- + +### Tangerine whistle {#tangerine-whistle} + + Oct-18-2016 01:19:31 PM +UTC
+ Block number: 2,463,000
+ ETH price: $12.50 USD
+ ethereum.org on waybackmachine + +#### Summary {#tangerine-whistle-summary} + +The Tangerine Whistle fork was the first response to the denial of service (DoS) attacks on the network (September/October 2016) including: + +- addressing urgent network health issues concerning underpriced operation codes. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) + + + +- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _increases gas costs of opcodes that can be used in spam attacks._ +- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _reduces state size by removing a large number of empty accounts that were put in the state at very low cost due to flaws in earlier versions of the Ethereum protocol._ + + + +--- + +### DAO fork {#dao-fork} + + Jul-20-2016 01:20:40 PM +UTC
+ Block number: 1,920,000
+ ETH price: $12.54 USD
+ ethereum.org on waybackmachine + +#### Summary {#dao-fork-summary} + +The DAO fork was in response to the [2016 DAO attack](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/) where an insecure [DAO](/glossary/#dao) contract was drained of over 3.6 million ETH in a hack. The fork moved the funds from the faulty contract to a [new contract](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) with a single function: withdraw. Anyone who lost funds could withdraw 1 ETH for every 100 DAO tokens in their wallets. + +This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes. + +Some miners refused to fork because the DAO incident wasn't a defect in the protocol. They went on to form [Ethereum Classic](https://ethereumclassic.org/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) + +--- + +### Homestead {#homestead} + + Mar-14-2016 06:49:53 PM +UTC
+ Block number: 1,150,000
+ ETH price: $12.50 USD
+ ethereum.org on waybackmachine + +#### Summary {#homestead-summary} + +The Homestead fork that looked to the future. It included several protocol changes and a networking change that gave Ethereum the ability to do further network upgrades. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/02/29/homestead-release/) + + + +- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _makes edits to contract creation process._ +- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _adds new opcode: `DELEGATECALL`_ +- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _introduces devp2p forward compatibility requirements_ + + + + + +## 2015 {#2015} + +### Frontier thawing {#frontier-thawing} + + Sep-07-2015 09:33:09 PM +UTC
+ Block number: 200,000
+ ETH price: $1.24 USD
+ ethereum.org on waybackmachine + +#### Summary {#frontier-thawing-summary} + +The frontier thawing fork lifted the 5,000 [gas](/glossary/#gas) limit per [block](/glossary/#block) and set the default gas price to 51 [gwei](/glossary/#gwei). This allowed for transactions – transactions require 21,000 gas. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) + +--- + +### Frontier {#frontier} + + Jul-30-2015 03:26:13 PM +UTC
+ Block number: 0
+ ETH price: N/A
+ ethereum.org on waybackmachine + +#### Summary {#frontier-summary} + +Frontier was a live, but barebone implementation of the Ethereum project. It followed the successful Olympic testing phase. It was intended for technical users, specifically developers. [Blocks](/glossary/#block) had a [gas](/glossary/#gas) limit of 5,000. This ‘thawing’ period enabled miners to start their operations and for early adopters to install their clients without having to ‘rush’. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) + + + +## 2014 {#2014} + +### Ether sale {#ether-sale} + + July 22 - September 02, 2014
+ ethereum.org on waybackmachine + +Ether officially went on sale for 42 days. You could buy it with BTC. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) + +--- + +### Yellowpaper released {#yellowpaper} + + April 01, 2014
+ ethereum.org on waybackmachine + +The Yellow Paper, authored by Dr. Gavin Wood, is a technical definition of the Ethereum protocol. + +[View the Yellow Paper](https://github.com/ethereum/yellowpaper) + + + +## 2013 {#2013} + +### Whitepaper released {#whitepaper} + + November 27, 2013
+ ethereum.org on waybackmachine + +The introductory paper, published in 2013 by Vitalik Buterin, the founder of Ethereum, before the project's launch in 2015. + + + Whitepaper + From 11976862ac7de11b0a699c9cac5d0a8b090c1a42 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 4 May 2022 14:31:08 +0100 Subject: [PATCH 3/8] add design rationale page --- src/content/history/design-rationale/index.md | 227 ++++++++++++++++++ src/content/history/index.md | 2 + 2 files changed, 229 insertions(+) create mode 100644 src/content/history/design-rationale/index.md diff --git a/src/content/history/design-rationale/index.md b/src/content/history/design-rationale/index.md new file mode 100644 index 00000000000..ac0da049d56 --- /dev/null +++ b/src/content/history/design-rationale/index.md @@ -0,0 +1,227 @@ +--- +title: History of Ethereum +description: A history of the Ethereum blockchain including major milestones, releases, and forks. +lang: en +sidebar: true +sidebarDepth: 1 +--- + +**_This page contains a direct, unaltered migration of material from the now deprecated Ethereum Wiki. It is included here for historical interest and to preserve technical information about Ethereum from circa 2018 _** + +Although Ethereum borrows many ideas that have already been tried and tested for half a decade in older cryptocurrencies like Bitcoin, there are a number of places in which Ethereum diverges from the most common way of handling certain protocol features, and there are also many situations in which Ethereum has been forced to develop completely new economic approaches because it offers functionality that is not offered by other existing systems. The purpose of this document will be to detail all of the finer potentially nonobvious or in some cases controversial decisions that were made in the process of building the Ethereum protocol, as well as showing the risks involved in both our approach and possible alternatives. + +## Principles + +The Ethereum protocol design process follows a number of principles: + +1. **Sandwich complexity model**: we believe that the bottom level architecture of Ethereum should be as simple as possible, and the interfaces to Ethereum (including high level programming languages for developers and the user interface for users) should be as easy to understand as possible. Where complexity is inevitable, it should be pushed into the "middle layers" of the protocol, that are not part of the core consensus but are also not seen by end users - high-level-language compilers, argument serialization and deserialization scripts, storage data structure models, the leveldb storage interface and the wire protocol, etc. However, this preference is not absolute. +2. **Freedom**: users should not be restricted in what they use the Ethereum protocol for, and we should not attempt to preferentially favor or disfavor certain kinds of Ethereum contracts or transactions based on the nature of their purpose. This is similar to the guiding principle behind the concept of "net neutrality". One example of this principle _not_ being followed is the situation in the Bitcoin transaction protocol where use of the blockchain for "off-label" purposes (eg. data storage, meta-protocols) is discouraged, and in some cases explicit quasi-protocol changes (eg. OP_RETURN restriction to 40 bytes) are made to attempt to attack applications using the blockchain in "unauthorized" ways. In Ethereum, we instead strongly favor the approach of setting up transaction fees in such a way as to be roughly incentive-compatible, such that users that use the blockchain in bloat-producing ways internalize the cost of their activities (ie. Pigovian taxation). +3. **Generalization**: protocol features and opcodes in Ethereum should embody maximally low-level concepts, so that they can be combined in arbitrary ways including ways that may not seem useful today but which may become useful later, and so that a bundle of low-level concepts can be made more efficient by stripping out some of its functionality when it is not necessary. An example of this principle being followed is our choice of a LOG opcode as a way of feeding information to (particularly light client) dapps, as opposed to simply logging all transactions and messages as was internally suggested earlier - the concept of "message" is really the agglomeration of multiple concepts, including "function call" and "event interesting to outside watchers", and it is worth separating the two. +4. **We Have No Features**: as a corollary to generalization, we often refuse to build in even very common high-level use cases as intrinsic parts of the protocol, with the understanding that if people really want to do it they can always create a sub-protocol (eg. ether-backed subcurrency, bitcoin/litecoin/dogecoin sidechain, etc) inside of a contract. An example of this is the lack of a Bitcoin-like "locktime" feature in Ethereum, as such a feature can be simulated via a protocol where users send "signed data packets" and those data packets can be fed into a specialized contract that processes them and performs some corresponding function if the data packet is in some contract-specific sense valid. +5. **Non-risk-aversion**: we are okay with higher degrees of risk if a risk-increasing change provides very substantial benefits (eg. generalized state transitions, 50x faster block times, consensus efficiency, etc) + +These principles are all involved in guiding Ethereum development, but they are not absolute; in some cases, desire to reduce development time or not to try too many radical things at once has led us to delay certain changes, even some that are obviously beneficial, to a future release (eg. Ethereum 1.1). + +## Blockchain-level protocol + +This section provides a description of some of the blockchain-level protocol changes made in Ethereum, including how blocks and transactions work, how data is serialized and stored, and the mechanisms behind accounts. + +## Accounts and not UTXOs + +Bitcoin, along with many of its derivatives, stores data about users' balances in a structure based on _unspent transaction outputs_ (UTXOs): the entire state of the system consists of a set of "unspent outputs" (think, "coins"), such that each coin has an owner and a value, and a transaction spends one or more coins and creates one or more new coins, subject to the validity constraints: + +1. Every referenced input must be valid and not yet spent +2. The transaction must have a signature matching the owner of the input for every input +3. The total value of the inputs must equal or exceed the total value of the outputs + +A user's "balance" in the system is thus the total value of the set of coins for which the user has a private key capable of producing a valid signature. + +![Triple-entry bookkepping example](https://bitcoin.org/img/dev/en-transaction-propagation.svg) +(Image from ) + +Ethereum jettisons this scheme in favor of a simpler approach: the state stores a list of accounts where each account has a balance, as well as Ethereum-specific data (code and internal storage), and a transaction is valid if the sending account has enough balance to pay for it, in which case the sending account is debited and the receiving account is credited with the value. If the receiving account has code, the code runs, and internal storage may also be changed, or the code may even create additional messages to other accounts which lead to further debits and credits. + +The benefits of UTXOs are: + +1. **Higher degree of privacy**: if a user uses a new address for each transaction that they receive then it will often be difficult to link accounts to each other. This applies greatly to currency, but less to arbitrary dapps, as arbitrary dapps often necessarily involve keeping track of complex bundled state of users and there may not exist such an easy user state partitioning scheme as in currency. +2. **Potential scalability paradigms**: UTXOs are more theoretically compatible with certain kinds of scalability paradigms, as we can rely on only the owner of some coins maintaining a Merkle proof of ownership, and even if everyone including the owner decides to forget that data then only the owner is harmed. In an account paradigm, everyone losing the portion of a Merkle tree corresponding to an account would make it impossible to process messages that affect that account at all in any way, including sending to it. However, non-UTXO-dependent scalability paradigms do exist. + +The benefits of accounts are: + +1. **Large space savings**: for example, if an account has 5 UTXO, then switching from a UTXO model to an account model would reduce the space requirements from (20 + 32 + 8) \* 5 = 300 bytes (20 for the address, 32 for the txid and 8 for the value) to 20 + 8 + 2 = 30 bytes (20 for the address, 8 for the value, 2 for a nonce(see below)). In reality savings are not nearly this massive because accounts need to be stored in a Patricia tree (see below) but they are nevertheless large. Additionally, transactions can be smaller (eg. 100 bytes in Ethereum vs. 200-250 bytes in Bitcoin) because every transaction need only make one reference and one signature and produces one output. +2. **Greater fungibility**: because there is no blockchain-level concept of the source of a specific set of coins, it becomes less practical, both technically and legally, to institute a redlist/blacklisting scheme and to draw a distinction between coins depending on where they come from. +3. **Simplicity**: easier to code and understand, especially once more complex scripts become involved. Although it is possible to shoehorn arbitrary decentralized applications into a UTXO paradigm, essentially by giving scripts the ability to restrict what kinds of UTXO a given UTXO can be spent to, and requiring spends to include Merkle tree proofs of change-of-application-state-root that scripts evaluate, such a paradigm is much more complicated and ugly than just using accounts. +4. **Constant light client reference**: light clients can at any point access all data related to an account by scanning down the state tree in a specific direction. In a UTXO paradigm, the references change with each transaction, a particularly burdensome problem for long-running dapps that try to use the above mentioned state-root-in-UTXO propagation mechanism. + +We have decided that, particularly because we are dealing with dapps containing arbitrary state and code, the benefits of accounts massively outweigh the alternatives. Additionally, in the spirit of the We Have No Features principle, we note that if people really do care about privacy then mixers and coinjoin can be built via signed-data-packet protocols inside of contracts. + +One weakness of the account paradigm is that in order to prevent replay attacks, every transaction must have a "nonce", such that the account keeps track of the nonces used and only accepts a transaction if its nonce is 1 after the last nonce used. This means that even no-longer-used accounts can never be pruned from the account state. A simple solution to this problem is to require transactions to contain a block number, making them un-replayable after some period of time, and reset nonces once every period. Miners or other users will need to "ping" unused accounts in order to delete them from the state, as it would be too expensive to do a full sweep as part of the blockchain protocol itself. We did not go with this mechanism only to speed up development for 1.0; 1.1 and beyond will likely use such a system. + +## Merkle Patricia Trees + +The Merkle Patricia tree/trie, previously envisioned by Alan Reiner and implemented in the Ripple protocol, is the primary data structure of Ethereum, and is used to store all account state, as well as transactions and receipts in each block. The MPT is a combination of a [Merkle tree](https://en.wikipedia.org/wiki/Merkle_tree) and [Patricia tree](https://en.wikipedia.org/wiki/Radix_tree), taking the elements of both to create a structure that has both of the following properties: + +1. Every unique set of key/value pairs maps uniquely to a root hash, and it is not possible to spoof membership of a key/value pair in a trie (unless an attacker has ~2^128 computing power) +2. It is possible to change, add or delete key/value pairs in logarithmic time + +This gives us a way of providing an efficient, easily updateable, "fingerprint" of our entire state tree. The Ethereum MPT is formally described [here](./patricia-tree.md). + +Specific design decisions in the MPT include: + +1. **Having two classes of nodes**, kv nodes and diverge nodes (see MPT spec for more details). The presence of kv nodes increases efficiency because if a tree is sparse in a particular area the kv node will serve as a "shortcut" removing the need to have a tree of depth 64. +2. **Making diverge nodes hexary and not binary**: this was done to improve lookup efficiency. We now recognize that this choice was suboptimal, as the lookup efficiency of a hexary tree can be simulated in a binary paradigm by storing nodes batched. However, because the trie construction is so easy to implement incorrectly and end up with at the very least state root mismatches, we have decided to table such a reorganization until 1.1. +3. **No distinction between empty value and non-membership**: this was done for simplicity, and because it works well with Ethereum's default that values that are unset (eg. balances) generally mean zero and the empty string is used to represent zero. However, we do note that it sacrifices some generality and is thus slightly suboptimal. +4. **Distinction between terminating and non-terminating nodes**: technically, the "is this node terminating" flag is unnecessary, as all tries in Ethereum are used to store static key lengths, but we added it anyway to increase generality, hoping that the Ethereum MPT implementations will be used as-is by other cryptographic protocols. +5. **Using sha3(k) as the key in the "secure tree"** (used in the state and account storage tries): this makes it much more difficult to DoS the trie by setting up maximally unfavorable chains of diverge nodes 64 levels deep and repeatedly calling SLOAD and SSTORE on them. Note that this makes it more difficult to enumerate the tree; if you want to have enumeration capability in your client, the simplest approach is to maintain a database mapping `sha3(k) -> k`. + +## RLP + +RLP ("recursive length prefix") encoding is the main serialization format used in Ethereum, and is used everywhere - for blocks, transactions, account state data and wire protocol messages. RLP is formally described [here](./rlp.md). + +RLP is intended to be a highly minimalistic serialization format; its sole purpose is to store nested arrays of bytes. Unlike [protobuf](https://developers.google.com/protocol-buffers/docs/pythontutorial), [BSON](http://bsonspec.org/) and other existing solutions, RLP does not attempt to define any specific data types such as booleans, floats, doubles or even integers; instead, it simply exists to store structure, in the form of nested arrays, and leaves it up to the protocol to determine the meaning of the arrays. Key/value maps are also not explicitly supported; the semi-official suggestion for supporting key/value maps is to represent such maps as `[[k1, v1], [k2, v2], ...]` where `k1, k2...` are sorted using the standard ordering for strings. + +The alternative to RLP would have been using an existing algorithm such as protobuf or BSON; however, we prefer RLP because of (1) simplicity of implementation, and (2) guaranteed absolute byte-perfect consistency. Key/value maps in many languages don't have an explicit ordering, and floating point formats have many special cases, potentially leading to the same data leading to different encodings and thus different hashes. By developing a protocol in-house we can be assured that it is designed with these goals in mind (this is a general principle that applies also to other parts of the code, eg. the VM). Note that bencode, used by BitTorrent, may have provided a passable alternative for RLP, although its use of decimal encoding for lengths makes it slightly suboptimal compared to the binary RLP. + +## Compression algorithm + +The wire protocol and the database both use a custom compression algorithm to store data. The algorithm can best be described as run-length-encoding zeroes and leaving other values as they are, with the exception of a few special cases for common values like `sha3('')`. For example: + + >>> compress('horse') + 'horse' + >>> compress('donkey dragon 1231231243') + 'donkey dragon 1231231243' + >>> compress('\xf8\xaf\xf8\xab\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe{b\xd5\xcd\x8d\x87\x97') + '\xf8\xaf\xf8\xab\xa0\xfe\x9e\xbe{b\xd5\xcd\x8d\x87\x97' + >>> compress("\xc5\xd2F\x01\x86\xf7#<\x92~}\xb2\xdc\xc7\x03\xc0\xe5\x00\xb6S\xca\x82';{\xfa\xd8\x04]\x85\xa4p") + '\xfe\x01' + +Before the compression algorithm existed, many parts of the Ethereum protocol had a number of special cases; for example, `sha3` was often overridden so that `sha3('') = ''`, as that would save 64 bytes from not needing to store code or storage in accounts. However, a change was made recently where all of these special cases were removed, making Ethereum data structures much bulkier by default, instead adding the data saving functionality to a layer outside the blockchain protocol by putting it on the wire protocol and seamlessly inserting it into users' database implementations. This adds modularity, simplifying the consensus layer, and also allows continued upgrades to the compression algorithm to be deployed relatively easily (eg. via network protocol versions). + +## Trie Usage + +Warning: this section assumes knowledge of how bloom filters work. For an introduction, see + +Every block header in the Ethereum blockchain contains pointers to three tries: the _state trie_, representing the entire state after accessing the block, the _transaction trie_, representing all transactions in the block keyed by index (ie. key 0: the first transaction to execute, key 1: the second transaction, etc), and the _receipt tree_, representing the "receipts" corresponding to each transaction. A receipt for a transaction is an RLP-encoded data structure: + + [ medstate, gas_used, logbloom, logs ] + +Where: + +- `medstate` is the state trie root after processing the transaction +- `gas_used` is the amount of gas used after processing the transaction +- `logs` is a list of items of the form `[address, [topic1, topic2...], data]` that are produced by the `LOG0` ... `LOG4` opcodes during the execution of the transaction (including by the main call and sub-calls). `address` is the address of the contract that produced the log, the topics are up to 4 32-byte values, and the data is an arbitrarily sized byte array. +- `logbloom` is a bloom filter made up of the addresses and topics of all logs in the transaction. + +There is also a bloom in the block header, which is the OR of all of the blooms for the transactions in the block. The purpose of this construction is to make the Ethereum protocol light-client friendly in as many ways as possible. For more details on Ethereum light clients and their use cases, see the [light client page (principles section)](../concepts/light-client-protocol.md#principles). + +## Uncle incentivization + +The "Greedy Heaviest Observed Subtree" (GHOST) protocol is an innovation [first introduced](http://eprint.iacr.org/2013/881.pdf) by Yonatan Sompolinsky and Aviv Zohar in December 2013, and is the first serious attempt at solving the issues preventing much faster block times. The motivation behind GHOST is that blockchains with fast confirmation times currently suffer from reduced security due to a high stale rate - because blocks take a certain time to propagate through the network, if miner A mines a block and then miner B happens to mine another block before miner A's block propagates to B, miner B's block will end up wasted ("stale") and will not contribute to network security. Furthermore, there is a centralization issue: if miner A is a mining pool with 30% hashpower and B has 10% hashpower, A will have a risk of producing a stale block 70% of the time (since the other 30% of the time A produced the last block and so will get mining data immediately) whereas B will have a risk of producing a stale block 90% of the time. Thus, if the block interval is short enough for the stale rate to be high, A will be substantially more efficient simply by virtue of its size. With these two effects combined, blockchains which produce blocks quickly are very likely to lead to one mining pool having a large enough percentage of the network hashpower to have de facto control over the mining process. + +As described by Sompolinsky and Zohar, GHOST solves the first issue of network security loss by including stale blocks in the calculation of which chain is the "longest"; that is to say, not just the parent and further ancestors of a block, but also the stale descendants of the block's ancestor (in Ethereum jargon, "uncles") are added to the calculation of which block has the largest total proof of work backing it. + +To solve the second issue of centralization bias, we adopt a different strategy: we provide block rewards to stales: a stale block receives 7/8 (87.5%) of its base reward, and the nephew that includes the stale block receives 1/32 (3.125%) of the base reward as an inclusion bounty. Transaction fees, however, are not awarded to uncles or nephews. + +In Ethereum, stale block can only be included as an uncle by up to the seventh-generation descendant of one of its direct siblings, and not any block with a more distant relation. This was done for several reasons. First, unlimited GHOST would include too many complications into the calculation of which uncles for a given block are valid. Second, unlimited uncle incentivization as used in Ethereum removes the incentive for a miner to mine on the main chain and not the chain of a public attacker. Finally, calculations show that restricting to seven levels provides most of the desired effect without many of the negative consequences. + +- A simulator that measures centralization risks is available at +- A high-level discussion can be found at + +Design decisions in our block time algorithm include: + +- **12 second block time**: 12 seconds was chosen as a time that is as fast as possible, but is at the same time substantially longer than network latency. A [2013 paper](http://www.tik.ee.ethz.ch/file/49318d3f56c1d525aabf7fda78b23fc0/P2P2013_041.pdf) by Decker and Wattenhofer in Zurich measures Bitcoin network latency, and determines that 12.6 seconds is the time it takes for a new block to propagate to 95% of nodes; however, the paper also points out that the bulk of the propagation time is proportional to block size, and thus in a faster currency we can expect the propagation time to be drastically reduced. The constant portion of the propagation interval is about 2 seconds; however, for safety we assume that blocks take 12 seconds to propagate in our analysis. +- **7 block ancestor limit**: this is part of a design goal of wanting to make block history very quickly "forgettable" after a small number of blocks, and 7 blocks has been proven to provide most of the desired effect +- **1 block descendant limit** (eg. `c(c(p(p(p(head)))))`, where c = child and p = parent, is invalid): this is part of a design goal of simplicity, and the simulator above shows that it does not pose large centralization risks. +- **Uncle validity requirements**: uncles have to be valid headers, not valid blocks. This is done for simplicity, and to maintain the model of a blockchain as being a linear data structure (and not a block-DAG, as in Sompolinsky and Zohar's newer models). Requiring uncles to be valid blocks is also a valid approach. +- **Reward distribution**: 7/8 of the base mining reward to the uncle, 1/32 to the nephew, 0% of transaction fees to either. This will make uncle incentivization ineffective from a centralization perspective if fees dominate; however, this is one of the reasons why Ethereum is meant to continue issuing ether for as long as we continue using PoW. + +## Difficulty Update Algorithm + +The difficulty in Ethereum is currently updated according to the following rule: + + diff(genesis) = 2^32 + + diff(block) = diff.block.parent + floor(diff.block.parent / 1024) * + 1 if block.timestamp - block.parent.timestamp < 9 else + -1 if block.timestamp - block.parent.timestamp >= 9 + +The design goals behind the difficulty update rule are: + +- **Fast updating**: the time between blocks should readjust quickly given increasing or decreasing hashpower +- **Low volatility**: the difficulty should not bounce excessively if the hashpower is constant +- **Simplicity**: the algorithm should be relatively simple to implement +- **Low memory**: the algorithm should not rely on more than a few blocks of history, and should include as few "memory variables" as possible. Assume that the last ten blocks, plus all memory variables placed in the block headers of the last ten blocks, are all that is available for the algorithm to work with +- **Non-exploitability**: the algorithm should not excessively encourage miners to fiddle with timestamps, or mining pools to repeatedly add and remove hashpower, in an attempt to maximize their revenue + +We have already determined that our current algorithm is highly suboptimal on low volatility and non-exploitability, and at the very least we plan to switch the timestamps compares to be the parent and grandparent, so that miners only have the incentive to modify timestamps if they are mining two blocks in a row. Another more powerful formula with simulations is located at (the simulator uses Bitcoin mining power, but uses the per-day average for the entire day; it at one point simulates a 95% crash in a single day). + +## Gas and Fees + +Whereas all transactions in Bitcoin are roughly the same, and thus their cost to the network can be modeled to a single unit, transactions in Ethereum are more complex, and so a transaction fee system needs to take into account many ingredients, including cost of bandwidth, cost of storage and cost of computation. Of particular importance is the fact that the Ethereum programming language is Turing-complete, and so transactions may use bandwidth, storage and computation in arbitrary quantities, and the latter may end up being used in quantities that due to the halting problem cannot even be reliably predicted ahead of time. Preventing denial-of-service attacks via infinite loops is a key objective. + +The basic mechanism behind transaction fees is as follows: + +- Every transaction must specify a quantity of "gas" that it is willing to consume (called `startgas`), and the fee that it is willing to pay per unit gas (`gasprice`). At the start of execution, `startgas * gasprice` ether are removed from the transaction sender's account. +- All operations during transaction execution, including database reads and writes, messages, and every computational step taken by the virtual machine consumes a certain quantity of gas. +- If a transaction execution processes fully, consuming less gas than its specified limit, say with `gas_rem` gas remaining, then the transaction executes normally, and at the end of the execution the transaction sender receives a refund of `gas_rem * gasprice` and the miner of the block receives a reward of `(startgas - gas_rem) * gasprice`. +- If a transaction "runs out of gas" mid-execution, then all execution reverts, but the transaction is nevertheless valid, and the only effect of the transaction is to transfer the entire sum `startgas * gasprice` to the miner. +- When a contract sends a message to the other contract, it also has the option to set a gas limit specifically on the sub-execution arising out of that message. If the sub-execution runs out of gas, then the sub-execution is reverted, but the gas is nevertheless consumed. + +Each of the above components is necessary. For example: + +- If transactions did not need to specify a gas limit, then a malicious user could send a transaction that makes a multi-billion round loop, and no one would be able to process it since processing such a transaction would take longer than a block interval, but miners would not be able to tell beforehand, leading to a denial-of-service vulnerability. +- The alternative to strict gas-counting, time-limiting, does not work because it is too highly subjective (some machines are faster than others, and even among identical machines close-calls will always exist) +- The entire value `startgas * gasprice` has to be taken out at the start as a deposit so that there arise no situations where an account "bankrupts" itself mid-execution and becomes unable to pay for its gas costs. Note that balance checking is not sufficient, because an account can send its balance somewhere else. +- If execution did not revert in the event of an insufficient gas error, then contracts would need to take strong and difficult security measures to prevent themselves from being exploited by transactions or messages that provide only enough gas halfway through, thereby leading to some of the changes in a contract execution being executed but not others. +- If sub-limits did not exist, then hostile accounts could enact a denial-of-service attack against other contracts by entering into agreements with them, and then inserting an infinite loop at the beginning of computation so that any attempts by the victim contract to compensate the attack contract or send a message to it would starve the entire transaction execution. +- Requiring transaction senders to pay for gas instead of contracts substantially increases developer usability. Very early versions of Ethereum had contracts pay for gas, but this led to the rather ugly problem that every contract had to implement "guard" code that would make sure that every incoming message compensated the contract with enough ether to pay for the gas that it consumed. + +Note the following particular features in gas costs: + +- 21000 gas is charged for any transaction as a "base fee". This covers the cost of an elliptic curve operation to recover the sender address from the signature as well as the disk and bandwidth space of storing the transaction. +- A transaction can include an unlimited amount of "data", and there exist opcodes in the virtual machine which allow the contract receiving a transaction to access this data. The "intrinsic gas" fee for data is 4 gas per zero byte and 68 gas per nonzero byte. This formula arose because we saw that most transaction data in contracts written by users was organized into a series of 32-byte arguments, most of which had many leading zero bytes, and given that such constructions seem inefficient but are actually efficient due to compression algorithms, we wanted to encourage their use in place of more complicated mechanisms which would try to tightly pack arguments according to the expected number of bytes, leading to very substantial complexity increase at compiler level. This is an exception to the sandwich complexity model, but a justified one due to the ratio of cost to benefit. +- The cost of the SSTORE opcode, which sets values in account storage, is either: (i) 20000 gas when changing a zero value to a nonzero value, (ii) 5000 gas when changing a zero value to a zero value or a nonzero value to a nonzero value, or (iii) 5000 gas when changing a nonzero value to a zero value, plus a 15000 gas refund to be given at the end of successful transaction execution (ie. NOT an execution leading to an out-of-gas exception). Refunds are capped at 50% of the total gas spent by a transaction. This provides a small incentive to clear storage, as we noticed that lacking such an incentive many contracts would leave storage unused, leading to quickly increasing bloat, providing most of the benefits of "charging rent" for storage without the cost of losing the assurance that a contract once placed will continue to exist forever. The delayed refund mechanism is necessary to prevent denial-of-service attacks where the attacker sends a transaction with a low amount of gas that repeatedly clears a large number of storage slots as part of a long-running loop, and then runs out of gas, consuming a large amount of verifiers' computing power without actually clearing storage or spending a lot of gas. The 50% cap is needed to ensure that a miner given a transaction with some quantity of gas can still determine an upper bound on the computational time to execute the transaction. +- There is no gas cost to data in messages provided by contracts. This is because there is no need to actually "copy" any data during a message call, as the call data can simply be viewed as a pointer to the parent contract's memory which will not change while the child execution is in progress. +- Memory is an infinitely expandable array. However, there is a gas cost of 1 per 32 bytes of memory expansion, rounding up. +- Some opcodes, whose computation time is highly argument-dependent, have variable gas costs. For example, the gas cost of EXP is 10 + 10 per byte in the exponent (ie. x^0 = 1 gas, x^1 ... x^255 = 2 gas, x^256 ... x^65535 = 3 gas, etc), and the gas cost of the copy opcodes (CALLDATACOPY, CODECOPY, EXTCODECOPY) is 1 + 1 per 32 bytes copies, rounding up (LOG also has a similar rule). The memory expansion gas cost is not sufficient to cover this, as it opens up a quadratic attack (50000 rounds of CALLDATACOPY of 50000 gas ~= 50000^2 computing effort, but only ~50000 gas before the variable gas cost was introduced) +- The CALL opcode (and CALLCODE for symmetry) costs an additional 9000 gas if the value is nonzero. This is because any value transfer causes significant bloat to history storage for an archival node. Note that the actual fee _charged_ is 6700; on top of this we add a mandatory 2300 gas minimum that is automatically given to the recipient. This is in order to ensure that wallets that receive transactions to at least have enough gas to make a log of the transaction. + +The other important part of the gas mechanism is the economics of the gas price itself. The default approach, used in Bitcoin, is to have purely voluntary fees, relying on miners to act as the gatekeepers and set dynamic minimums; the equivalent in Ethereum would be allowing transaction senders to set arbitrary gas costs. This approach has been received very favorably in the Bitcoin community particularly because it is "market-based", allowing supply and demand between miners and transaction senders to determine the price. The problem with this line of reasoning is, however, that transaction processing is not a market; although it is intuitively attractive to construe transaction processing as a service that the miner is offering to the sender, in reality every transaction that a miner includes will need to be processed by every node in the network, so the vast majority of the cost of transaction processing is borne by third parties and not the miner that is making the decision of whether or not to include it. Hence, tragedy-of-the-commons problems are very likely to occur. + +Currently, due to a lack of clear information about how miners will behave in reality, we are going with a fairly simple approach: a voting system. Miners have the right to set the gas limit for the current block to be within ~0.0975% (1/1024) of the gas limit of the last block, and so the resulting gas limit should be the median of miners' preferences. The hope is that in the future we will be able to soft-fork this into a more precise algorithm. + +## Virtual Machine + +The Ethereum virtual machine is the engine in which transaction code gets executed, and is the core differentiating feature between Ethereum and other systems. Note that the _virtual machine_ should be considered separately from the _contract and message model_ - for example, the SIGNEXTEND opcode is a feature of the VM, but the fact that contracts can call other contracts and specify gas limits to sub-calls is part of the contract and message model. Design goals in the EVM include: + +- **Simplicity**: as few and as low-level opcodes as possible, as few data types as possible and as few virtual-machine-level constructs as possible +- **Total determinism**: there should be absolutely no room for ambiguity in any part of the VM specification, and the results should be completely deterministic. Additionally, there should be a precise concept of computational step which can be measured so as to compute gas consumption. +- **Space savings**: EVM assembly should be as compact as possible (eg. the 4000 byte base size of default C programs is NOT acceptable) +- **Specialization to expected applications**: the ability to handle 20-byte addresses and custom cryptography with 32-byte values, modular arithmetic used in custom cryptography, read block and transaction data, interact with state, etc +- **Simple security**: it should be easy to come up with a gas cost model for operations that makes the VM non-exploitable +- **Optimization-friendliness**: it should be easy to apply optimizations so that JIT-compiled and otherwise sped-up versions of the VM can be built. + +Some particular design decisions that were made: + +- **Temporary/permanent storage distinction** - a distinction exists between temporary storage, which exists within each instance of the VM and disappears when VM execution finishes, and permanent storage, which exists on the blockchain state level on a per-account basis. For example, suppose the following tree of execution takes place (using S for permanent storage and M for temporary): (i) A calls B, (ii) B sets `B.S[0] = 5`, `B.M[0] = 9`, (iii) B calls C, (iv) C calls B. At this point, if B tries to read `B.S[0]`, it will receive the value stored in B earlier, 5, but if B tries to read `B.M[0]` it will receive 0 because it is a new instance of the virtual machine with fresh temporary storage. If B now sets `B.M[0] = 13` and `B.S[0] = 17` in this inner call, and then both this inner call and C's call terminate, bringing the execution back to B's outer call, then B reading M will see `B.M[0] = 9` (since the last time this value was set was in the same VM execution instance) and `B.S[0] = 17`. If B's outer call ends and A calls B again, then B will see `B.M[0] = 0` and `B.S[0] = 17`. The purpose of this distinction is to (1) provide each execution instance with its own memory that is not subject to corruption by recursive calls, making secure programming easier, and (2) to provide a form of memory which can be manipulated very quickly, as storage updates are necessarily slow due to the need to modify the trie. +- **Stack/memory model** - the decision was made early on to have three types of computational state (aside from the program counter which points to the next instruction): stack (a standard LIFO stack of 32-byte values), memory (an infinitely expandable temporary byte array) and storage (permanent storage). On the temporary storage side, the alternative to stack and memory is a memory-only paradigm, or some hybrid of registers and memory (not very different, as registers basically are a kind of memory). In such a case, every instruction would have three arguments, eg. `ADD R1 R2 R3: M[R1] = M[R2] + M[R3]`. The stack paradigm was chosen for the obvious reason that it makes the code four times smaller. +- **32 byte word size** - the alternative is 4 or 8 byte words, as in most other architectures, or unlimited, as in Bitcoin. 4 or 8 byte words are too restrictive to store addresses and big values for crypto computations, and unlimited values are too hard to make a secure gas model around. 32 bytes is ideal because it is just large enough to store 32 byte values common in many crypto implementations, as well as addresses (and provides the ability to pack address and value into a single storage index as an optimization), but not so large as to be extremely inefficient. +- **Having our own VM at all** - the alternative is reusing Java, or some Lisp dialect, or Lua. We decided that having a specialized VM was appropriate because (i) our VM spec is much simpler than many other virtual machines, because other virtual machines have to pay a much lower cost for complexity, whereas in our case every additional unit of complexity is a step toward high barriers of entry creating development centralization and potential for security flaws including consensus failures, (ii) it allows us to specialize the VM much more, eg. by having a 32 byte word size, (iii) it allows us not to have a very complex external dependency which may lead to installation difficulties, and (iv) a full security review of Ethereum specific to our particular security needs would necessitate a security review of the external VM anyway, so the effort savings are not that large. +- **Using a variable extendable memory size** - we deemed a fixed memory size unnecessarily restrictive if the size is small and unnecessarily expensive if the size is large, and noted that if statements for memory access are necessary in any case to check for out-of-bounds access, so fixed size would not even make execution more efficient. +- **Having a 1024 call depth limit** - many programing languages break at high stack depths much more quickly than they break at high levels of memory usage or computational load, so the implied limit from the block gas limit may not be sufficient. +- **No types** - done for simplicity. Instead, signed and unsigned opcodes for DIV, SDIV, MOD, SMOD are used instead (it turns out that for ADD and MUL the behavior of signed and unsigned opcodes is equivalent), and the transformations for fixed point arithmetic (high-depth fixed-point arithmetic is another benefit of 32-byte words) are in all cases simple, eg. at 32 bits of depth, `a * b -> (a * b) / 2^32`, `a / b -> a * 2^32 / b`, and +, - and \* are unchanged from integer cases. + +The function and purpose of some opcodes in the VM is obvious, however other opcodes are less so. Some particular justifications are given below: + +- **ADDMOD**, **MULMOD**: in most cases, `mulmod(a, b, c) = a * b % c`. However, in the specific case of many classes of elliptic curve cryptography, 32-byte modular arithmetic is used, and doing `a * b % c` directly is therefore actually doing `((a * b) % 2^256) % c`, which gives a completely different result. A formula that calculates `a * b % c` with 32-byte values in 32 bytes of space is rather nontrivial and bulky. +- **SIGNEXTEND**: the purpose of SIGNEXTEND is to facilitate typecasting from a larger signed integer to a smaller signed integer. Small signed integers are useful because JIT-compiled virtual machines may in the future be able to detect long-running chunks of code that deals primarily with 32-byte integers and speed it up considerably. +- **SHA3**: SHA3 is very highly applicable in Ethereum code as secure infinite-sized hash maps that use storage will likely need to use a secure hash function so as to prevent malicious collisions, as well as for verifying Merkle trees and even verifying Ethereum-like data structures. A key point is that its companions `SHA256`, `ECRECOVER` and `RIPEMD160` are included not as opcodes but as pseudo-contracts. The purpose of this is to place them into a separate category so that, if/when we come up with a proper "native extensions" system later, more such contracts can be added without filling up the opcode space. +- **ORIGIN**: the primary use of the ORIGIN opcode, which provides the sender of a transaction, is to allow contracts to make refund payments for gas. +- **COINBASE**: the primary uses of the COINBASE opcode are to (i) allow sub-currencies to contribute to network security if they so choose, and (ii) open up the use of miners as a decentralized economic set for sub-consensus-based applications like Schellingcoin. +- **PREVHASH**: used as a semi-secure source of randomness, and to allow contracts to evaluate Merkle tree proofs of state in the previous block without requiring a highly complex recursive "Ethereum light client in Ethereum" construction. +- **EXTCODESIZE**, **EXTCODECOPY**: the primary uses here are to allow contracts to check the code of other contracts against a template, or even simulating them, before interacting with them. See for applications. +- **JUMPDEST**: JIT-compiled virtual machines become much easier to implement when jump destinations are restricted to a few indices (specifically, the computational complexity of a variable-destination jump is roughly O(log(number of valid jump destinations)), although static jumps are always constant-time). Hence, we need (i) a restriction on valid variable jump destinations, and (ii) an incentive to use static over dynamic jumps. To meet both goals, we have the rules that (i) jumps that are immediately preceded by a push can jump anywhere but another jump, and (ii) other jumps can only jump to a JUMPDEST. The restriction against jumping on jumps is needed so that the question of whether a jump is dynamic or static can be determined by simply looking at the previous operation in the code. The lack of a need for JUMPDEST operations for static jumps is the incentive to use them. The prohibition against jumping into push data also speeds up JIT VM compilation and execution. +- **LOG**: LOG is meant to log events, see trie usage section above. +- **CALLCODE**: the purpose of this is to allow contracts to call "functions" in the form of code stored in other contracts, with a separate stack and memory, but using the contract's own storage. This makes it much easier to scalably implement "standard libraries" of code on the blockchain. +- **SELFDESTRUCT**: an opcode which allows a contract to quickly delete itself if it is no longer needed. The fact that SELFDESTRUCTs are processed at the end of transaction execution, and not immediately, is motivated by the fact that having the ability to revert SELFDESTRUCTs that were already executed would substantially increase the complexity of the cache that would be required in an efficient VM implementation. +- **PC**: although theoretically not necessary, as all instances of the PC opcode can be replaced by simply putting in the actual program counter at that index as a push, using PC in code allows for the creation of position-independent code (ie. compiled functions which can be copy/pasted into other contracts, and do not break if they end up at different indices). diff --git a/src/content/history/index.md b/src/content/history/index.md index b37f1a8f11e..ce1ae943ca1 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -6,6 +6,8 @@ sidebar: true sidebarDepth: 1 --- +This page explains the history of Ethereum from its inception to its first production release. + ## Inception {#inception} Ethereum was initially described by Vitalik Buterin in late 2013 as a result of his research and work in the Bitcoin community. Shortly thereafter, Vitalik published the [Ethereum white paper](/whitepaper/whitepaper-pdf), where he described in detail the technical design and rationale for the Ethereum protocol and smart contracts architecture. In January 2014, Ethereum was formally announced by Vitalik at the The North American Bitcoin Conference in Miami, Florida, USA. From 40065c023e0641655c0f0d0d541a0d45a6fd2530 Mon Sep 17 00:00:00 2001 From: Joseph Cook <33655003+jmcook1186@users.noreply.github.com> Date: Fri, 6 May 2022 11:02:53 +0100 Subject: [PATCH 4/8] Apply suggestions from code review Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- src/content/history/design-rationale/index.md | 11 +++--- src/content/history/index.md | 34 +++++++++---------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/content/history/design-rationale/index.md b/src/content/history/design-rationale/index.md index ac0da049d56..06253ab6925 100644 --- a/src/content/history/design-rationale/index.md +++ b/src/content/history/design-rationale/index.md @@ -36,9 +36,6 @@ Bitcoin, along with many of its derivatives, stores data about users' balances i A user's "balance" in the system is thus the total value of the set of coins for which the user has a private key capable of producing a valid signature. -![Triple-entry bookkepping example](https://bitcoin.org/img/dev/en-transaction-propagation.svg) -(Image from ) - Ethereum jettisons this scheme in favor of a simpler approach: the state stores a list of accounts where each account has a balance, as well as Ethereum-specific data (code and internal storage), and a transaction is valid if the sending account has enough balance to pay for it, in which case the sending account is debited and the receiving account is credited with the value. If the receiving account has code, the code runs, and internal storage may also be changed, or the code may even create additional messages to other accounts which lead to further debits and credits. The benefits of UTXOs are: @@ -64,7 +61,7 @@ The Merkle Patricia tree/trie, previously envisioned by Alan Reiner and implemen 1. Every unique set of key/value pairs maps uniquely to a root hash, and it is not possible to spoof membership of a key/value pair in a trie (unless an attacker has ~2^128 computing power) 2. It is possible to change, add or delete key/value pairs in logarithmic time -This gives us a way of providing an efficient, easily updateable, "fingerprint" of our entire state tree. The Ethereum MPT is formally described [here](./patricia-tree.md). +This gives us a way of providing an efficient, easily updatable, "fingerprint" of our entire state tree. Specific design decisions in the MPT include: @@ -76,7 +73,7 @@ Specific design decisions in the MPT include: ## RLP -RLP ("recursive length prefix") encoding is the main serialization format used in Ethereum, and is used everywhere - for blocks, transactions, account state data and wire protocol messages. RLP is formally described [here](./rlp.md). +RLP ("recursive length prefix") encoding is the main serialization format used in Ethereum, and is used everywhere - for blocks, transactions, account state data and wire protocol messages. RLP is intended to be a highly minimalistic serialization format; its sole purpose is to store nested arrays of bytes. Unlike [protobuf](https://developers.google.com/protocol-buffers/docs/pythontutorial), [BSON](http://bsonspec.org/) and other existing solutions, RLP does not attempt to define any specific data types such as booleans, floats, doubles or even integers; instead, it simply exists to store structure, in the form of nested arrays, and leaves it up to the protocol to determine the meaning of the arrays. Key/value maps are also not explicitly supported; the semi-official suggestion for supporting key/value maps is to represent such maps as `[[k1, v1], [k2, v2], ...]` where `k1, k2...` are sorted using the standard ordering for strings. @@ -112,7 +109,7 @@ Where: - `logs` is a list of items of the form `[address, [topic1, topic2...], data]` that are produced by the `LOG0` ... `LOG4` opcodes during the execution of the transaction (including by the main call and sub-calls). `address` is the address of the contract that produced the log, the topics are up to 4 32-byte values, and the data is an arbitrarily sized byte array. - `logbloom` is a bloom filter made up of the addresses and topics of all logs in the transaction. -There is also a bloom in the block header, which is the OR of all of the blooms for the transactions in the block. The purpose of this construction is to make the Ethereum protocol light-client friendly in as many ways as possible. For more details on Ethereum light clients and their use cases, see the [light client page (principles section)](../concepts/light-client-protocol.md#principles). +There is also a bloom in the block header, which is the OR of all of the blooms for the transactions in the block. The purpose of this construction is to make the Ethereum protocol light-client friendly in as many ways as possible. ## Uncle incentivization @@ -129,7 +126,7 @@ In Ethereum, stale block can only be included as an uncle by up to the seventh-g Design decisions in our block time algorithm include: -- **12 second block time**: 12 seconds was chosen as a time that is as fast as possible, but is at the same time substantially longer than network latency. A [2013 paper](http://www.tik.ee.ethz.ch/file/49318d3f56c1d525aabf7fda78b23fc0/P2P2013_041.pdf) by Decker and Wattenhofer in Zurich measures Bitcoin network latency, and determines that 12.6 seconds is the time it takes for a new block to propagate to 95% of nodes; however, the paper also points out that the bulk of the propagation time is proportional to block size, and thus in a faster currency we can expect the propagation time to be drastically reduced. The constant portion of the propagation interval is about 2 seconds; however, for safety we assume that blocks take 12 seconds to propagate in our analysis. +- **12 second block time**: 12 seconds was chosen as a time that is as fast as possible, but is at the same time substantially longer than network latency. A 2013 paper by Decker and Wattenhofer in Zurich measures Bitcoin network latency, and determines that 12.6 seconds is the time it takes for a new block to propagate to 95% of nodes; however, the paper also points out that the bulk of the propagation time is proportional to block size, and thus in a faster currency we can expect the propagation time to be drastically reduced. The constant portion of the propagation interval is about 2 seconds; however, for safety we assume that blocks take 12 seconds to propagate in our analysis. - **7 block ancestor limit**: this is part of a design goal of wanting to make block history very quickly "forgettable" after a small number of blocks, and 7 blocks has been proven to provide most of the desired effect - **1 block descendant limit** (eg. `c(c(p(p(p(head)))))`, where c = child and p = parent, is invalid): this is part of a design goal of simplicity, and the simulator above shows that it does not pose large centralization risks. - **Uncle validity requirements**: uncles have to be valid headers, not valid blocks. This is done for simplicity, and to maintain the model of a blockchain as being a linear data structure (and not a block-DAG, as in Sompolinsky and Zohar's newer models). Requiring uncles to be valid blocks is also a valid approach. diff --git a/src/content/history/index.md b/src/content/history/index.md index ce1ae943ca1..f454b3cd7b3 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -29,7 +29,7 @@ Beginning in July 2014, Ethereum distributed the initial allocation of ether via - [Presale T&Cs](https://www.cryptocompare.com/media/1383735/pdfs-termsandconditionsoftheethereumgenesissale.pdf) -## ETH/DEV and Ethereum development {#development} +## ETH DEV and Ethereum development {#development} Following the successful ether presale, Ethereum development was formalized under a non-for-profit organization called ETH DEV, which managed the development of Ethereum under contract from Ethereum Suisse – with Vitalik Buterin, Gavin Wood, and Jeffrey Wilcke as the 3 directors of the organization. Developer interest in Ethereum grew steadily throughout 2014 and the ETH DEV team delivered a series of proof-of-concept (PoC) releases for the development community to evaluate. Frequent posts by ETH DEV team on the the Ethereum blog also kept the excitement and momentum around Ethereum going. Increasing traffic and growing user-base on both the Ethereum forum and the ethereum subreddit testified that the platform is attracting a fast-growing and devoted developer community. This trend has been continuing to this very day. @@ -37,10 +37,10 @@ Following the successful ether presale, Ethereum development was formalized unde In November 2014, ETH DEV organized the DEVCON-0 event, which brought together Ethereum developers from around the world to Berlin to meet and discuss a diverse range of Ethereum technology topics. Several of the presentations and sessions at DEVCON-0 would later drive important initiatives to make Ethereum more reliable, more secure, and more scalable. Overall, the event galvanized developers as they continued to work towards the launch of Ethereum. -[DEVCON-0 talks youtube playlist](https://www.youtube.com/watch?v=_BvvUlKDqp0&list=PLJqWcTqh_zKEjpSej3ddtDOKPRGl_7MhS) -[DEVCON-0 reddit post](https://www.reddit.com/r/ethereum/comments/2nle7m/community_update_whats_going_on_devcon0/) -[Gav’s DEV update mentioning DEVCON-0](https://blog.ethereum.org/2014/11/18/gavs-d%CE%BEv-update-iii/) -[DEVcon-0 recap blog post](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/) +- [DEVCON-0 talks youtube playlist](https://www.youtube.com/watch?v=_BvvUlKDqp0&list=PLJqWcTqh_zKEjpSej3ddtDOKPRGl_7MhS) +- [DEVCON-0 reddit post](https://www.reddit.com/r/ethereum/comments/2nle7m/community_update_whats_going_on_devcon0/) +- [Gav’s DEV update mentioning DEVCON-0](https://blog.ethereum.org/2014/11/18/gavs-d%CE%BEv-update-iii/) +- [DEVcon-0 recap blog post](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/) ## Olympic testnet, bug bounty and security audit {#olympic-testnet} @@ -48,22 +48,22 @@ Throughout 2014 and 2015 development went through a series of proof of concept r In early 2015, an Ethereum Bounty Program was launched, offering BTC rewards for finding vulnerabilities in any part of the Ethereum software stack. This has undoubtedly contributed to the reliability and security of Ethereum and the confidence of the Ethereum community in the technology. The bounty program is currently still active. -The Ethereum security audit began at the end of 2014 and continued through the first half of 2015. Ethereum engaged multiple third party software security firms to conduct an end-to-end audit of all protocol-critical components (Ethereum VM, networking, Proof of Work). The audits uncovered security issues that were addressed and tested again and as a result ultimately led to a more secure platform. +The Ethereum security audit began at the end of 2014 and continued through the first half of 2015. Ethereum engaged multiple third party software security firms to conduct an end-to-end audit of all protocol-critical components (EVM, networking, proof-of-work). The audits uncovered security issues that were addressed and tested again and as a result ultimately led to a more secure platform. -[Olympic testnet prerelease](https://blog.ethereum.org/2015/05/09/olympic-frontier-pre-release/) -[Olympic rewards announced](https://blog.ethereum.org/2015/08/26/olympic-rewards-announced/) -[Bug bounty program launch](https://blog.ethereum.org/2015/03/20/juttas-update-bug-bounty-program-security-audit/) -[Least Authority audit blogpost](https://blog.ethereum.org/2015/07/07/know-ethereum-secure/) +- [Olympic testnet prerelease](https://blog.ethereum.org/2015/05/09/olympic-frontier-pre-release/) +- [Olympic rewards announced](https://blog.ethereum.org/2015/08/26/olympic-rewards-announced/) +- [Bug bounty program launch](https://blog.ethereum.org/2015/03/20/juttas-update-bug-bounty-program-security-audit/) +- [Least Authority audit blogpost](https://blog.ethereum.org/2015/07/07/know-ethereum-secure/) ## The Ethereum Frontier launch {#frontier-launch} The Ethereum Frontier network launched on July 30th, 2015, and developers began writing smart contracts and decentralized apps to deploy on the live Ethereum network. In addition, miners began to join the Ethereum network to help secure the Ethereum blockchain and earn ether from mining blocks. Even though the Frontier release is the first milestone in the Ethereum project and was intended for use by developers as a beta version, it turned out to be more capable and reliable than anyone expected, and developers rushed in to build solutions and improve the Ethereum ecosystem. -[Original announcement of the release scheme by Vinay Gupta](https://blog.ethereum.org/2015/03/03/ethereum-launch-process/) -[Frontier is coming - Frontier launch announcement by Stephan Tual](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) -[Frontier launch final steps - Follow-up post to announcement](https://blog.ethereum.org/2015/07/27/final-steps/) -[Ethereum goes live with Frontier launch](https://blog.ethereum.org/2015/07/30/ethereum-launches/) -[The frontier website](https://web.archive.org/web/20160207033817/https://ethereum.org/) +- [Original announcement of the release scheme by Vinay Gupta](https://blog.ethereum.org/2015/03/03/ethereum-launch-process/) +- [Frontier is coming - Frontier launch announcement by Stephan Tual](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) +- [Frontier launch final steps - Follow-up post to announcement](https://blog.ethereum.org/2015/07/27/final-steps/) +- [Ethereum goes live with Frontier launch](https://blog.ethereum.org/2015/07/30/ethereum-launches/) +- [The frontier website](https://web.archive.org/web/20160207033817/https://ethereum.org/) ## DEVCON-1 {#devcon-1} @@ -73,8 +73,8 @@ The presence of large companies like UBS, IBM and Microsoft clearly indicated en [DEVCON-1 talks Youtube playlist](https://www.youtube.com/playlist?list=PLJqWcTqh_zKHQUFX4IaVjWjfT2tbS4NVk) -## The Homestead Release {#homestead-release} +## The Homestead release {#homestead-release} Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. -At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumnerated on our [timeline page](/history/network-upgrades). There will also be more changes to ethereum in the future. The [merge](/upgrades/merge), expected in summer 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). +At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumerated on our [timeline page](/history/network-upgrades). There will also be more changes to Ethereum in the future. The [Merge](/upgrades/merge), expected in Q3-Q4 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). From 9d53c57374b7c3935effa08f837e7a62c017c793 Mon Sep 17 00:00:00 2001 From: Joseph Cook <33655003+jmcook1186@users.noreply.github.com> Date: Fri, 6 May 2022 11:07:03 +0100 Subject: [PATCH 5/8] add page links link to /network-upgrades and /design-rationale --- src/content/history/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/history/index.md b/src/content/history/index.md index f454b3cd7b3..158391d0d24 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -6,7 +6,7 @@ sidebar: true sidebarDepth: 1 --- -This page explains the history of Ethereum from its inception to its first production release. +This page explains the history of Ethereum from its inception to its first production release. A timeline of network upgrades is also available on our [timeline page](/history/network-upgrades). ## Inception {#inception} @@ -77,4 +77,4 @@ The presence of large companies like UBS, IBM and Microsoft clearly indicated en Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. -At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumerated on our [timeline page](/history/network-upgrades). There will also be more changes to Ethereum in the future. The [Merge](/upgrades/merge), expected in Q3-Q4 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). +At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumerated on our [timeline page](/history/network-upgrades). There will also be more changes to Ethereum in the future. The [Merge](/upgrades/merge), expected in Q3-Q4 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). The design rationale at the time of the Homestead release can be read on our [design rationale page](/history/design-rationale/) From 58a167df93c7ab5ea3a09e94c759ecacd0e08d1a Mon Sep 17 00:00:00 2001 From: Joshua <30259508@cityofglacol.ac.uk> Date: Fri, 6 May 2022 13:24:09 +0100 Subject: [PATCH 6/8] Swap history page with fork history and create story of ethereum --- ...cointalk_post.png => bitcointalk-post.png} | Bin src/content/history/index.md | 457 ++++++++++++++++-- src/content/history/network-upgrades/index.md | 449 ----------------- .../history/story-of-ethereum/index.md | 80 +++ 4 files changed, 493 insertions(+), 493 deletions(-) rename src/content/history/{bitcointalk_post.png => bitcointalk-post.png} (100%) delete mode 100644 src/content/history/network-upgrades/index.md create mode 100644 src/content/history/story-of-ethereum/index.md diff --git a/src/content/history/bitcointalk_post.png b/src/content/history/bitcointalk-post.png similarity index 100% rename from src/content/history/bitcointalk_post.png rename to src/content/history/bitcointalk-post.png diff --git a/src/content/history/index.md b/src/content/history/index.md index 158391d0d24..4cf1b16d31b 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -1,80 +1,449 @@ --- -title: History of Ethereum -description: A history of the Ethereum blockchain including major milestones, releases, and forks. +title: Upgrade Timeline +description: An Ethereum network upgrade timeline lang: en sidebar: true sidebarDepth: 1 --- -This page explains the history of Ethereum from its inception to its first production release. A timeline of network upgrades is also available on our [timeline page](/history/network-upgrades). +# Upgrade Timeline -## Inception {#inception} +Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/). -Ethereum was initially described by Vitalik Buterin in late 2013 as a result of his research and work in the Bitcoin community. Shortly thereafter, Vitalik published the [Ethereum white paper](/whitepaper/whitepaper-pdf), where he described in detail the technical design and rationale for the Ethereum protocol and smart contracts architecture. In January 2014, Ethereum was formally announced by Vitalik at the The North American Bitcoin Conference in Miami, Florida, USA. + -![image](bitcointalk_post.png) -_Vitalik Buterin's announcement for the launch of Ethereum on [bitcointalk.org](https://bitcointalk.org/index.php?topic=428589.0)_ +Forks are when major technical upgrades or changes need to be made to the network – they typically stem from [Ethereum Improvement Proposals (EIPs)](/eips/) and change the "rules" of the protocol. -Around that time, Vitalik also started working with Dr. Gavin Wood. In April 2014, Gavin published the [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) that would serve as the technical specification for the Ethereum Virtual Machine (EVM). By following the detailed specification in the Yellow Paper, Ethereum clients were implemented in seven programming languages (C++, Go, Python, Java, JavaScript, Haskell, Rust) by 2016, some of which have since been deprecated. +When upgrades are needed in traditional, centrally-controlled software, the company will just publish a new version for the end-user. Blockchains work differently because there is no central ownership. [Ethereum clients](/developers/docs/nodes-and-clients/) must update their software to implement the new fork rules. Plus block creators (miners in a proof-of-work world, validators in a proof-of-stake world) and nodes must create blocks and validate against the new rules. [More on consensus mechanisms](/developers/docs/consensus-mechanisms/) -## The Ethereum Foundation and ether presale {#foundation-and-presale} +These rule changes may create a temporary split in the network. New blocks could be produced according to the new rules or the old ones. Forks are usually agreed upon ahead of time so that clients adopt the changes in unison and the fork with the upgrades becomes the main chain. However, in rare cases, disagreements over forks can cause the network to permanently split – most notably the creation of Ethereum Classic with the [DAO fork](#dao-fork). -In addition to developing the software for Ethereum, the ability to launch a new cryptocurrency and blockchain requires a massive bootstrapping effort in order to assemble the resources needed to get it up and running. To kickstart a large network of developers, miners, investors, and other stakeholders, Ethereum announced its plan to conduct a presale of ether tokens, the currency unit of Ethereum. The legal and financial complexities of raising funds through a presale led to the creation of several legal entities, including the Ethereum Foundation (Stiftung Ethereum) established June 2014 in Zug, Switzerland. + -Beginning in July 2014, Ethereum distributed the initial allocation of ether via a 42-day public ether presale, netting 31,591 bitcoins, worth $18,439,086 at that time, in exchange for about 60,102,216 ether. The results of the sale were initially used to pay back mounting legal debts and also for the months of developer effort that had yet to be compensated, and to finance the ongoing development of the Ethereum. + -- [Official announcement of the ether sale](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale) +## 2021 {#2021} -- [Slacknation ether sale report](https://medium.com/@slacknation/overview-ethereum-s-initial-public-sale-563c05e95501) +### Arrow Glacier {#arrow-glacier} -- [Presale T&Cs](https://www.cryptocompare.com/media/1383735/pdfs-termsandconditionsoftheethereumgenesissale.pdf) +Dec-09-2021 07:55:23 PM +UTC
+Block number: 13,773,000
+ETH price: $4111 USD
+ ethereum.org on waybackmachine -## ETH DEV and Ethereum development {#development} +#### Summary {#arrow-glacier-summary} -Following the successful ether presale, Ethereum development was formalized under a non-for-profit organization called ETH DEV, which managed the development of Ethereum under contract from Ethereum Suisse – with Vitalik Buterin, Gavin Wood, and Jeffrey Wilcke as the 3 directors of the organization. Developer interest in Ethereum grew steadily throughout 2014 and the ETH DEV team delivered a series of proof-of-concept (PoC) releases for the development community to evaluate. Frequent posts by ETH DEV team on the the Ethereum blog also kept the excitement and momentum around Ethereum going. Increasing traffic and growing user-base on both the Ethereum forum and the ethereum subreddit testified that the platform is attracting a fast-growing and devoted developer community. This trend has been continuing to this very day. +The Arrow Glacier network upgrade pushed back the [difficulty bomb](/glossary/#difficulty-bomb) by several months. This is the only change introduced in this upgrade, and is similar in nature to the [Muir Glacier](#muir-glacier) upgrade. Similar changes have been performed on the [Byzantium](#byzantium), [Constantinople](#constantinople) and [London](#london) network upgrades. -## DEVCON-0 {#devcon-0} +- [EF Blog - Arrow Glacier Upgrade Announcement](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) +- [Ethereum Cat Herders - Ethereum Arrow Glacier Upgrade](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) -In November 2014, ETH DEV organized the DEVCON-0 event, which brought together Ethereum developers from around the world to Berlin to meet and discuss a diverse range of Ethereum technology topics. Several of the presentations and sessions at DEVCON-0 would later drive important initiatives to make Ethereum more reliable, more secure, and more scalable. Overall, the event galvanized developers as they continued to work towards the launch of Ethereum. + -- [DEVCON-0 talks youtube playlist](https://www.youtube.com/watch?v=_BvvUlKDqp0&list=PLJqWcTqh_zKEjpSej3ddtDOKPRGl_7MhS) -- [DEVCON-0 reddit post](https://www.reddit.com/r/ethereum/comments/2nle7m/community_update_whats_going_on_devcon0/) -- [Gav’s DEV update mentioning DEVCON-0](https://blog.ethereum.org/2014/11/18/gavs-d%CE%BEv-update-iii/) -- [DEVcon-0 recap blog post](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/) +- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _delays the difficulty bomb until June 2022_ -## Olympic testnet, bug bounty and security audit {#olympic-testnet} + -Throughout 2014 and 2015 development went through a series of proof of concept releases leading to the 9th POC open testnet, called Olympic. The developer community was invited to test the limits of the network and a substantial prize fund was allocated to award those holding various records or having success in breaking the system in some way or other. The rewards were announced officially a month after the live release. +#### Node operators {#arrow-glacier-node-operators} -In early 2015, an Ethereum Bounty Program was launched, offering BTC rewards for finding vulnerabilities in any part of the Ethereum software stack. This has undoubtedly contributed to the reliability and security of Ethereum and the confidence of the Ethereum community in the technology. The bounty program is currently still active. +Be sure to upgrade your client software to the latest version before December 5, 2021 to account for variable block times. This will help avoid having your client sync to a pre-fork chain, resulting in the inability to send funds or properly verify transactions. -The Ethereum security audit began at the end of 2014 and continued through the first half of 2015. Ethereum engaged multiple third party software security firms to conduct an end-to-end audit of all protocol-critical components (EVM, networking, proof-of-work). The audits uncovered security issues that were addressed and tested again and as a result ultimately led to a more secure platform. +--- + +### Altair {#altair} + +Oct-27-2021 10:56:23 AM +UTC
+Epoch number: 74,240
+ETH price: $4024 USD
+ ethereum.org on waybackmachine + +#### Summary {#altair-summary} + +The Altair upgrade was the first scheduled upgrade for the [Beacon Chain](/upgrades/beacon-chain). It added support for "sync committees"—enabling light clients, and bringing validator inactivity and slashing penalties up to their full values. + +- [Read the Altair upgrade specification](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) + +#### Fun fact! {#altair-fun-fact} + +Altair was the first major network upgrade that had an exact rollout time. Every upgrade prior had been based on a declared block number on the proof-of-work chain, where block times vary. The Beacon Chain does not require solving for proof-of-work, and instead works on a time-based epoch system consisting of 32 twelve-second "slots" of time where validators can propose blocks. This is why we knew exactly when we would hit epoch 74,240 and Altair became live! + +- [Beaconcha.in Glossary - Slots](https://kb.beaconcha.in/glossary#slots) + +--- + +### London {#london} + + Aug-05-2021 12:33:42 PM +UTC
+ Block number: 12,965,000
+ ETH price: $2621 USD
+ ethereum.org on waybackmachine + +#### Summary {#london-summary} + +The London upgrade introduced [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), which reformed the transaction fee market, along with changes to how gas refunds are handled and the [Ice Age](/glossary/#ice-age) schedule. + +- [Are you a dApp developer? Be sure to upgrade your libraries and tooling.](https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/ecosystem-readiness.md) +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) + + + +- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _improves the transaction fee market_ +- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _returns the `BASEFEE` from a block_ +- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _reduces gas refunds for EVM operations_ +- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _prevents deploying contracts starting with `0xEF`_ +- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _delays the Ice Age until December 2021_ + + + +--- + +### Berlin {#berlin} + + Apr-15-2021 10:07:03 AM +UTC
+ Block number: 12,244,000
+ ETH price: $2454 USD
+ ethereum.org on waybackmachine + +#### Summary {#berlin-summary} + +The Berlin upgrade optimized gas cost for certain EVM actions, and increases support for multiple transaction types. + +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) + + + +- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _lowers ModExp gas cost_ +- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _enables easier support for multiple transaction types_ +- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _gas cost increases for state access opcodes_ +- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _adds optional access lists_ + + + + + +## 2020 {#2020} + +### Beacon Chain genesis {#beacon-chain-genesis} + + Dec-01-2020 12:00:35 PM +UTC
+ Beacon Chain block number: 1
+ ETH price: $586.23 USD
+ ethereum.org on waybackmachine + +#### Summary {#beacon-chain-genesis-summary} + +The [Beacon Chain](/upgrades/beacon-chain/) needed 16384 deposits of 32 staked ETH to ship securely. This happened on November 27, meaning the Beacon Chain started producing blocks on December 1, 2020. This is an important first step in achieving the [Ethereum vision](/upgrades/vision/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) + + + The Beacon Chain + + +--- + +### Staking deposit contract deployed {#staking-deposit-contract} + + Oct-14-2020 09:22:52 AM +UTC
+ Block number: 11,052,984
+ ETH price: $379.04 USD
+ ethereum.org on waybackmachine + +#### Summary {#deposit-contract-summary} + +The staking deposit contract introduced [staking](/glossary/#staking) to the Ethereum ecosystem. Although a [Mainnet](/glossary/#mainnet) contract, it had a direct impact on the timeline for launching the [Beacon Chain](/upgrades/beacon-chain/), an important [Ethereum upgrade](/upgrades/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) + + + Staking + + +--- + +### Muir Glacier {#muir-glacier} + + Jan-02-2020 08:30:49 AM +UTC
+ Block number: 9,200,000
+ ETH price: $127.18 USD
+ ethereum.org on waybackmachine + +#### Summary {#muir-glacier-summary} + +The Muir Glacier fork introduced a delay to the [difficulty bomb](/glossary/#difficulty-bomb). Increases in block difficulty of the [proof-of-work](/developers/docs/consensus-mechanisms/pow/) consensus mechanism threatened to degrade the usability of Ethereum by increasing wait times for sending transactions and using dapps. + +- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) +- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) + + + +- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _delays the difficulty bomb for another 4,000,000 blocks, or ~611 days._ + + + + + +## 2019 {#2019} + +### Istanbul {#istanbul} + + Dec-08-2019 12:25:09 AM +UTC
+ Block number: 9,069,000
+ ETH price: $151.06 USD
+ ethereum.org on waybackmachine + +#### Summary {#istanbul-summary} + +The Istanbul fork: + +- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Improved denial-of-service attack resilience. +- Made [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling) solutions based on SNARKs and STARKs more performant. +- Enabled Ethereum and Zcash to interoperate. +- Allowed contracts to introduce more creative functions. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) + + + +- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _allow Ethereum to work with privacy-preserving currency like Zcash._ +- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _cheaper cryptography to improve [gas](/glossary/#gas) costs._ +- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _protects Ethereum against replay attacks by adding `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ +- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _optimising opcode gas prices based on consumption._ +- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _reduces the cost of CallData to allow more data in blocks – good for [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling)._ +- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _other opcode gas price alterations._ + + + +--- + +### Constantinople {#constantinople} + + Feb-28-2019 07:52:04 PM +UTC
+ Block number: 7,280,000
+ ETH price: $136.29 USD
+ ethereum.org on waybackmachine + +#### Summary {#constantinople-summary} + +The Constantinople fork: + +- Ensured the blockchain didn't freeze before [proof-of-stake was implemented](#beacon-chain-genesis). +- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Added the ability to interact with addresses that haven't been created yet. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) + + -- [Olympic testnet prerelease](https://blog.ethereum.org/2015/05/09/olympic-frontier-pre-release/) -- [Olympic rewards announced](https://blog.ethereum.org/2015/08/26/olympic-rewards-announced/) -- [Bug bounty program launch](https://blog.ethereum.org/2015/03/20/juttas-update-bug-bounty-program-security-audit/) -- [Least Authority audit blogpost](https://blog.ethereum.org/2015/07/07/know-ethereum-secure/) +- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _optimises cost of certain on-chain actions._ +- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _allows you to interact with addresses that have yet to be created._ +- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _optimises cost of certain on-chain actions._ +- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _makes sure the blockchain doesn't freeze before proof-of-stake._ + + + + + +## 2017 {#2017} + +### Byzantium {#byzantium} + + Oct-16-2017 05:22:11 AM +UTC
+ Block number: 4,370,000
+ ETH price: $334.23 USD
+ ethereum.org on waybackmachine + +#### Summary {#byzantium-summary} + +The Byzantium fork: + +- Reduced block [mining](/developers/docs/consensus-mechanisms/pow/mining/) rewards from 5 to 3 ETH. +- Delayed the [difficulty bomb](/glossary/#difficulty-bomb) by a year. +- Added ability to make non-state-changing calls to other contracts. +- Added certain cryptography methods to allow for [layer 2 scaling](/developers/docs/scaling/#layer-2-scaling). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) + + + +- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _adds `REVERT` opcode._ +- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _status field added to transaction receipts to indicate success or failure._ +- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ +- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ +- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _enables RSA signature verification._ +- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _adds support for variable length return values._ +- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _adds `STATICCALL` opcode, allowing non-state-changing calls to other contracts._ +- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _changes difficulty adjustment formula._ +- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _delays [difficulty bomb](/glossary/#difficulty-bomb) by 1 year and reduces block reward from 5 to 3 ETH._ + + + + + +## 2016 {#2016} + +### Spurious Dragon {#spurious-dragon} + + Nov-22-2016 04:15:44 PM +UTC
+ Block number: 2,675,000
+ ETH price: $9.84 USD
+ ethereum.org on waybackmachine + +#### Summary {#spurious-dragon-summary} + +The Spurious Dragon fork was the second response to the denial of service (DoS) attacks on the network (September/October 2016) including: + +- tuning opcode pricing to prevent future attacks on the network. +- enabling “debloat” of the blockchain state. +- adding replay attack protection. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) + + + +- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _prevents transactions from one Ethereum chain from being rebroadcasted on an alternative chain, for example a testnet transaction being replayed on the main Ethereum chain._ +- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _adjusts prices of `EXP` opcode – makes it more difficult to slow down the network via computationally expensive contract operations._ +- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _allows for removal of empty accounts added via the DOS attacks._ +- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _changes the maximum code size that a contract on the blockchain can have – to 24576 bytes._ + + + +--- + +### Tangerine whistle {#tangerine-whistle} + + Oct-18-2016 01:19:31 PM +UTC
+ Block number: 2,463,000
+ ETH price: $12.50 USD
+ ethereum.org on waybackmachine + +#### Summary {#tangerine-whistle-summary} + +The Tangerine Whistle fork was the first response to the denial of service (DoS) attacks on the network (September/October 2016) including: + +- addressing urgent network health issues concerning underpriced operation codes. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) + + + +- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _increases gas costs of opcodes that can be used in spam attacks._ +- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _reduces state size by removing a large number of empty accounts that were put in the state at very low cost due to flaws in earlier versions of the Ethereum protocol._ + + + +--- + +### DAO fork {#dao-fork} + + Jul-20-2016 01:20:40 PM +UTC
+ Block number: 1,920,000
+ ETH price: $12.54 USD
+ ethereum.org on waybackmachine + +#### Summary {#dao-fork-summary} + +The DAO fork was in response to the [2016 DAO attack](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/) where an insecure [DAO](/glossary/#dao) contract was drained of over 3.6 million ETH in a hack. The fork moved the funds from the faulty contract to a [new contract](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) with a single function: withdraw. Anyone who lost funds could withdraw 1 ETH for every 100 DAO tokens in their wallets. + +This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes. + +Some miners refused to fork because the DAO incident wasn't a defect in the protocol. They went on to form [Ethereum Classic](https://ethereumclassic.org/). + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) + +--- + +### Homestead {#homestead} + + Mar-14-2016 06:49:53 PM +UTC
+ Block number: 1,150,000
+ ETH price: $12.50 USD
+ ethereum.org on waybackmachine + +#### Summary {#homestead-summary} + +The Homestead fork that looked to the future. It included several protocol changes and a networking change that gave Ethereum the ability to do further network upgrades. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/02/29/homestead-release/) + + + +- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _makes edits to contract creation process._ +- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _adds new opcode: `DELEGATECALL`_ +- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _introduces devp2p forward compatibility requirements_ + + + + + +## 2015 {#2015} + +### Frontier thawing {#frontier-thawing} + + Sep-07-2015 09:33:09 PM +UTC
+ Block number: 200,000
+ ETH price: $1.24 USD
+ ethereum.org on waybackmachine + +#### Summary {#frontier-thawing-summary} + +The frontier thawing fork lifted the 5,000 [gas](/glossary/#gas) limit per [block](/glossary/#block) and set the default gas price to 51 [gwei](/glossary/#gwei). This allowed for transactions – transactions require 21,000 gas. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) + +--- + +### Frontier {#frontier} + + Jul-30-2015 03:26:13 PM +UTC
+ Block number: 0
+ ETH price: N/A
+ ethereum.org on waybackmachine + +#### Summary {#frontier-summary} + +Frontier was a live, but barebone implementation of the Ethereum project. It followed the successful Olympic testing phase. It was intended for technical users, specifically developers. [Blocks](/glossary/#block) had a [gas](/glossary/#gas) limit of 5,000. This ‘thawing’ period enabled miners to start their operations and for early adopters to install their clients without having to ‘rush’. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) + + + +## 2014 {#2014} + +### Ether sale {#ether-sale} + + July 22 - September 02, 2014
+ ethereum.org on waybackmachine + +Ether officially went on sale for 42 days. You could buy it with BTC. + +[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) + +--- -## The Ethereum Frontier launch {#frontier-launch} +### Yellowpaper released {#yellowpaper} -The Ethereum Frontier network launched on July 30th, 2015, and developers began writing smart contracts and decentralized apps to deploy on the live Ethereum network. In addition, miners began to join the Ethereum network to help secure the Ethereum blockchain and earn ether from mining blocks. Even though the Frontier release is the first milestone in the Ethereum project and was intended for use by developers as a beta version, it turned out to be more capable and reliable than anyone expected, and developers rushed in to build solutions and improve the Ethereum ecosystem. + April 01, 2014
+ ethereum.org on waybackmachine -- [Original announcement of the release scheme by Vinay Gupta](https://blog.ethereum.org/2015/03/03/ethereum-launch-process/) -- [Frontier is coming - Frontier launch announcement by Stephan Tual](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) -- [Frontier launch final steps - Follow-up post to announcement](https://blog.ethereum.org/2015/07/27/final-steps/) -- [Ethereum goes live with Frontier launch](https://blog.ethereum.org/2015/07/30/ethereum-launches/) -- [The frontier website](https://web.archive.org/web/20160207033817/https://ethereum.org/) +The Yellow Paper, authored by Dr. Gavin Wood, is a technical definition of the Ethereum protocol. -## DEVCON-1 {#devcon-1} +[View the Yellow Paper](https://github.com/ethereum/yellowpaper) -The second developers’ conference DEVCON-1 took place in the city of London at the beginning of November 2015. The 5-day event featured more than 100 presentations, panel discussions and lightning talks, attracted more than 400 participants, a mix of developers, entrepreneurs, thinkers, and business executives. The talks were all recorded and are freely available + -The presence of large companies like UBS, IBM and Microsoft clearly indicated enterprise interest in the technology. Microsoft announced that it would offer Ethereum on its new Blockchain as a Service offering on the Microsoft Azure cloud platform. In conjunction with DEVCON-1, this announcement will be remembered as the moment when blockchain technology became mainstream, with Ethereum at the center of it. +## 2013 {#2013} -[DEVCON-1 talks Youtube playlist](https://www.youtube.com/playlist?list=PLJqWcTqh_zKHQUFX4IaVjWjfT2tbS4NVk) +### Whitepaper released {#whitepaper} -## The Homestead release {#homestead-release} + November 27, 2013
+ ethereum.org on waybackmachine -Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. +The introductory paper, published in 2013 by Vitalik Buterin, the founder of Ethereum, before the project's launch in 2015. -At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumerated on our [timeline page](/history/network-upgrades). There will also be more changes to Ethereum in the future. The [Merge](/upgrades/merge), expected in Q3-Q4 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). The design rationale at the time of the Homestead release can be read on our [design rationale page](/history/design-rationale/) + + Whitepaper + diff --git a/src/content/history/network-upgrades/index.md b/src/content/history/network-upgrades/index.md deleted file mode 100644 index 4cf1b16d31b..00000000000 --- a/src/content/history/network-upgrades/index.md +++ /dev/null @@ -1,449 +0,0 @@ ---- -title: Upgrade Timeline -description: An Ethereum network upgrade timeline -lang: en -sidebar: true -sidebarDepth: 1 ---- - -# Upgrade Timeline - -Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/). - - - -Forks are when major technical upgrades or changes need to be made to the network – they typically stem from [Ethereum Improvement Proposals (EIPs)](/eips/) and change the "rules" of the protocol. - -When upgrades are needed in traditional, centrally-controlled software, the company will just publish a new version for the end-user. Blockchains work differently because there is no central ownership. [Ethereum clients](/developers/docs/nodes-and-clients/) must update their software to implement the new fork rules. Plus block creators (miners in a proof-of-work world, validators in a proof-of-stake world) and nodes must create blocks and validate against the new rules. [More on consensus mechanisms](/developers/docs/consensus-mechanisms/) - -These rule changes may create a temporary split in the network. New blocks could be produced according to the new rules or the old ones. Forks are usually agreed upon ahead of time so that clients adopt the changes in unison and the fork with the upgrades becomes the main chain. However, in rare cases, disagreements over forks can cause the network to permanently split – most notably the creation of Ethereum Classic with the [DAO fork](#dao-fork). - - - - - -## 2021 {#2021} - -### Arrow Glacier {#arrow-glacier} - -Dec-09-2021 07:55:23 PM +UTC
-Block number: 13,773,000
-ETH price: $4111 USD
- ethereum.org on waybackmachine - -#### Summary {#arrow-glacier-summary} - -The Arrow Glacier network upgrade pushed back the [difficulty bomb](/glossary/#difficulty-bomb) by several months. This is the only change introduced in this upgrade, and is similar in nature to the [Muir Glacier](#muir-glacier) upgrade. Similar changes have been performed on the [Byzantium](#byzantium), [Constantinople](#constantinople) and [London](#london) network upgrades. - -- [EF Blog - Arrow Glacier Upgrade Announcement](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) -- [Ethereum Cat Herders - Ethereum Arrow Glacier Upgrade](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) - - - -- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _delays the difficulty bomb until June 2022_ - - - -#### Node operators {#arrow-glacier-node-operators} - -Be sure to upgrade your client software to the latest version before December 5, 2021 to account for variable block times. This will help avoid having your client sync to a pre-fork chain, resulting in the inability to send funds or properly verify transactions. - ---- - -### Altair {#altair} - -Oct-27-2021 10:56:23 AM +UTC
-Epoch number: 74,240
-ETH price: $4024 USD
- ethereum.org on waybackmachine - -#### Summary {#altair-summary} - -The Altair upgrade was the first scheduled upgrade for the [Beacon Chain](/upgrades/beacon-chain). It added support for "sync committees"—enabling light clients, and bringing validator inactivity and slashing penalties up to their full values. - -- [Read the Altair upgrade specification](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) - -#### Fun fact! {#altair-fun-fact} - -Altair was the first major network upgrade that had an exact rollout time. Every upgrade prior had been based on a declared block number on the proof-of-work chain, where block times vary. The Beacon Chain does not require solving for proof-of-work, and instead works on a time-based epoch system consisting of 32 twelve-second "slots" of time where validators can propose blocks. This is why we knew exactly when we would hit epoch 74,240 and Altair became live! - -- [Beaconcha.in Glossary - Slots](https://kb.beaconcha.in/glossary#slots) - ---- - -### London {#london} - - Aug-05-2021 12:33:42 PM +UTC
- Block number: 12,965,000
- ETH price: $2621 USD
- ethereum.org on waybackmachine - -#### Summary {#london-summary} - -The London upgrade introduced [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), which reformed the transaction fee market, along with changes to how gas refunds are handled and the [Ice Age](/glossary/#ice-age) schedule. - -- [Are you a dApp developer? Be sure to upgrade your libraries and tooling.](https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/ecosystem-readiness.md) -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) - - - -- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _improves the transaction fee market_ -- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _returns the `BASEFEE` from a block_ -- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _reduces gas refunds for EVM operations_ -- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _prevents deploying contracts starting with `0xEF`_ -- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _delays the Ice Age until December 2021_ - - - ---- - -### Berlin {#berlin} - - Apr-15-2021 10:07:03 AM +UTC
- Block number: 12,244,000
- ETH price: $2454 USD
- ethereum.org on waybackmachine - -#### Summary {#berlin-summary} - -The Berlin upgrade optimized gas cost for certain EVM actions, and increases support for multiple transaction types. - -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) - - - -- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _lowers ModExp gas cost_ -- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _enables easier support for multiple transaction types_ -- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _gas cost increases for state access opcodes_ -- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _adds optional access lists_ - - - - - -## 2020 {#2020} - -### Beacon Chain genesis {#beacon-chain-genesis} - - Dec-01-2020 12:00:35 PM +UTC
- Beacon Chain block number: 1
- ETH price: $586.23 USD
- ethereum.org on waybackmachine - -#### Summary {#beacon-chain-genesis-summary} - -The [Beacon Chain](/upgrades/beacon-chain/) needed 16384 deposits of 32 staked ETH to ship securely. This happened on November 27, meaning the Beacon Chain started producing blocks on December 1, 2020. This is an important first step in achieving the [Ethereum vision](/upgrades/vision/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) - - - The Beacon Chain - - ---- - -### Staking deposit contract deployed {#staking-deposit-contract} - - Oct-14-2020 09:22:52 AM +UTC
- Block number: 11,052,984
- ETH price: $379.04 USD
- ethereum.org on waybackmachine - -#### Summary {#deposit-contract-summary} - -The staking deposit contract introduced [staking](/glossary/#staking) to the Ethereum ecosystem. Although a [Mainnet](/glossary/#mainnet) contract, it had a direct impact on the timeline for launching the [Beacon Chain](/upgrades/beacon-chain/), an important [Ethereum upgrade](/upgrades/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) - - - Staking - - ---- - -### Muir Glacier {#muir-glacier} - - Jan-02-2020 08:30:49 AM +UTC
- Block number: 9,200,000
- ETH price: $127.18 USD
- ethereum.org on waybackmachine - -#### Summary {#muir-glacier-summary} - -The Muir Glacier fork introduced a delay to the [difficulty bomb](/glossary/#difficulty-bomb). Increases in block difficulty of the [proof-of-work](/developers/docs/consensus-mechanisms/pow/) consensus mechanism threatened to degrade the usability of Ethereum by increasing wait times for sending transactions and using dapps. - -- [Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) -- [Read the Ethereum Cat Herder's explainer](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) - - - -- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _delays the difficulty bomb for another 4,000,000 blocks, or ~611 days._ - - - - - -## 2019 {#2019} - -### Istanbul {#istanbul} - - Dec-08-2019 12:25:09 AM +UTC
- Block number: 9,069,000
- ETH price: $151.06 USD
- ethereum.org on waybackmachine - -#### Summary {#istanbul-summary} - -The Istanbul fork: - -- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). -- Improved denial-of-service attack resilience. -- Made [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling) solutions based on SNARKs and STARKs more performant. -- Enabled Ethereum and Zcash to interoperate. -- Allowed contracts to introduce more creative functions. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) - - - -- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _allow Ethereum to work with privacy-preserving currency like Zcash._ -- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _cheaper cryptography to improve [gas](/glossary/#gas) costs._ -- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _protects Ethereum against replay attacks by adding `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ -- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _optimising opcode gas prices based on consumption._ -- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _reduces the cost of CallData to allow more data in blocks – good for [Layer 2 scaling](/developers/docs/scaling/#layer-2-scaling)._ -- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _other opcode gas price alterations._ - - - ---- - -### Constantinople {#constantinople} - - Feb-28-2019 07:52:04 PM +UTC
- Block number: 7,280,000
- ETH price: $136.29 USD
- ethereum.org on waybackmachine - -#### Summary {#constantinople-summary} - -The Constantinople fork: - -- Ensured the blockchain didn't freeze before [proof-of-stake was implemented](#beacon-chain-genesis). -- Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). -- Added the ability to interact with addresses that haven't been created yet. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) - - - -- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _optimises cost of certain on-chain actions._ -- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _allows you to interact with addresses that have yet to be created._ -- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _optimises cost of certain on-chain actions._ -- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _makes sure the blockchain doesn't freeze before proof-of-stake._ - - - - - -## 2017 {#2017} - -### Byzantium {#byzantium} - - Oct-16-2017 05:22:11 AM +UTC
- Block number: 4,370,000
- ETH price: $334.23 USD
- ethereum.org on waybackmachine - -#### Summary {#byzantium-summary} - -The Byzantium fork: - -- Reduced block [mining](/developers/docs/consensus-mechanisms/pow/mining/) rewards from 5 to 3 ETH. -- Delayed the [difficulty bomb](/glossary/#difficulty-bomb) by a year. -- Added ability to make non-state-changing calls to other contracts. -- Added certain cryptography methods to allow for [layer 2 scaling](/developers/docs/scaling/#layer-2-scaling). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) - - - -- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _adds `REVERT` opcode._ -- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _status field added to transaction receipts to indicate success or failure._ -- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _adds elliptic curve and scalar multiplication to allow for [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _enables RSA signature verification._ -- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _adds support for variable length return values._ -- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _adds `STATICCALL` opcode, allowing non-state-changing calls to other contracts._ -- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _changes difficulty adjustment formula._ -- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _delays [difficulty bomb](/glossary/#difficulty-bomb) by 1 year and reduces block reward from 5 to 3 ETH._ - - - - - -## 2016 {#2016} - -### Spurious Dragon {#spurious-dragon} - - Nov-22-2016 04:15:44 PM +UTC
- Block number: 2,675,000
- ETH price: $9.84 USD
- ethereum.org on waybackmachine - -#### Summary {#spurious-dragon-summary} - -The Spurious Dragon fork was the second response to the denial of service (DoS) attacks on the network (September/October 2016) including: - -- tuning opcode pricing to prevent future attacks on the network. -- enabling “debloat” of the blockchain state. -- adding replay attack protection. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) - - - -- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _prevents transactions from one Ethereum chain from being rebroadcasted on an alternative chain, for example a testnet transaction being replayed on the main Ethereum chain._ -- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _adjusts prices of `EXP` opcode – makes it more difficult to slow down the network via computationally expensive contract operations._ -- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _allows for removal of empty accounts added via the DOS attacks._ -- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _changes the maximum code size that a contract on the blockchain can have – to 24576 bytes._ - - - ---- - -### Tangerine whistle {#tangerine-whistle} - - Oct-18-2016 01:19:31 PM +UTC
- Block number: 2,463,000
- ETH price: $12.50 USD
- ethereum.org on waybackmachine - -#### Summary {#tangerine-whistle-summary} - -The Tangerine Whistle fork was the first response to the denial of service (DoS) attacks on the network (September/October 2016) including: - -- addressing urgent network health issues concerning underpriced operation codes. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) - - - -- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _increases gas costs of opcodes that can be used in spam attacks._ -- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _reduces state size by removing a large number of empty accounts that were put in the state at very low cost due to flaws in earlier versions of the Ethereum protocol._ - - - ---- - -### DAO fork {#dao-fork} - - Jul-20-2016 01:20:40 PM +UTC
- Block number: 1,920,000
- ETH price: $12.54 USD
- ethereum.org on waybackmachine - -#### Summary {#dao-fork-summary} - -The DAO fork was in response to the [2016 DAO attack](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/) where an insecure [DAO](/glossary/#dao) contract was drained of over 3.6 million ETH in a hack. The fork moved the funds from the faulty contract to a [new contract](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) with a single function: withdraw. Anyone who lost funds could withdraw 1 ETH for every 100 DAO tokens in their wallets. - -This course of action was voted on by the Ethereum community. Any ETH holder was able to vote via a transaction on [a voting platform](http://v1.carbonvote.com/). The decision to fork reached over 85% of the votes. - -Some miners refused to fork because the DAO incident wasn't a defect in the protocol. They went on to form [Ethereum Classic](https://ethereumclassic.org/). - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) - ---- - -### Homestead {#homestead} - - Mar-14-2016 06:49:53 PM +UTC
- Block number: 1,150,000
- ETH price: $12.50 USD
- ethereum.org on waybackmachine - -#### Summary {#homestead-summary} - -The Homestead fork that looked to the future. It included several protocol changes and a networking change that gave Ethereum the ability to do further network upgrades. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2016/02/29/homestead-release/) - - - -- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _makes edits to contract creation process._ -- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _adds new opcode: `DELEGATECALL`_ -- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _introduces devp2p forward compatibility requirements_ - - - - - -## 2015 {#2015} - -### Frontier thawing {#frontier-thawing} - - Sep-07-2015 09:33:09 PM +UTC
- Block number: 200,000
- ETH price: $1.24 USD
- ethereum.org on waybackmachine - -#### Summary {#frontier-thawing-summary} - -The frontier thawing fork lifted the 5,000 [gas](/glossary/#gas) limit per [block](/glossary/#block) and set the default gas price to 51 [gwei](/glossary/#gwei). This allowed for transactions – transactions require 21,000 gas. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) - ---- - -### Frontier {#frontier} - - Jul-30-2015 03:26:13 PM +UTC
- Block number: 0
- ETH price: N/A
- ethereum.org on waybackmachine - -#### Summary {#frontier-summary} - -Frontier was a live, but barebone implementation of the Ethereum project. It followed the successful Olympic testing phase. It was intended for technical users, specifically developers. [Blocks](/glossary/#block) had a [gas](/glossary/#gas) limit of 5,000. This ‘thawing’ period enabled miners to start their operations and for early adopters to install their clients without having to ‘rush’. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) - - - -## 2014 {#2014} - -### Ether sale {#ether-sale} - - July 22 - September 02, 2014
- ethereum.org on waybackmachine - -Ether officially went on sale for 42 days. You could buy it with BTC. - -[Read the Ethereum Foundation announcement](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) - ---- - -### Yellowpaper released {#yellowpaper} - - April 01, 2014
- ethereum.org on waybackmachine - -The Yellow Paper, authored by Dr. Gavin Wood, is a technical definition of the Ethereum protocol. - -[View the Yellow Paper](https://github.com/ethereum/yellowpaper) - - - -## 2013 {#2013} - -### Whitepaper released {#whitepaper} - - November 27, 2013
- ethereum.org on waybackmachine - -The introductory paper, published in 2013 by Vitalik Buterin, the founder of Ethereum, before the project's launch in 2015. - - - Whitepaper - diff --git a/src/content/history/story-of-ethereum/index.md b/src/content/history/story-of-ethereum/index.md new file mode 100644 index 00000000000..981b841178a --- /dev/null +++ b/src/content/history/story-of-ethereum/index.md @@ -0,0 +1,80 @@ +--- +title: Story of Ethereum +description: The story of the Ethereum blockchain. +lang: en +sidebar: true +sidebarDepth: 1 +--- + +This page explains the story of Ethereum from its inception to its first production release. A timeline of network upgrades is also available on our [history page](/history/). + +## Inception {#inception} + +Ethereum was initially described by Vitalik Buterin in late 2013 as a result of his research and work in the Bitcoin community. Shortly thereafter, Vitalik published the [Ethereum white paper](/whitepaper/whitepaper-pdf), where he described in detail the technical design and rationale for the Ethereum protocol and smart contracts architecture. In January 2014, Ethereum was formally announced by Vitalik at the The North American Bitcoin Conference in Miami, Florida, USA. + +![Vitalik Buterin's announcement for the launch of Ethereum on the bitcoin talk forums](bitcointalk-post.png) +_Vitalik Buterin's announcement for the launch of Ethereum on [bitcointalk.org](https://bitcointalk.org/index.php?topic=428589.0)_ + +Around that time, Vitalik also started working with Dr. Gavin Wood. In April 2014, Gavin published the [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) that would serve as the technical specification for the Ethereum Virtual Machine (EVM). By following the detailed specification in the Yellow Paper, Ethereum clients were implemented in seven programming languages (C++, Go, Python, Java, JavaScript, Haskell, Rust) by 2016, some of which have since been deprecated. + +## The Ethereum Foundation and ether presale {#foundation-and-presale} + +In addition to developing the software for Ethereum, the ability to launch a new cryptocurrency and blockchain requires a massive bootstrapping effort in order to assemble the resources needed to get it up and running. To kickstart a large network of developers, miners, investors, and other stakeholders, Ethereum announced its plan to conduct a presale of ether tokens, the currency unit of Ethereum. The legal and financial complexities of raising funds through a presale led to the creation of several legal entities, including the Ethereum Foundation (Stiftung Ethereum) established June 2014 in Zug, Switzerland. + +Beginning in July 2014, Ethereum distributed the initial allocation of ether via a 42-day public ether presale, netting 31,591 bitcoins, worth $18,439,086 at that time, in exchange for about 60,102,216 ether. The results of the sale were initially used to pay back mounting legal debts and also for the months of developer effort that had yet to be compensated, and to finance the ongoing development of the Ethereum. + +- [Official announcement of the ether sale](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale) + +- [Slacknation ether sale report](https://medium.com/@slacknation/overview-ethereum-s-initial-public-sale-563c05e95501) + +- [Presale T&Cs](https://www.cryptocompare.com/media/1383735/pdfs-termsandconditionsoftheethereumgenesissale.pdf) + +## ETH DEV and Ethereum development {#development} + +Following the successful ether presale, Ethereum development was formalized under a non-for-profit organization called ETH DEV, which managed the development of Ethereum under contract from Ethereum Suisse – with Vitalik Buterin, Gavin Wood, and Jeffrey Wilcke as the 3 directors of the organization. Developer interest in Ethereum grew steadily throughout 2014 and the ETH DEV team delivered a series of proof-of-concept (PoC) releases for the development community to evaluate. Frequent posts by ETH DEV team on the the Ethereum blog also kept the excitement and momentum around Ethereum going. Increasing traffic and growing user-base on both the Ethereum forum and the ethereum subreddit testified that the platform is attracting a fast-growing and devoted developer community. This trend has been continuing to this very day. + +## DEVCON-0 {#devcon-0} + +In November 2014, ETH DEV organized the DEVCON-0 event, which brought together Ethereum developers from around the world to Berlin to meet and discuss a diverse range of Ethereum technology topics. Several of the presentations and sessions at DEVCON-0 would later drive important initiatives to make Ethereum more reliable, more secure, and more scalable. Overall, the event galvanized developers as they continued to work towards the launch of Ethereum. + +- [DEVCON-0 talks youtube playlist](https://www.youtube.com/watch?v=_BvvUlKDqp0&list=PLJqWcTqh_zKEjpSej3ddtDOKPRGl_7MhS) +- [DEVCON-0 reddit post](https://www.reddit.com/r/ethereum/comments/2nle7m/community_update_whats_going_on_devcon0/) +- [Gav’s DEV update mentioning DEVCON-0](https://blog.ethereum.org/2014/11/18/gavs-d%CE%BEv-update-iii/) +- [DEVcon-0 recap blog post](https://blog.ethereum.org/2014/12/05/d%CE%BEvcon-0-recap/) + +## Olympic testnet, bug bounty and security audit {#olympic-testnet} + +Throughout 2014 and 2015 development went through a series of proof of concept releases leading to the 9th POC open testnet, called Olympic. The developer community was invited to test the limits of the network and a substantial prize fund was allocated to award those holding various records or having success in breaking the system in some way or other. The rewards were announced officially a month after the live release. + +In early 2015, an Ethereum Bounty Program was launched, offering BTC rewards for finding vulnerabilities in any part of the Ethereum software stack. This has undoubtedly contributed to the reliability and security of Ethereum and the confidence of the Ethereum community in the technology. The bounty program is currently still active. + +The Ethereum security audit began at the end of 2014 and continued through the first half of 2015. Ethereum engaged multiple third party software security firms to conduct an end-to-end audit of all protocol-critical components (EVM, networking, proof-of-work). The audits uncovered security issues that were addressed and tested again and as a result ultimately led to a more secure platform. + +- [Olympic testnet prerelease](https://blog.ethereum.org/2015/05/09/olympic-frontier-pre-release/) +- [Olympic rewards announced](https://blog.ethereum.org/2015/08/26/olympic-rewards-announced/) +- [Bug bounty program launch](https://blog.ethereum.org/2015/03/20/juttas-update-bug-bounty-program-security-audit/) +- [Least Authority audit blogpost](https://blog.ethereum.org/2015/07/07/know-ethereum-secure/) + +## The Ethereum Frontier launch {#frontier-launch} + +The Ethereum Frontier network launched on July 30th, 2015, and developers began writing smart contracts and decentralized apps to deploy on the live Ethereum network. In addition, miners began to join the Ethereum network to help secure the Ethereum blockchain and earn ether from mining blocks. Even though the Frontier release is the first milestone in the Ethereum project and was intended for use by developers as a beta version, it turned out to be more capable and reliable than anyone expected, and developers rushed in to build solutions and improve the Ethereum ecosystem. + +- [Original announcement of the release scheme by Vinay Gupta](https://blog.ethereum.org/2015/03/03/ethereum-launch-process/) +- [Frontier is coming - Frontier launch announcement by Stephan Tual](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) +- [Frontier launch final steps - Follow-up post to announcement](https://blog.ethereum.org/2015/07/27/final-steps/) +- [Ethereum goes live with Frontier launch](https://blog.ethereum.org/2015/07/30/ethereum-launches/) +- [The frontier website](https://web.archive.org/web/20160207033817/https://ethereum.org/) + +## DEVCON-1 {#devcon-1} + +The second developers’ conference DEVCON-1 took place in the city of London at the beginning of November 2015. The 5-day event featured more than 100 presentations, panel discussions and lightning talks, attracted more than 400 participants, a mix of developers, entrepreneurs, thinkers, and business executives. The talks were all recorded and are freely available + +The presence of large companies like UBS, IBM and Microsoft clearly indicated enterprise interest in the technology. Microsoft announced that it would offer Ethereum on its new Blockchain as a Service offering on the Microsoft Azure cloud platform. In conjunction with DEVCON-1, this announcement will be remembered as the moment when blockchain technology became mainstream, with Ethereum at the center of it. + +[DEVCON-1 talks Youtube playlist](https://www.youtube.com/playlist?list=PLJqWcTqh_zKHQUFX4IaVjWjfT2tbS4NVk) + +## The Homestead release {#homestead-release} + +Homestead was the second major version of the Ethereum platform and the first production release of Ethereum. It includes several protocol changes and a networking change that provides the ability to do further network upgrades. The first version of Ethereum, called the Frontier release, was essentially a beta release that allowed developers to learn, experiment, and begin building Ethereum decentralized apps and tools. + +At this point Ethereum was a production network. Since the Homestead release Ethereum has undergone many significant changes. These are enumerated on our [history page](/history/). There will also be more changes to Ethereum in the future. The [Merge](/upgrades/merge), expected in Q3-Q4 2022, will arguably be the most substantial upgrade since inception. Further upgrades beyond the merge are sketched out in the Ethereum [roadmap](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698). The design rationale at the time of the Homestead release can be read on our [design rationale page](/history/design-rationale/) From b739ff826e10676ac7b2d6ca09d7fe05eb1bc55e Mon Sep 17 00:00:00 2001 From: Joshua <30259508@cityofglacol.ac.uk> Date: Fri, 6 May 2022 13:24:58 +0100 Subject: [PATCH 7/8] Move image into correct folder --- .../{ => story-of-ethereum}/bitcointalk-post.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/content/history/{ => story-of-ethereum}/bitcointalk-post.png (100%) diff --git a/src/content/history/bitcointalk-post.png b/src/content/history/story-of-ethereum/bitcointalk-post.png similarity index 100% rename from src/content/history/bitcointalk-post.png rename to src/content/history/story-of-ethereum/bitcointalk-post.png From ede25f6f4e8e56e05b4cd8aa8c05043e3fea4f2f Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Fri, 6 May 2022 13:27:46 +0100 Subject: [PATCH 8/8] Apply suggestions from code review --- src/content/history/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/history/index.md b/src/content/history/index.md index 4cf1b16d31b..771549f9d81 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -1,12 +1,12 @@ --- -title: Upgrade Timeline +title: Ethereum's upgrade timeline description: An Ethereum network upgrade timeline lang: en sidebar: true sidebarDepth: 1 --- -# Upgrade Timeline +# Ethereum's upgrade timeline {#upgrade-timeline} Below is a timeline of all the major milestones, forks, and updates to the Ethereum blockchain with the most recent first. To explore future protocol upgrades visit our [upgrades page](/upgrades/).