diff --git a/src/content/roadmap/scaling/index.md b/src/content/roadmap/scaling/index.md index 947dc1bdc97..7b3b770f030 100644 --- a/src/content/roadmap/scaling/index.md +++ b/src/content/roadmap/scaling/index.md @@ -45,3 +45,5 @@ This second step is known as [“Danksharding”](/roadmap/danksharding/). It is ## Current progress {#current-progress} Proto-Danksharding is likely to be one of the earlier roadmap items to be implemented. The decentralized computation steps required to set it up are already underway and several clients have implemented prototypes for handling blob data. Full Danksharding is likely several years away, as it relies upon several other roadmap items being completed first. Decentralizing rollup infrastructure is likely to be a gradual process - there are many different rollups that are building slightly different systems and will fully decentralize at different rates. + + diff --git a/src/data/quizzes/index.ts b/src/data/quizzes/index.ts index 09deda52d81..85cd1914867 100644 --- a/src/data/quizzes/index.ts +++ b/src/data/quizzes/index.ts @@ -39,6 +39,10 @@ const quizzes: RawQuizzes = { title: "run-a-node", questions: ["i001", "i002", "i003", "i004", "i005", "i006"], }, + scaling: { + title: "scaling", + questions: ["k001", "k002", "k003", "k004"], + }, } export const ethereumBasicsQuizzes: QuizzesSection[] = [ @@ -70,6 +74,11 @@ export const ethereumBasicsQuizzes: QuizzesSection[] = [ { id: "merge", level: "intermediate", + next: "scaling", + }, + { + id: "scaling", + level: "intermediate", }, ] diff --git a/src/data/quizzes/questionBank.ts b/src/data/quizzes/questionBank.ts index 6f0bc4408a4..c2b31bf8b50 100644 --- a/src/data/quizzes/questionBank.ts +++ b/src/data/quizzes/questionBank.ts @@ -1034,6 +1034,110 @@ const questionBank: QuestionBank = { ], correctAnswerId: "i006-b", }, + k001: { + prompt: "k001-prompt", + answers: [ + { + id: "k001-a", + label: "k001-a-label", + explanation: "k001-a-explanation", + }, + { + id: "k001-b", + label: "k001-b-label", + explanation: "k001-b-explanation", + }, + { + id: "k001-c", + label: "k001-c-label", + explanation: "k001-c-explanation", + }, + { + id: "k001-d", + label: "k001-d-label", + explanation: "k001-d-explanation", + }, + ], + correctAnswerId: "k001-d", + }, + k002: { + prompt: "k002-prompt", + answers: [ + { + id: "k002-a", + label: "k002-a-label", + explanation: "k002-a-explanation", + }, + { + id: "k002-b", + label: "k002-b-label", + explanation: "k002-b-explanation", + }, + { + id: "k002-c", + label: "k002-c-label", + explanation: "k002-c-explanation", + }, + { + id: "k002-d", + label: "k002-d-label", + explanation: "k002-d-explanation", + }, + ], + correctAnswerId: "k002-c", + }, + k003: { + prompt: "k003-prompt", + answers: [ + { + id: "k003-a", + label: "k003-a-label", + explanation: "k003-a-explanation", + }, + { + id: "k003-b", + label: "k003-b-label", + explanation: "k003-b-explanation", + }, + { + id: "k003-c", + label: "k003-c-label", + explanation: "k003-c-explanation", + }, + { + id: "k003-d", + label: "k003-d-label", + explanation: "k003-d-explanation", + }, + ], + correctAnswerId: "k003-d", + }, + k004: { + prompt: "k004-prompt", + answers: [ + { + id: "k004-a", + label: "k004-a-label", + explanation: "k004-a-explanation", + }, + { + id: "k004-b", + label: "k004-b-label", + explanation: "k004-b-explanation", + }, + { + id: "k004-c", + label: "k004-c-label", + explanation: "k004-c-explanation", + }, + { + id: "k004-d", + label: "k004-d-label", + explanation: "k004-d-explanation", + }, + ], + correctAnswerId: "k004-b", + } } export default questionBank diff --git a/src/intl/en/learn-quizzes.json b/src/intl/en/learn-quizzes.json index 9556ab865da..a943d47bb36 100644 --- a/src/intl/en/learn-quizzes.json +++ b/src/intl/en/learn-quizzes.json @@ -371,5 +371,41 @@ "i006-prompt": "Running a node earns network rewards", "i006-a-label": "True", "i006-a-explanation": "Simply running client software does not earn you rewards. To earn rewards, you must also be staking.", - "i006-b-label": "False" + "i006-b-label": "False", + "k001-prompt": "Which of the following is Ethereum using to scale?", + "k001-a-label": "Layer 2 rollups", + "k001-a-explanation": "These help Ethereum scale by bundling transactions, executing them, and then posting the results to Ethereum for validation and securing. Examples or rollups include Arbitrum or Optimism. This is not the only way Ethereum is scaling.", + "k001-b-label": "Proto-Danksharding", + "k001-b-explanation": "This provides a temporary and inexpensive storage option for saving rollup data to Mainnet, which currently is responsible for approximately 90% of the cost a user encounters on a rollup. This is not the only way Ethereum is scaling.", + "k001-c-label": "Danksharding", + "k001-c-explanation": "This removes the need for every validator and node on the network from being required to store 100% of the data for all rollups, reducing hardware requirements for node operators. This is not the only way Ethereum is scaling.", + "k001-d-label": "All of the above", + "k001-d-explanation": "Layer 2 rollups bundle transactions, Proto-Danksharding creates cheap temporary storage for this data, and Danksharding shares the storage burden across all validators—all helping Ethereum scale.", + "k002-prompt": "After bundling transactions and executing them, what do layer 2 rollups do next?", + "k002-a-label": "Store the data on a private server", + "k002-a-explanation": "Results are posted to Mainnet for transparency and public availability, and are not reliant on private servers.", + "k002-b-label": "Sends the proof to the user for storage", + "k002-b-explanation": "Users are not expected to hold onto the results of their transaction. This information is posted to Mainnet.", + "k002-c-label": "Submit the results to Ethereum", + "k002-c-explanation": "Layer 2 rollups post the results of their transaction execution to Mainnet, securing it in Ethereum's history", + "k002-d-label": "Delete the result to reduce costs", + "k002-d-explanation": "Layer 2 rollups post the results of their transaction execution to Mainnet. The cost savings achieved with this approach is by bundling and compressing transaction data, and ultimately storing it in cheap storage that expires once made available to those who need it.", + "k003-prompt": "How does Proto-Danksharding reduce rollup transaction costs on rollups?", + "k003-a-label": "Directly increasing the block size", + "k003-a-explanation": "Proto-Danksharding does not directly increase the gas limit, but does make the storage of rollup data less expensive by making temporary storage available", + "k003-b-label": "Splitting up which validators are required to store the data", + "k003-b-explanation": "Although full Danksharding is expected to reduce the need for all validators to store all of the data, this is preceded by Proto-Danksharding which forms a less-expensive, temporary storage option for the data produced by rollups.", + "k003-c-label": "Significantly increasing hardware requirements for node operators", + "k003-c-explanation": "This is generally not considered an acceptable option for scaling Ethereum. Great efforts are taken to minimize hardware requirements for operating a node to keep it as accessible as possible.", + "k003-d-label": "Storing its data in cheaper, temporary 'blob' storage", + "k003-d-explanation": "Proto-Danksharding introduces a temporary data storage option for rollups to allow them to more cheaply post its results to Mainnet", + "k004-prompt": "What is a critical next step for rollups to scale Ethereum?", + "k004-a-label": "Incentivize entities with powerful computers to handle all of the sequencing", + "k004-a-explanation": "One of the problems with current rollups is the centralized nature of those running the sequencers (those who decide the inclusion and ordering of transactions within a rollup). The goal is to allow anyone to participate, and not rely on a single group or entity in any way.", + "k004-b-label": "Distribute responsibility for running sequencers and provers across more people", + "k004-b-explanation": "Control over a rollup typically starts off centralized, which helps get things started, but leaves the network prone to censorship. Decentralizing the process of including transactions so anyone can participate is essential to prevent the possibility of network compromise.", + "k004-c-label": "Make all rollups conform to the same method of security", + "k004-c-explanation": "Ethereum benefits from having a wide range of approaches to security within its rollup ecosystem as a form of resiliency.", + "k004-d-label": "Data oracles to confirm storage of transaction data on private servers", + "k004-d-explanation": "Rollup data is stored on Ethereum, and does not rely on private servers or databases." } diff --git a/src/templates/roadmap.tsx b/src/templates/roadmap.tsx index f53ab5f3bbc..883c2cec3a2 100644 --- a/src/templates/roadmap.tsx +++ b/src/templates/roadmap.tsx @@ -44,6 +44,7 @@ import YouTube from "../components/YouTube" import Breadcrumbs from "../components/Breadcrumbs" import RoadmapActionCard from "../components/Roadmap/RoadmapActionCard" import RoadmapImageContent from "../components/Roadmap/RoadmapImageContent" +import QuizWidget from "../components/Quiz/QuizWidget" import { Page, InfoColumn, @@ -145,6 +146,7 @@ const components = { YouTube, RoadmapActionCard, RoadmapImageContent, + QuizWidget, } const RoadmapPage = ({ @@ -305,7 +307,10 @@ const RoadmapPage = ({ export const roadmapPageQuery = graphql` query RoadmapPage($languagesToFetch: [String!]!, $relativePath: String) { locales: allLocale( - filter: { language: { in: $languagesToFetch }, ns: { in: ["common"] } } + filter: { + language: { in: $languagesToFetch } + ns: { in: ["common", "learn-quizzes"] } + } ) { edges { node {