Skip to content

Commit

Permalink
Merge branch 'main' into bridge-ui-update
Browse files Browse the repository at this point in the history
  • Loading branch information
jlwllmr committed Sep 18, 2024
2 parents c50b2be + 154ad72 commit 84c58cf
Show file tree
Hide file tree
Showing 115 changed files with 21,458 additions and 18,451 deletions.
13 changes: 0 additions & 13 deletions .eslintignore

This file was deleted.

89 changes: 0 additions & 89 deletions .eslintrc.js

This file was deleted.

7 changes: 5 additions & 2 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Bug Report
description: Create a report to help us improve
name: Bug report
description: Create an issue to help us improve Linea documentation
labels: ['bug']
body:
- type: textarea
Expand Down Expand Up @@ -32,3 +32,6 @@ body:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
placeholder: Add screenshots here.
label: Link
description: If applicable, add Link to help locate your problem.
placeholder: Add link here.
49 changes: 49 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: Nightly check

on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch: {}

jobs:
linkCheckMdx:
name: Run link check on .mdx files
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: LinkCheck mdx files
uses: ConsenSys/docs-gha/linkcheck@main
with:
FILE_EXTENSION: mdx
MODIFIED_FILES_ONLY: no
linkCheckMd:
needs: linkCheckMdx
name: Run link check on .md files
if: always()
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: LinkCheck md files
uses: ConsenSys/docs-gha/linkcheck@main
with:
FILE_EXTENSION: md
MODIFIED_FILES_ONLY: no
slackNotification:
needs: [linkCheckMdx, linkCheckMd]
if: ${{ failure() }}
runs-on: ubuntu-latest
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: doc-ci-alerts
SLACK_COLOR: danger
SLACK_USERNAME: ci
SLACK_TITLE: Linea docs nightly build - Failure
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
MSG_MINIMAL: true
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.17.0
v20.9.0
18 changes: 0 additions & 18 deletions .stylelintrc.js

This file was deleted.

8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ In fact, it's part of the PR process.
### Contribute to community tutorials

If you've created fleshed-out guides and tutorials, or intend to, we'd love to feature your content
in our [community tutorials section](developers/guides/community).
in our [community tutorials section](./docs/developers/guides/community/index.mdx).

First, create an issue describing the content you want to see added or intend to add. If you're
representing an organization (such as a dapp), please use the ecosystem contribution issue form.
Expand Down Expand Up @@ -74,7 +74,7 @@ to manage Node.js versions on your machine.
### Installing recommended Node.js version with `nvm`

