Skip to content

Commit

Permalink
Merge branch 'dev' into pr/11477
Browse files Browse the repository at this point in the history
  • Loading branch information
wackerow committed Mar 29, 2024
2 parents 3e7d808 + 655da1c commit 1c298df
Show file tree
Hide file tree
Showing 946 changed files with 20,418 additions and 18,658 deletions.
538 changes: 536 additions & 2 deletions .all-contributorsrc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/suggest_layer2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ body:
id: layer_2_dapp_ecosystem
attributes:
label: Link to dapp ecosystem (if applicable)
description: "Please provide a link to the dapp ecosystem. (ex: https://portal.arbitrum.one/, https://www.optimism.io/apps/all)"
description: "Please provide a link to the dapp ecosystem. (ex: https://portal.arbitrum.io/, https://www.optimism.io/apps)"
- type: input
id: layer_2_token_contract_list
attributes:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/get-crowdin-contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,5 @@ jobs:
- name: Create Pull Request
run: |
gh auth login --with-token <<< ${{ secrets.GITHUB_TOKEN }}
gh auth login --with-token ${{ secrets.GITHUB_TOKEN }}
gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update translation contributors from Crowdin - ${{ env.READABLE_DATE }}" --body-file pr_body.txt
2 changes: 1 addition & 1 deletion .github/workflows/get-translation-progress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,5 @@ jobs:
- name: Create Pull Request
run: |
gh auth login --with-token <<< ${{ secrets.GITHUB_TOKEN }}
gh auth login --with-token ${{ secrets.GITHUB_TOKEN }}
gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update translation progress from Crowdin - ${{ env.READABLE_DATE }}" --body-file pr_body.txt
59 changes: 59 additions & 0 deletions .github/workflows/import-community-events.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Import community events

on:
schedule:
- cron: "0 0 * * SUN" # Runs every Sunday at midnight
workflow_dispatch:

jobs:
create_pr:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@master

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18

- name: Install dependencies
run: yarn install

- name: Set up git
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Action"
- name: Generate timestamp and readable date
id: date
run: |
echo "TIMESTAMP=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
echo "READABLE_DATE=$(date +'%B %-d')" >> $GITHUB_ENV
- name: Fetch latest dev and create new branch
run: |
git fetch origin dev
git checkout -b "automated-update-${{ env.TIMESTAMP }}" origin/dev
- name: Run script
run: yarn events-import
env:
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}

- name: Commit and push
run: |
git add -A
git commit -m "Update community events"
git push origin "automated-update-${{ env.TIMESTAMP }}"
- name: Create PR body
run: |
echo "This PR was automatically created to update community events from external community spreadsheet." > pr_body.txt
echo "This workflows runs every Sunday at 00:00 (UTC)." >> pr_body.txt
echo "Source: https://docs.google.com/spreadsheets/d/1NEu_FCc1hnGAuRgPmbXXpf0h2lCrCOlMKbbFEqgkVDQ" >> pr_body.txt
- name: Create Pull Request
run: |
gh auth login --with-token ${{ secrets.GITHUB_TOKEN }}
gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update community events from external spreadsheet - ${{ env.READABLE_DATE }}" --body-file pr_body.txt
2 changes: 1 addition & 1 deletion .github/workflows/issue-triage-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ jobs:
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["needs-triage"]
labels: ["needs triage 📥"]
})
118 changes: 88 additions & 30 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions docs/github-issue-triage-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ This documentation outlines the current process for how issues are triaged for t

## Issue creation process

Whenever a new issue is opened, it will automatically be labeled with a `needs-triage` label. The `needs-triage` label means that the core team needs to look at the issue, and nobody should work on it yet to avoid unnecessary work. This label will be removed after the issue has been triaged by a core contributor.
Whenever a new issue is opened, it will automatically be labeled with a `needs triage 📥` label. The `needs triage 📥` label means that the core team needs to look at the issue, and nobody should work on it yet to avoid unnecessary work. This label will be removed after the issue has been triaged by a core contributor.

## Triage process

The core team will review issues with the `needs-triage` label within 5 days. In order for an issue to be considered triaged, one of the following will need to happen:
The core team will review issues with the `needs triage 📥` label within 5 days. In order for an issue to be considered triaged, one of the following will need to happen:

