Skip to content

Commit

Permalink
Merge pull request #7342 from ethereum/dev
Browse files Browse the repository at this point in the history
Deploy v4.11.0
  • Loading branch information
wackerow authored Aug 8, 2022
2 parents afeac19 + 8a7a7e3 commit 1955fc3
Show file tree
Hide file tree
Showing 124 changed files with 2,113 additions and 1,008 deletions.
55 changes: 55 additions & 0 deletions .all-contributorsrc
Original file line number Diff line number Diff line change
Expand Up @@ -8319,6 +8319,61 @@
"doc",
"ideas"
]
},
{
"login": "michaelmccallam",
"name": "Michael McCallam",
"avatar_url": "https://avatars.githubusercontent.com/u/3510607?v=4",
"profile": "https://github.com/michaelmccallam",
"contributions": [
"doc"
]
},
{
"login": "PolinaShanti",
"name": "Polina G.",
"avatar_url": "https://avatars.githubusercontent.com/u/110098268?v=4",
"profile": "https://nownodes.io/",
"contributions": [
"doc"
]
},
{
"login": "Cerebro92",
"name": "Neeraj Gahlot",
"avatar_url": "https://avatars.githubusercontent.com/u/13215478?v=4",
"profile": "https://github.com/Cerebro92",
"contributions": [
"doc",
"bug"
]
},
{
"login": "vrinek",
"name": "Kostas",
"avatar_url": "https://avatars.githubusercontent.com/u/81346?v=4",
"profile": "https://github.com/vrinek",
"contributions": [
"doc"
]
},
{
"login": "rogueassasin1729",
"name": "rogueassasin1729",
"avatar_url": "https://avatars.githubusercontent.com/u/92800000?v=4",
"profile": "https://github.com/rogueassasin1729",
"contributions": [
"doc"
]
},
{
"login": "Pandapip1",
"name": "Pandapip1",
"avatar_url": "https://avatars.githubusercontent.com/u/45835846?v=4",
"profile": "https://pandapip1.com/",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1330,6 +1330,14 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center"><a href="https://odair.dev"><img src="https://avatars.githubusercontent.com/u/45074733?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Odair Augusto Trujillo Orozco</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=OdairTrujillo" title="Documentation">📖</a> <a href="#ideas-OdairTrujillo" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://github.com/Unforkable"><img src="https://avatars.githubusercontent.com/u/86481149?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Unforkable</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=Unforkable" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Rodrigolvc"><img src="https://avatars.githubusercontent.com/u/108540208?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rodrigo vasquez</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=Rodrigolvc" title="Documentation">📖</a> <a href="#ideas-Rodrigolvc" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://github.com/michaelmccallam"><img src="https://avatars.githubusercontent.com/u/3510607?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael McCallam</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=michaelmccallam" title="Documentation">📖</a></td>
<td align="center"><a href="https://nownodes.io/"><img src="https://avatars.githubusercontent.com/u/110098268?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Polina G.</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=PolinaShanti" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Cerebro92"><img src="https://avatars.githubusercontent.com/u/13215478?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Neeraj Gahlot</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=Cerebro92" title="Documentation">📖</a> <a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3ACerebro92" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/vrinek"><img src="https://avatars.githubusercontent.com/u/81346?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kostas</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=vrinek" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/rogueassasin1729"><img src="https://avatars.githubusercontent.com/u/92800000?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rogueassasin1729</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=rogueassasin1729" title="Documentation">📖</a></td>
<td align="center"><a href="https://pandapip1.com/"><img src="https://avatars.githubusercontent.com/u/45835846?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pandapip1</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=Pandapip1" title="Documentation">📖</a></td>
</tr>
</table>

Expand Down
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ethereum-org-website",
"version": "4.10.0",
"version": "4.11.0",
"description": "Website of ethereum.org",
"main": "index.js",
"repository": "[email protected]:ethereum/ethereum-org-website.git",
Expand Down Expand Up @@ -74,6 +74,7 @@
"devDependencies": {
"@netlify/functions": "^1.0.0",
"@types/browser-lang": "^0.1.0",
"@types/github-slugger": "^1.3.0",
"@types/luxon": "^2.3.2",
"@types/mdx-js__react": "^1.5.5",
"@types/node": "^17.0.23",
Expand All @@ -84,12 +85,14 @@
"@types/styled-system": "^5.1.15",
"babel-preset-gatsby": "^2.14.0",
"github-slugger": "^1.3.0",
"gray-matter": "^4.0.3",
"husky": "^4.2.5",
"identity-obj-proxy": "^3.0.0",
"minimist": "^1.2.6",
"prettier": "^2.2.1",
"pretty-quick": "^3.1.0",
"react-test-renderer": "^17.0.1",
"ts-node": "^10.9.1",
"typescript": "^4.6.3"
},
"scripts": {
Expand All @@ -100,7 +103,8 @@
"crowdin-clean": "rm -rf .crowdin && mkdir .crowdin",
"crowdin-import": "ts-node src/scripts/crowdin-import.ts",
"format": "prettier --write \"**/*.{js,jsx,json,md}\"",
"generate-heading-ids": "node src/scripts/generate-heading-ids.js",
"markdown-checker": "node src/scripts/markdown-checker.js",
"generate-heading-ids": "ts-node --esm src/scripts/generateHeadingIds.mts",
"start": "gatsby develop",
"start:lambda": "netlify-lambda serve src/lambda",
"start:static": "gatsby build && gatsby serve",
Expand Down
1 change: 1 addition & 0 deletions src/content/bridges/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ Bridges are crucial to onboarding users onto Ethereum L2s, and even for users wh
## Further reading {#further-reading}

- [What Are Blockchain Bridges And How Can We Classify Them?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _Feb 18, 2021 - Arjun Chand_
- [What Are Cross-Chain Bridges?](https://www.alchemy.com/overviews/cross-chain-bridges) _May 10, 2022 - Alchemy_
- [Blockchain Bridges: Building Networks of Cryptonetworks](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _Sep 8, 2021 - Dmitriy Berenzon_
- [Bridges in Crypto-Space](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _Aug 23, 2021 - Ben Adar Hyman_
- [The Interoperability Trilemma](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _Oct 1, 2021 - Arjun Bhuptani_
Expand Down
1 change: 0 additions & 1 deletion src/content/community/get-involved/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ The Ethereum ecosystem is on a mission to fund public goods and impactful projec
- [Web3 Army](https://web3army.xyz/)
- [Crypto Valley Jobs](https://cryptovalley.jobs/)


## Join a DAO {#decentralized-autonomous-organizations-daos}

"DAOs" are decentralized autonomous organizations. These groups leverage Ethereum technology to facilitate organization and collaboration. For instance, for controlling membership, voting on proposals, or managing pooled assets. While DAOs are still experimental, they offer opportunities for you to find groups that you identify with, find collaborators, and grow your impact on the Ethereum community. [More on DAOs](/dao/)
Expand Down
1 change: 0 additions & 1 deletion src/content/community/online/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ Hundreds of thousands of Ethereum enthusiasts gather in these online forums to s
<SocialListItem socialIcon="reddit"><Link to="https://www.reddit.com/r/ethfinance/">r/ethfinance</Link> - the financial side of Ethereum, including DeFi</SocialListItem>
<SocialListItem socialIcon="reddit"><Link to="https://www.reddit.com/r/ethdev/">r/ethdev</Link> - focused on Ethereum development</SocialListItem>
<SocialListItem socialIcon="reddit"><Link to="https://www.reddit.com/r/ethtrader/">r/ethtrader</Link> - trends & market analysis</SocialListItem>
<SocialListItem socialIcon="reddit"><Link to="https://www.reddit.com/r/EtherMining/">r/EtherMining</Link> - focused on securing the Ethereum Network (mining)</SocialListItem>
<SocialListItem socialIcon="reddit"><Link to="https://www.reddit.com/r/ethstaker/">r/ethstaker</Link> - welcome to all interested in staking on Ethereum</SocialListItem>
<SocialListItem socialIcon="webpage"><Link to="https://ethereum-magicians.org">Fellowship of Ethereum Magicians</Link> - community oriented around technical standards in Ethereum</SocialListItem>
<SocialListItem socialIcon="stackExchange"><Link to="https://ethereum.stackexchange.com">Ethereum Stackexchange</Link> - discussion and help for Ethereum developers</SocialListItem>
Expand Down
2 changes: 1 addition & 1 deletion src/content/community/research/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ Decentralizing the entire Ethereum tech stack is an important research area. Cur

#### Background reading {#background-reading-20}

- [Ethereum stack](/developers/docs/ethereum-stack/)
- [Ethereum stack](/developers/docs/ethereum-stack/)
- [Coinbase: Intro to Web3 Stack](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0)
- [Introduction to smart contracts](/developers/docs/smart-contracts/)
- [Introduction to decentralized storage](/developers/docs/storage/)
Expand Down
2 changes: 1 addition & 1 deletion src/content/community/support/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,4 @@ Transactions on Ethereum can sometimes get stuck if you have submitted a lower t

#### How do I mine Ethereum? {#mining-ethereum}

We do not recommend buying mining equipment if you are not already mining Ethereum. In ~Q3/Q4 2022, [The Merge](/upgrades/merge/) will happen, switching Ethereum from proof-of-work to proof-of-stake. This change means mining Ethereum will no longer be possible. If you are still interested in mining Ethereum, you can seek help from mining communities, such as [/r/EtherMining](https://www.reddit.com/r/EtherMining/).
We do not recommend buying mining equipment if you are not already mining Ethereum. In ~Q3/Q4 2022, [The Merge](/upgrades/merge/) will happen, switching Ethereum from proof-of-work to proof-of-stake. This change means mining Ethereum will no longer be possible.
2 changes: 1 addition & 1 deletion src/content/decentralized-identity/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,4 @@ There are many ambitious projects using Ethereum as a foundation for decentraliz

- [ERC-725 Alliance on GitHub](https://github.com/erc725alliance)_Supporters of the ERC725 standard for managing identity on the Ethereum blockchain_
- [SpruceID Discord server](https://discord.com/invite/Sf9tSFzrnt)_Community for enthusiasts and developers working on Sign-in with Ethereum_
- [Veramo Labs](https://discord.com/invite/Sf9tSFzrnt)_A community of developers contributing to building a framework for verifiable data for applications_
- [Veramo Labs](https://discord.gg/sYBUXpACh4)_A community of developers contributing to building a framework for verifiable data for applications_
2 changes: 1 addition & 1 deletion src/content/desci/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ DeSci aims to create an ecosystem where scientists are incentivized to openly sh
Decentralized science allows for more diverse funding sources (from [DAOs](/dao/), [quadratic donations](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) to crowdfunding and more), more accessible access data and methods, and by providing incentives for reproducibility.

### Juan Benet - DeSci, Independent Labs, & Large Scale Data Science
<iframe width="560" height="315" src="https://www.youtube.com/embed/zkXM9H90g_E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/zkXM9H90g_E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## How DeSci improves science {#desci-improves-science}

Expand Down
2 changes: 1 addition & 1 deletion src/content/developers/docs/apis/json-rpc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ None

`String` - The current network id.

The full list of current network IDs is available at [chainlist.org](https://chainlist.org). Sopme common ones are:
The full list of current network IDs is available at [chainlist.org](https://chainlist.org). Some common ones are:
`1`: Ethereum Mainnet
`2`: Morden testnet (now deprecated)
`3`: Ropsten testnet
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: Attestations
description: A description of attestations on proof-of-stake Ethereum.
lang: en
sidebar: true
---

A validator is expected to create, sign and broadcast an attestation during every epoch. This page outlines what these attestations look like and how they are processed and communciated between consensus clients.

## What is an attestation? {#what-is-an-attestation}

Every [epoch](/glossary/#epoch) (6.4 minutes) a validator proposes an attestation to the network. The attestation is for a specific slot in the epoch. The purpose of the attestation is to vote in favor of the validator's view of the chain, in particular the most recent justified block and the first block in the current epoch (known as `source` and `target` checkpoints). This information is combined for all participating validators, enabling the network to reach consensus about the state of the blockchain.

The attestation contains the following components:

- `aggregation_bits`: a bitlist of validators where the position maps to the validator index in their committee; the value (0/1) indicates whether the validator signed the `data` (i.e. whether they are active and agree with the block proposer)
- `data`: details relating to the attestation, as defined below
- `signature`: a BLS signature that aggregates the signatures of individual validators

The first task for an attesting validator is to build the `data`. The `data` contains the following information:

- `slot`: The slot number that the attestation refers to
- `index`: A number that identifies which committee the validator belongs to in a given slot
- `beacon_block_root`: Root hash of the block the validator sees at the head of the chain (the result of applying the fork-choice algorithm)
- `source`: Part of the finality vote indicating what the validators see as the most recent justified block
- `target`: Part of the finality vote indicating what the validators see as the first block in the current epoch

Once the `data` is built, the validator can flip the bit in `aggregation_bits` corresponding to their own validator index from 0 to 1 to show that they participated.

Finally, the validator signs the attestation and broadcasts it to the network.

### Aggregated attestation {#aggregated-attestation}

There is a substantial overhead associated with passing this data around the network for every validator. Therefore, the attestations from individual validators are aggregated within subnets before being broadcast more widely. This includes aggregating signatures together so that an attestation that gets broadcast includes the consensus `data` and a single signature formed by combining the signatures of all the validators that agree with that `data`. This can be checked using `aggregation_bits` because this provides the index of each validator in their committee (whose ID is provided in `data`) which can be used to query individual signatures.

In each epoch a validator in each subnet is selected to be the `aggregator`. The aggregator collects all the attestations it hears about over the gossip network that have equivalent `data` to its own. The sender of each matching attestation is recorded in the `aggregation_bits`. The aggregator then broadcasts the attestation aggregate to the wider network.

When a validator is selected to be a block proposer they package aggregate attestations from the subnets up to the latest slot in the new block.

### Attestation inclusion lifecycle {#attestation-inclusion-lifecycle}

1. Generation
2. Propagation
3. Aggregation
4. Propagation
5. Inclusion

The attestation lifecycle is outlined in the schematic below:

![attestation lifecyle](./attestation_schematic.png)

## Rewards {#rewards}

Validators are rewarded for submitting attestations. The attestation reward is dependent on two variables, the `base reward` and the `inclusion delay`. The best case for the inclusion delay is to be equal to 1.

`attestation reward = 7/8 x base reward x (1/inclusion delay)`

### Base reward {#base-reward}

The base reward is calculated according to the number of attesting validators and their effective staked ether balances:

`base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)`

#### Inclusion delay {#inclusion-delay}

At the time when the validators voted on the head of the chain (`block n`), `block n+1` was not proposed yet. Therefore attestations naturally get included **one block later** so all attestations who voted on `block n` being the chain head got included in `block n+1` and, the **inclusion delay** is 1. If the inclusion delay doubles to two slots, the attestation reward halves, because to calculate the attestation reward the the base reward is multiplied by the reciprocal of the inclusion delay.

### Attestation scenarios {#attestation-scenarios}

#### Missing Voting Validator {#missing-voting-validator}

Validators have a maximum of 1 epoch to submit their attestation. If the attestation was missed in epoch 0, they can submit it with an inclusion delay in epoch 1.

#### Missing Aggregator {#missing-aggregator}

There are 16 Aggregators per epoch in total. In addition, random validators subscribe to **two subnets for 256 epochs** and serve as a backup in case aggregators are missing.

#### Missing block proposer {#missing-block-proposer}

Note that in some cases a lucky aggregator may also become the block proposer. If the attestation was not included because the block proposer has gone missing, the next block proposer would pick the aggregated attestation up and include it into the next block. However, the **inclusion delay** will increase by one.

## Further reading {#further-reading}

- [Attestations in Vitalik's annotated consensus spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
- [Attestations in eth2book.info](<[/whitepaper/](https://eth2book.info/altair/annotated-spec/#attestation)>)

_Know of a community resource that helped you? Edit this page and add it!_
2 changes: 1 addition & 1 deletion src/content/developers/docs/evm/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ _Diagrams adapted from [Ethereum EVM illustrated](https://takenobu-hs.github.io/

All implementations of the EVM must adhere to the specification described in the Ethereum Yellowpaper.

Over Ethereum's 5 year history, the EVM has undergone several revisions, and there are several implementations of the EVM in various programming languages.
Over Ethereum's 7 year history, the EVM has undergone several revisions, and there are several implementations of the EVM in various programming languages.

All [Ethereum clients](/developers/docs/nodes-and-clients/#execution-clients) include an EVM implementation. Additionally there are multiple standalone implementations, including:

Expand Down
Loading

0 comments on commit 1955fc3

Please sign in to comment.