1. Follow the above instructions to install `nvm` on your machine, or go [here](https://github.com/nvm-sh/nvm#installing-and-updating).
2. Go to root folder of this project in your terminal.
2. Go to the root folder of this project in your terminal.
3. Run `nvm install` followed by `nvm use`. This will install the version specified by this project in the `.nvmrc` file.

### Running this project
Expand All @@ -95,15 +95,15 @@ to manage Node.js versions on your machine.

### Build

$ npm run build
$ npm run build

This command generates static content into the `build` directory and can be served using any static
contents hosting service.

### Adding new words to the dictionary

This repository includes a _linter_, which you can think of as a spell-check that also checks code
formatting and standards, and a lot more. It's possible that you will use a word in your content
formatting and standards, and a lot more. It's possible that you might use a word in your content
that is not known to the linter, and your build, or commit, will fail.
You can run the linter any time with the command `npm run lint`.
Expand Down
59 changes: 23 additions & 36 deletions docs/architecture/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ image: /img/socialCards/architecture-of-linea.jpg

## Linea's ideal state

Linea has the goal of being a fully decentralized, permissionless network. To that end, we are
building towards an architecture made up of three main elements:
Linea aims to be a fully decentralized, permissionless network. To support this goal, the Linea architecture is made up of three main elements:

- Sequencer
- Prover
Expand All @@ -19,7 +18,7 @@ building towards an architecture made up of three main elements:
## Current state

Linea is in mainnet status, and the team is fervently working towards full decentralization.
Currently, this is a good representation of the main components of Linea, and how they interact:
The following is a good representation of the main components of Linea, and how they interact:

<div class="center-container">
<div class="img-large">
Expand All @@ -32,38 +31,36 @@ Currently, this is a good representation of the main components of Linea, and ho

## First of all: what _is_ Linea, anyway? What's a zkEVM L2?

There are a number of different mental models that people in web3 use to explain these different
networks and how they relate to one another. Some people prefer to call them "rollup networks",
or "scaling solutions"; probably the most popular way of discussing them is by imagining them as
"layers", where one network is "built on top of another". Let's try and set metaphor aside for
a moment, and speak in clear terms:
There are several different mental models that people use to explain the different
networks and how they relate to one another. Some people prefer to call L2s "rollup networks",
or "scaling solutions". The term "layer" is a popular mental model: where one network is "built on top of another".

Let's set metaphor aside for a moment, and clarify:

**The Ethereum network has several functional areas:**

- It has the _blockchain_, where it keeps track of addresses, and which tokens are allocated to
which addresses;
- It has the _consensus_ mechanism, wherein many many nodes communicate about the movement of
tokens from one address to another, and each keeps their local copy of the ledger up to date;
- And it has the _execution environment_, wherein computer programs can be run. That's the "EVM",
or "Ethereum Virtual Machine", part of things.
- _Blockchain_: keeps track of addresses, and which tokens are allocated to
which addresses
- _Consensus_ mechanism: wherein many many nodes communicate about the movement of
tokens from one address to another, and each keeps their local copy of the ledger up to date
- _Execution environment_: the EVM (Ethereum Virtual Machine) wherein computer programs can be run.

These three areas are heavily interconnected, and this is a simplification, but it's a helpful
one to understand what's going on with other networks.
one to understand the tradeoffs all networks must make.

Ethereum prioritizes security: that consensus mechanism is designed to ensure that no one can
singlehandedly alter the state of the network. This is a very impressive feat of engineering,
and it comes with a tradeoff: the execution environment is highly limited in the amount of work
it can do, because the consensus mechanism intentionally runs slowly, to keep everything safe.

Linea, and other networks like it, is designed to participate in the security mechanism of Ethereum,
while optimizing for execution. In other words, it allows people to do lots of transactions, run
lots of programs, deploy contracts, mint NFTs, absolutely go to town—fast, and cheap-and then
report all that back to Ethereum, and include it in Ethereum's blockchain. By sending regular
Linea and other L2s are designed to participate in the security mechanism of Ethereum,
while optimizing for execution. In other words, L2s enables users to make many transactions, run
lots of programs, deploy contracts, mint NFTs, absolutely go to town—fast and cheap, and then compresses this data into a report back to Ethereum for inclusion in Ethereum's blockchain. By sending regular
reports of activity on Linea to Ethereum, the network can optimize for execution without being as
limited by security.

This is the action known as "rolling up": we would say that Linea "rolls up its transactions to
Ethereum". And the fact that it relies on Ethereum for something-the security-leads people to say
This is the action known as "rolling up": we can say that Linea "rolls up its transactions to
Ethereum". And the fact that it relies on Ethereum for its security leads people to say
that it's "built on top of Ethereum": it's a "second-layer network", an L2. And before you ask,
yes, Ethereum is an L1, and L3s exist, too: networks that roll up to Linea would roll up to
Ethereum.
Expand All @@ -72,7 +69,7 @@ The trick is in how that _rollup_ happens. Linea is special: it uses cutting-edg
a branch of mathematics and computer science often referred to as zero-knowledge, or
_zero-knowledge cryptography_, to prove to the Ethereum network that everything that is happening
on the Linea network is, in fact, happening, without having to submit a complete record of every
last transaction and check each one. That's the 'zk' part.
last transaction and check each one. Instead, Linea submits a verifiable proof to Ethereum of each transaction: that's the 'zk' part.

So, now that we've walked through some concepts, we can roll it all up: Linea is a zkEVM L2
network.
Expand Down Expand Up @@ -115,18 +112,8 @@ _...in other words, there's a lot involved._
</div>
</div>

## Simplifying things

In order to make this explanation as clear and navigable as possible, in the [Linea Stack section](architecture/stack)
we'll break each component down, and explain it in three steps:

- What is it?
- What does it do?
- How does it do it?

Let's start with the thing that a lot of users encounter when trying to access an L2 for the first
time: a bridge.
## Next steps

But not just any bridge; there are a lot of data to pass back and forth between Linea and other
networks, and therefore, Linea has more than one bridge; and that number is likely to continue to
grow. But there's one in particular that matters: the [Linea canonical message service](architecture/stack/canonical-msg-service).
- Learn more about the different components that comprise the [Linea architecture](./stack/index.mdx).
- Understand the first point of contact for many new L2 users, the bridge. Linea has more than one bridge; and that number is likely to continue to
grow. The [Linea canonical message service](./stack/canonical-msg-service/index.mdx) is key to these bridges and how they function.
Loading

0 comments on commit 84c58cf

Please sign in to comment.