1. The issue will be closed if it is not needed, a duplicate, or spam.
2. If an issue needs more discussion, the `GH grooming` tag will be added, and the issue will be discussed next GitHub grooming. After this call, action items will be recorded and the issue will be considered triaged.
3. The issue is labeled with the appropriate tags for work needed (ex: `design required`, `dev required`, etc.) and open it up for assignment. More on this below.

After an issue has been triaged, the `needs-triage` label will be removed from the issue.
After an issue has been triaged, the `needs triage 📥` label will be removed from the issue.

## Assignment process

Expand Down
53 changes: 53 additions & 0 deletions docs/header-ids.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Custom header IDs for markdown documents

Html ID attributes are used to create links to specific sections of a document. In markdown, **custom header IDs** should be assigned to all header lines (lines that begin with one-or-more hash marks, `#`).

## Markdown syntax

A custom heading ID should follow these rules:

- Placed at the end of a heading line, preceded by a space, followed by a line break
- Wrapped in curly braces
- Starts with a hash-mark
- Uses kebab-case string
- Unique for the current page

For example:

```markdown
## My heading {#my-heading}

### A subheading {#a-subheading}

#### Or a longer title that can be shortened {#long-heading}
```

Note that for short headers, simply lowercasing and using hyphens instead of spaces is sufficient. For longer headers, a shortened concise version of the header is encouraged. Must not repeat the same ID on the same page.

## How are these used?

When these headers are rendered, they come with a link icon attached to it that can be used to quickly link to that section of the document.

Extending the above example, if we wanted to link to the `A subheading` section of the above document (for example living at path `/docs`), you could use the link`/docs#a-subheading` to link directly to that section.

See a live example on ethereum.org: [https://ethereum.org/en/developers/docs/blocks/#block-anatomy](https://ethereum.org/en/developers/docs/blocks/#block-anatomy)

## When to use custom header IDs

### English content

These should be created for header on every new English markdown document.

### Translated content

English files are uploaded to Crowdin for translation. Header ID's should be _inherited_ from the English version, and remain unchanged during translation.

This is to ensure that the translated content can be linked to from other documents and external links, without breaking the path. This is similar to why path and filenames are not translated, but remain in English to simplify linking and referencing.

See a live example on ethereum.org: [https://ethereum.org/es/developers/docs/blocks/#block-anatomy](https://ethereum.org/en/developers/docs/blocks/#block-anatomy)

Notice the header ID is still in English (`#block-anatomy`), but links to the Spanish (`/es/`) version of the site, at the correct section.

## When are these not needed?

Markdown files in the repo `/docs` (such as this one) do not require custom header IDs, as they are not yet displayed on the website, and do not have translated versions.
11 changes: 5 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ethereum-org-website",
"version": "8.0.0",
"version": "8.4.0",
"private": true,
"scripts": {
"dev": "next dev",
Expand All @@ -17,6 +17,7 @@
"chromatic": "chromatic --project-token fee8e66c9916",
"crowdin-clean": "rm -rf .crowdin && mkdir .crowdin",
"crowdin-import": "ts-node src/scripts/crowdin-import.ts",
"events-import": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/events-import.ts",
"markdown-checker": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/markdownChecker.ts"
},
"dependencies": {
Expand All @@ -27,7 +28,6 @@
"@emotion/styled": "^11.11.0",
"@radix-ui/react-navigation-menu": "^1.1.4",
"@socialgouv/matomo-next": "^1.8.0",
"clipboard": "^2.0.11",
"embla-carousel-react": "^7.0.0",
"ethereum-blockies-base64": "^1.0.2",
"focus-trap-react": "^10.2.3",
Expand All @@ -37,7 +37,7 @@
"i18next": "^23.6.0",
"lodash.merge": "^4.6.2",
"lodash.shuffle": "^4.2.0",
"luxon": "^3.4.3",
"lodash.union": "^4.6.0",
"next": "13.4.8",
"next-i18next": "^14.0.3",
"next-mdx-remote": "^3.0.8",
Expand All @@ -50,7 +50,7 @@
"react-i18next": "^13.3.1",
"react-icons": "^4.10.1",
"react-lite-youtube-embed": "^2.4.0",
"react-select": "^4.3.0",
"react-select": "5.8.0",
"reading-time": "^1.5.0",
"recharts": "^2.7.3",
"remark-gfm": "^3.0.1",
Expand All @@ -67,7 +67,6 @@
"@storybook/testing-library": "0.2.2",
"@svgr/webpack": "^8.1.0",
"@types/hast": "^3.0.0",
"@types/luxon": "^3.3.2",
"@types/node": "^20.4.2",
"@types/react": "^18.2.15",
"@types/react-dom": "^18.2.7",
Expand All @@ -86,7 +85,7 @@
"storybook": "7.6.6",
"storybook-react-i18next": "^2.0.9",
"ts-node": "^10.9.1",
"typescript": "^5.1.6",
"typescript": "^5.4.2",
"unified": "^10.0.0",
"unist-util-visit": "^5.0.0"
},
Expand Down
10 changes: 6 additions & 4 deletions public/_redirects
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@

/en/dart/ /en/developers/docs/programming-languages/dart/ 301!

/developers/docs/consensus-mechanisms/pow/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
/developers/docs/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!

/en/developers/docs/consensus-mechanisms/pow/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!
/en/developers/docs/mining/ /en/developers/docs/consensus-mechanisms/pow/mining/ 301!

/*/beginners /:splat/what-is-ethereum/ 301!

Expand Down Expand Up @@ -148,8 +148,6 @@

/*/eth2 /:splat/upgrades/ 301!

/*/developers/docs/scaling /:splat/developers/docs/scaling 301!

/*/developers/docs/scaling/layer-2-rollups /:splat/developers/docs/scaling 301!

/*/about/web-developer /:splat/about/#open-jobs 301!
Expand All @@ -173,3 +171,7 @@
/*/staking/withdraws /:splat/staking/withdrawals/ 301!

/*/guides/how-to-register-an-ethereum-account /:splat/guides/how-to-create-an-ethereum-account/ 301!

/*/deprecated-software /:splat/dapps/ 301!

/*/languages /:splat/contributing/translation-program/ 301!
24 changes: 9 additions & 15 deletions public/content/bridges/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@ lang: en

# Blockchain bridges {#prerequisites}

_Web3 has evolved into an ecosystem of L1 blockchains and L2 scaling solutions, each designed with unique capabilities and trade-offs. As the number of blockchain protocols increases, so does [the demand to move assets across chains](<https://dune.xyz/eliasimos/Bridge-Away-(from-Ethereum)>). To fulfill this demand, we need bridges._
_Web3 has evolved into an ecosystem of L1 blockchains and L2 scaling solutions, each designed with unique capabilities and trade-offs. As the number of blockchain protocols increases, so does the demand to move assets across chains. To fulfill this demand, we need bridges._

<Divider />

## What are bridges? {#what-are-bridges}

Blockchain bridges work just like the bridges we know in the physical world. Just as a physical bridge connects two physical locations, a blockchain bridge connects two blockchain ecosystems. Bridges facilitate communication between blockchains through the transfer of information and assets.
Blockchain bridges work just like the bridges we know in the physical world. Just as a physical bridge connects two physical locations, a blockchain bridge connects two blockchain ecosystems. **Bridges facilitate communication between blockchains through the transfer of information and assets**.

Let's consider an example:

You're from the USA and are planning a trip to Europe. You have USD, but you need EUR to spend. To exchange your USD for EUR you can use a currency exchange for a small fee.

But, what do you do if you want to make a similar exchange to use a different blockchain? Let's say you want to exchange ETH on Ethereum Mainnet for ETH on [Arbitrum](https://arbitrum.io/). Like the currency exchange we made for EUR, we need a mechanism to move our ETH from Ethereum to Arbitrum. Bridges make such a transaction possible. In this case, [Arbitrum has a native bridge](https://bridge.arbitrum.io/) that can transfer ETH from Mainnet onto Arbitrum.
But, what do you do if you want to make a similar exchange to use a different [blockchain](/glossary/#blockchain)? Let's say you want to exchange [ETH](/glossary/#ether) on Ethereum Mainnet for ETH on [Arbitrum](https://arbitrum.io/). Like the currency exchange we made for EUR, we need a mechanism to move our ETH from Ethereum to Arbitrum. Bridges make such a transaction possible. In this case, [Arbitrum has a native bridge](https://bridge.arbitrum.io/) that can transfer ETH from Mainnet onto Arbitrum.

## Why do we need bridges? {#why-do-we-need-bridges}

All blockchains have their limitations. For Ethereum to scale and keep up with demand, it has required rollups. Alternatively, L1s like Solana and Avalanche are designed differently to enable higher throughput but at the cost of decentralization.
All blockchains have their limitations. For Ethereum to scale and keep up with demand, it has required [rollups](/glossary/#rollups). Alternatively, L1s like Solana and Avalanche are designed differently to enable higher throughput but at the cost of decentralization.

However, all blockchains develop in isolated environments and have different rules and consensus mechanisms. This means they cannot natively communicate, and tokens cannot move freely between blockchains.
However, all blockchains develop in isolated environments and have different rules and [consensus](/glossary/#consensus) mechanisms. This means they cannot natively communicate, and tokens cannot move freely between blockchains.

Bridges exist to connect blockchains, allowing the transfer of information and tokens between them.

Bridges enable:
**Bridges enable**:

- the cross-chain transfer of assets and information.
- dapps to access the strengths of various blockchains – thus enhancing their capabilities (as protocols now have more design space for innovation).
- [dapps](/glossary/#dapp) to access the strengths of various blockchains – thus enhancing their capabilities (as protocols now have more design space for innovation).
- users to access new platforms and leverage the benefits of different chains.
- developers from different blockchain ecosystems to collaborate and build new platforms for the users.

Expand All @@ -57,7 +57,7 @@ If you have ETH on Ethereum Mainnet and you want to explore an alt L1 to try out

### Own native crypto assets {#own-native}

Let’s say you want to own native Bitcoin (BTC), but you only have funds on Ethereum Mainnet. To gain exposure to BTC on Ethereum, you can buy Wrapped Bitcoin (WBTC). However, WBTC is an ERC-20 token native to the Ethereum network, which means it’s an Ethereum version of Bitcoin and not the original asset on the Bitcoin blockchain. To own native BTC, you would have to bridge your assets from Ethereum to Bitcoin using a bridge. This will bridge your WBTC and convert it into native BTC. Alternatively, you might own BTC and want to use it in Ethereum DeFi protocols. This would require bridging the other way, from BTC to WBTC which can then be used as an asset on Ethereum.
Let’s say you want to own native Bitcoin (BTC), but you only have funds on Ethereum Mainnet. To gain exposure to BTC on Ethereum, you can buy Wrapped Bitcoin (WBTC). However, WBTC is an [ERC-20](/glossary/#erc-20) token native to the Ethereum network, which means it’s an Ethereum version of Bitcoin and not the original asset on the Bitcoin blockchain. To own native BTC, you would have to bridge your assets from Ethereum to Bitcoin using a bridge. This will bridge your WBTC and convert it into native BTC. Alternatively, you might own BTC and want to use it in Ethereum [DeFi](/glossary/#defi) protocols. This would require bridging the other way, from BTC to WBTC which can then be used as an asset on Ethereum.

<InfoBanner shouldCenter emoji=":bulb:">
You can also do all of the above using a <a href="/get-eth/">centralized exchange</a>. However, unless your funds are already on an exchange, it would involve multiple steps, and you’d likely be better off using a bridge.
Expand All @@ -73,7 +73,7 @@ Bridges have many types of designs and intricacies. Generally, bridges fall into
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Trusted bridges depend upon a central entity or system for their operations. | Trustless bridges operate using smart contracts and algorithms. |
| They have trust assumptions with respect to the custody of funds and the security of the bridge. Users mostly rely on the bridge operator's reputation. | They are trustless, i.e., the security of the bridge is the same as that of the underlying blockchain. |
| Users need to give up control of their crypto assets. | Through smart contracts, trustless bridges enable users to remain in control of their funds. |
| Users need to give up control of their crypto assets. | Through [smart contracts](/glossary/#smart-contract), trustless bridges enable users to remain in control of their funds. |

In a nutshell, we can say that trusted bridges have trust assumptions, whereas trustless bridges are trust-minimized and don’t make new trust assumptions beyond those of the underlying domains. Here’s how these terms can be described:

Expand Down Expand Up @@ -126,9 +126,3 @@ Bridges are crucial to onboarding users onto Ethereum L2s, and even for users wh
- [EIP-5164: Cross-Chain Execution](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _June 18, 2022 - Brendan Asselstine_
- [L2Bridge Risk Framework](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _July 5, 2022 - Bartek Kiepuszewski_
- ["Why the future will be multi-chain, but it will not be cross-chain."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _January 8, 2022 - Vitalik Buterin_
- [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_
- [Secure The Bridge: Cross-Chain Communication Done Right](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _Aug 23, 2021 - Celia Wan_
Loading

0 comments on commit 1c298df

Please sign in to comment.