From 994f25abeb959097ba9b6738296568c8f003bbc1 Mon Sep 17 00:00:00 2001 From: yqrashawn Date: Fri, 27 Dec 2024 11:06:23 +0800 Subject: [PATCH 1/3] feat(blog): add research-blog.data.json --- .gitignore | 1 + scripts/download-blog-posts.data.json.mjs | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a368901ee..23dd7f89e 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ next-env.d.ts .turbo /src/app/blog/data.json +/src/research-blog.data.json diff --git a/scripts/download-blog-posts.data.json.mjs b/scripts/download-blog-posts.data.json.mjs index cafb13204..ca62ec883 100644 --- a/scripts/download-blog-posts.data.json.mjs +++ b/scripts/download-blog-posts.data.json.mjs @@ -2,12 +2,20 @@ import fs from "fs" import fetch from "node-fetch" const isMainnet = process.env.NEXT_PUBLIC_SCROLL_ENVIRONMENT === "Mainnet" -const POSTS_URL = `https://blog.scroll.cat/api/posts/${isMainnet ? "published" : "preview"}/data.json` + +function buildPostURL(hostType) { + return `https://blog.scroll.cat/api/posts/${isMainnet ? "published" : "preview"}/${hostType}/data.json` +} async function fetchPosts() { - await fetch(POSTS_URL, { headers: { Origin: "https://scroll.io" } }) - .then(res => res.json()) - .then(json => fs.writeFileSync("./src/app/blog/[blogId]/data.json", JSON.stringify(json, null, 2))) + await Promise.all([ + fetch(buildPostURL("scroll.io")) + .then(res => res.json()) + .then(json => fs.writeFileSync("./src/app/blog/[blogId]/data.json", JSON.stringify(json, null, 2))), + fetch(buildPostURL("research.scroll.io")) + .then(res => res.json()) + .then(json => fs.writeFileSync("./src/research-blog.data.json", JSON.stringify(json, null, 2))), + ]) } fetchPosts() From 320953db3a7d5f9a3d760002e3c71d3f7001a0f7 Mon Sep 17 00:00:00 2001 From: yqrashawn Date: Mon, 30 Dec 2024 09:12:02 +0800 Subject: [PATCH 2/3] refactor: remove assets/blog --- src/app/blog/[blogId]/data.json | 5261 ----------------- src/assets/blog/alpha-testnet.md | 17 - src/assets/blog/architecture.md | 77 - src/assets/blog/community-update-november.md | 50 - src/assets/blog/community-update-october.md | 50 - src/assets/blog/contribute-to-scroll.md | 21 - src/assets/blog/data-availability-4844.md | 157 - src/assets/blog/designing-scroll-origins.md | 30 - src/assets/blog/founder-letter.md | 63 - src/assets/blog/kzg.md | 153 - src/assets/blog/pre-alpha-testnet.md | 42 - src/assets/blog/proof-generation.md | 420 -- src/assets/blog/release-note-0109.md | 17 - src/assets/blog/scaling-security.md | 75 - src/assets/blog/scroll-origins-nft.md | 45 - src/assets/blog/scroll-sepolia.md | 98 - src/assets/blog/scrolls-fresh-coat.md | 27 - src/assets/blog/scrolls-security-measures.md | 87 - src/assets/blog/technical-principles.md | 70 - .../blog/upgrading-pre-alpha-testnet.md | 47 - src/assets/blog/vision-and-values.md | 50 - src/assets/blog/zkevm.md | 159 - 22 files changed, 7016 deletions(-) delete mode 100644 src/app/blog/[blogId]/data.json delete mode 100644 src/assets/blog/alpha-testnet.md delete mode 100644 src/assets/blog/architecture.md delete mode 100644 src/assets/blog/community-update-november.md delete mode 100644 src/assets/blog/community-update-october.md delete mode 100644 src/assets/blog/contribute-to-scroll.md delete mode 100644 src/assets/blog/data-availability-4844.md delete mode 100644 src/assets/blog/designing-scroll-origins.md delete mode 100644 src/assets/blog/founder-letter.md delete mode 100644 src/assets/blog/kzg.md delete mode 100644 src/assets/blog/pre-alpha-testnet.md delete mode 100644 src/assets/blog/proof-generation.md delete mode 100644 src/assets/blog/release-note-0109.md delete mode 100644 src/assets/blog/scaling-security.md delete mode 100644 src/assets/blog/scroll-origins-nft.md delete mode 100644 src/assets/blog/scroll-sepolia.md delete mode 100644 src/assets/blog/scrolls-fresh-coat.md delete mode 100644 src/assets/blog/scrolls-security-measures.md delete mode 100644 src/assets/blog/technical-principles.md delete mode 100644 src/assets/blog/upgrading-pre-alpha-testnet.md delete mode 100644 src/assets/blog/vision-and-values.md delete mode 100644 src/assets/blog/zkevm.md diff --git a/src/app/blog/[blogId]/data.json b/src/app/blog/[blogId]/data.json deleted file mode 100644 index ecd8d4566..000000000 --- a/src/app/blog/[blogId]/data.json +++ /dev/null @@ -1,5261 +0,0 @@ -[ - { - "_id": "676060eda959bd00015494cf", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "The First Release of the OpenVM Framework is Live", - "slug": "the-first-release-of-the-openvm-framework-is-live", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner--1-.png", - "created_at": "2024-12-16T17:18:37.000Z", - "updated_at": "2024-12-16T17:21:45.000Z", - "published_at": "2024-12-16T17:21:45.000Z", - "custom_excerpt": "We’re excited to announce the first release of the OpenVM framework and Scroll is moving to zkVMs using the OpenVM framework. ", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "We’re excited to announce the first release of the OpenVM framework and Scroll is moving to zkVMs using the OpenVM framework. ", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/12/Xspace-banner_Quill-x-Scroll_1024_512.png", - "twitter_title": "The First Release of the OpenVM Framework is Live", - "twitter_description": "We’re excited to announce the first release of the OpenVM framework and Scroll is moving to zkVMs using the OpenVM framework. ", - "meta_title": "The First Release of the OpenVM Framework is Live", - "meta_description": "We’re excited to announce the first release of the OpenVM framework and Scroll is moving to zkVMs using the OpenVM framework. ", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "the-first-release-of-the-openvm-framework-is-live", - "type": "Announcement", - "date": "2024-12-16", - "posterImg": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner--1-.png", - "posterTitle": "", - "summary": "We’re excited to announce the first release of the OpenVM framework and Scroll is moving to zkVMs using the OpenVM framework. ", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/12/Xspace-banner_Quill-x-Scroll_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "676041ab958eae0001725728", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Matcha x Scroll: Gasless Swaps and Zero Fee Trades", - "slug": "matcha-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner-1.png", - "created_at": "2024-12-16T15:05:15.000Z", - "updated_at": "2024-12-16T15:19:31.000Z", - "published_at": "2024-12-16T15:19:31.000Z", - "custom_excerpt": "Matcha, the DEX aggregator, now supports Scroll, the first zkEVM network in Matcha’s ecosystem.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Matcha, the DEX aggregator, now supports Scroll, the first zkEVM network in Matcha’s ecosystem.", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": "Matcha x Scroll: Gasless Swaps and Zero Fee Trades", - "twitter_description": "Matcha, the DEX aggregator, now supports Scroll, the first zkEVM network in Matcha’s ecosystem.", - "meta_title": "Matcha x Scroll: Gasless Swaps and Zero Fee Trades", - "meta_description": "Matcha, the DEX aggregator, now supports Scroll, the first zkEVM network in Matcha’s ecosystem.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "matcha-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-12-16", - "posterImg": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner-1.png", - "posterTitle": "", - "summary": "Matcha, the DEX aggregator, now supports Scroll, the first zkEVM network in Matcha’s ecosystem.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "674efae14a2e8a0001ce0d73", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Rho Markets: Scroll’s Liquidity Layer", - "slug": "rho-markets-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner.png", - "created_at": "2024-12-03T12:34:41.000Z", - "updated_at": "2024-12-03T13:19:00.000Z", - "published_at": "2024-12-03T13:19:00.000Z", - "custom_excerpt": "We're excited to highlight Rho Markets, Scroll's first native lending protocol. Rho Markets is built to simplify the onchain lending experience for users, empowering both lenders and borrowers.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "We're excited to highlight Rho Markets, Scroll's first native lending protocol. Rho Markets is built to simplify the onchain lending experience for users, empowering both lenders and borrowers.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/12/Xspace-cover_RhoMarkets_1028_538.png", - "twitter_title": "Rho Markets: Scroll’s Liquidity Layer", - "twitter_description": "We're excited to highlight Rho Markets, Scroll's first native lending protocol. Rho Markets is built to simplify the onchain lending experience for users, empowering both lenders and borrowers.", - "meta_title": "Rho Markets: Scroll’s Liquidity Layer", - "meta_description": "We're excited to highlight Rho Markets, Scroll's first native lending protocol. Rho Markets is built to simplify the onchain lending experience for users, empowering both lenders and borrowers.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "rho-markets-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-12-03", - "posterImg": "https://scroll.ghost.io/content/images/2024/12/Blog-Banner.png", - "posterTitle": "", - "summary": "We're excited to highlight Rho Markets, Scroll's first native lending protocol. Rho Markets is built to simplify the onchain lending experience for users, empowering both lenders and borrowers.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/12/Xspace-cover_RhoMarkets_1028_538.png", - "language": "en", - "valid": true - }, - { - "_id": "6745ba6e0cad0d0001e72726", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Rollie Finance x Scroll: One-Swipe Trading", - "slug": "rollie-finance-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Rollie-x-Scroll.png", - "created_at": "2024-11-26T12:09:18.000Z", - "updated_at": "2024-11-26T13:27:06.000Z", - "published_at": "2024-11-26T13:27:06.000Z", - "custom_excerpt": "Rollie Finance is a decentralized perpetual exchange protocol built on Scroll. It enables the leveraged trading of a large number of assets such as cryptocurrencies, forex, commodities, equities, and other real-world assets.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Rollie Finance is a decentralized perpetual exchange protocol built on Scroll. It enables the leveraged trading of a large number of assets such as cryptocurrencies, forex, commodities, equities, and other real-world assets.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Rollie-x-Scroll-_1028_538.jpg", - "twitter_title": "Rollie Finance x Scroll: One-Swipe Trading", - "twitter_description": "Rollie Finance is a decentralized perpetual exchange protocol built on Scroll. It enables the leveraged trading of a large number of assets such as cryptocurrencies, forex, commodities, equities, and other real-world assets.", - "meta_title": "Rollie Finance x Scroll: One-Swipe Trading", - "meta_description": "Rollie Finance is a decentralized perpetual exchange protocol built on Scroll. It enables the leveraged trading of a large number of assets such ", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "rollie-finance-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-11-26", - "posterImg": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Rollie-x-Scroll.png", - "posterTitle": "", - "summary": "Rollie Finance is a decentralized perpetual exchange protocol built on Scroll. It enables the leveraged trading of a large number of assets such as cryptocurrencies, forex, commodities, equities, and other real-world assets.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Rollie-x-Scroll-_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "67453f34d60e580001cdb2f1", - "authors": [ - { - "name": "Adrian" - } - ], - "title": "Decentralized Science (DeSci): Fixing One of the World’s Most Broken Systems", - "slug": "decentralized-science", - "status": "draft", - "feature_image": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--DeSci.png", - "created_at": "2024-11-26T03:23:32.000Z", - "updated_at": "2024-11-26T11:23:49.000Z", - "published_at": "2024-11-26T03:36:25.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - }, - "excerpt": "The modern scientific system is broken — major findings are locked behind expensive paywalls, young researchers struggle to secure funding, established institutions monopolize resources, and the pressure to \"publish or perish\" has created a culture that values headlines over breakthroughs.\n\nInstead of pushing the boundaries of human knowledge, scientific researchers spend half their careers writing grant proposals and jumping through bureaucratic hoops. It is an endless maze of red tape that fav", - "reading_time": 3, - "og_image": "https://scroll.ghost.io/content/images/2024/11/Hero-page_Blog-Banner--DeSci---_1280-_721-1.png", - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/11/Hero-page_Blog-Banner--DeSci---_1280-_721.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": "Web3 tools, such as DAOs, smart contracts, and quadratic funding, are solving issues plaguing scientific research.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "decentralized-science", - "type": "General", - "date": "2024-11-26", - "posterImg": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--DeSci.png", - "posterTitle": "", - "summary": "The modern scientific system is broken — major findings are locked behind expensive paywalls, young researchers struggle to secure funding, established institutions monopolize resources, and the pressure to \"publish or perish\" has created a culture that values headlines over breakthroughs.\n\nInstead of pushing the boundaries of human knowledge, scientific researchers spend half their careers writing grant proposals and jumping through bureaucratic hoops. It is an endless maze of red tape that fav", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/11/Hero-page_Blog-Banner--DeSci---_1280-_721-1.png", - "language": "en", - "valid": true - }, - { - "_id": "673f2c7705821e0001b8c76a", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Fireblocks x Scroll: Security and Scalability", - "slug": "fireblocks-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Fireblocks-x-Scroll.png", - "created_at": "2024-11-21T12:49:59.000Z", - "updated_at": "2024-11-21T13:35:54.000Z", - "published_at": "2024-11-21T13:35:54.000Z", - "custom_excerpt": "Scroll's native $SCR token boasts over 220,000 unique holders and over 1.4M SCR in total onchain transactions. Yet with great adoption comes great responsibility — that's why we are excited to announce our integration with Fireblocks, which will make $SCR ", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Scroll's native $SCR token boasts over 220,000 unique holders and over 1.4M SCR in total onchain transactions. Yet with great adoption comes great responsibility — that's why we are excited to announce our integration with Fireblocks, which will make $SCR ", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Fireblocks-x-Scroll-_1028_538.jpg", - "twitter_title": "Fireblocks x Scroll: Security and Scalability", - "twitter_description": "Scroll's native $SCR token boasts over 220,000 unique holders and over 1.4M SCR in total onchain transactions. Yet with great adoption comes great responsibility — that's why we are excited to announce our integration with Fireblocks,", - "meta_title": "Fireblocks x Scroll: Security and Scalability", - "meta_description": "Scroll's native $SCR token boasts over 220,000 unique holders and over 1.4M SCR in total onchain transactions. ", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "fireblocks-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-11-21", - "posterImg": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Fireblocks-x-Scroll.png", - "posterTitle": "", - "summary": "Scroll's native $SCR token boasts over 220,000 unique holders and over 1.4M SCR in total onchain transactions. Yet with great adoption comes great responsibility — that's why we are excited to announce our integration with Fireblocks, which will make $SCR ", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Fireblocks-x-Scroll-_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "673c829f646dad00012ddd89", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Scroll x Tempest: Set-it-and-Forget-it with Automatic Liquidity", - "slug": "scroll-x-tempest", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Tempest--x-Scroll.png", - "created_at": "2024-11-19T12:20:47.000Z", - "updated_at": "2024-11-19T14:00:14.000Z", - "published_at": "2024-11-19T13:22:15.000Z", - "custom_excerpt": "- Tempest is now live on Scroll.\n- Tempest is an automatic liquidity manager (ALM) built on Ambient Finance, Scroll’s leading DEX.\n- With Tempest, Scroll users can enjoy an easy, one-click solution for liquidity deployment, helping them secure consistent, concentrated liquidity.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "- Tempest is now live on Scroll.\n- Tempest is an automatic liquidity manager (ALM) built on Ambient Finance, Scroll’s leading DEX.\n- With Tempest, Scroll users can enjoy an easy, one-click solution for liquidity deployment, helping them secure consistent, concentrated liquidity.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Tempest--x-Scroll-_1028_538.jpg", - "twitter_title": "Scroll x Tempest: Set-it-and-Forget-it with Automatic Liquidity", - "twitter_description": "We are pleased to announce a collaboration between Scroll and Tempest, a DeFi liquidity management protocol.", - "meta_title": "Scroll x Tempest: Set-it-and-Forget-it with Automatic Liq", - "meta_description": "We are pleased to announce a collaboration between Scroll and Tempest, a DeFi liquidity management protocol.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scroll-x-tempest", - "type": "Ecosystem highlights", - "date": "2024-11-19", - "posterImg": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_-Blog-Banner--Tempest--x-Scroll.png", - "posterTitle": "", - "summary": "- Tempest is now live on Scroll.\n- Tempest is an automatic liquidity manager (ALM) built on Ambient Finance, Scroll’s leading DEX.\n- With Tempest, Scroll users can enjoy an easy, one-click solution for liquidity deployment, helping them secure consistent, concentrated liquidity.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_Tempest--x-Scroll-_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "6730f09852b445000187213c", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Supporting Developers with the ZK Talent Badge", - "slug": "supporting-developers-with-the-zk-talent-badge", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_--ZK-Talent-Badge-Launch@3x.png", - "created_at": "2024-11-10T17:42:48.000Z", - "updated_at": "2024-11-10T21:50:39.000Z", - "published_at": "2024-11-10T21:50:39.000Z", - "custom_excerpt": "5 months ago, we launched Scroll Canvas, with the goal of offering users a way to display their onchain achievements as they explore the ecosystem and interact with projects deployed on Scroll. ", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "5 months ago, we launched Scroll Canvas, with the goal of offering users a way to display their onchain achievements as they explore the ecosystem and interact with projects deployed on Scroll. ", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_ZK-Talent-Badge-Launch-_-1028_538-1.png", - "twitter_title": "Supporting Developers with the ZK Talent Badge", - "twitter_description": "5 months ago, we launched Scroll Canvas, with the goal of offering users a way to display their onchain achievements as they explore the ecosystem and interact with projects deployed on Scroll.", - "meta_title": "Supporting Developers with the ZK Talent Badge", - "meta_description": "5 months ago, we launched Scroll Canvas, with the goal of offering users a way to display their onchain achievements as they explore the ", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "supporting-developers-with-the-zk-talent-badge", - "type": "Announcement", - "date": "2024-11-10", - "posterImg": "https://scroll.ghost.io/content/images/2024/11/Blog-Banner--_--ZK-Talent-Badge-Launch@3x.png", - "posterTitle": "", - "summary": "5 months ago, we launched Scroll Canvas, with the goal of offering users a way to display their onchain achievements as they explore the ecosystem and interact with projects deployed on Scroll. ", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/11/Xspace-cover_ZK-Talent-Badge-Launch-_-1028_538-1.png", - "language": "en", - "valid": true - }, - { - "_id": "672352dfb421020001cdf2e3", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Scroll SDK & Gadgets: Building the Foundation for Ethereum's Multichain Future", - "slug": "scroll-sdk-and-gadgets-building-the-foundation-for-ethereums-multichain-future", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--SDK-Blog-Banner--1.png", - "created_at": "2024-10-31T09:50:23.000Z", - "updated_at": "2024-10-31T13:15:50.000Z", - "published_at": "2024-10-31T13:15:50.000Z", - "custom_excerpt": "Scroll's vision is to bring everyone, everywhere onchain. In pursuit of this vision, Scroll has proven the power of zk-Rollups at scale — processing over 100M transactions for hundreds of protocols", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Scroll's vision is to bring everyone, everywhere onchain. In pursuit of this vision, Scroll has proven the power of zk-Rollups at scale — processing over 100M transactions for hundreds of protocols", - "reading_time": 6, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_SDK-Blog-Banner--1_1024_512.png", - "twitter_title": "Scroll SDK & Gadgets: Building the Foundation for Ethereum's Multichain Future", - "twitter_description": "Scroll's vision is to bring everyone, everywhere onchain. In pursuit of this vision, Scroll has proven the power of zk-Rollups at scale — processing over 100M transactions for hundreds of protocols, including Aave, Lido, and Safe, while reaching over 100 TPS throughput and securing up to $1.3B in TVL.", - "meta_title": "Scroll SDK & Gadgets: Building the Foundation for Ethereum's", - "meta_description": "Scroll's vision is to bring everyone, everywhere onchain. In pursuit of this vision, Scroll has proven the power of zk-Rollups at scale ", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scroll-sdk-and-gadgets-building-the-foundation-for-ethereums-multichain-future", - "type": "Announcement", - "date": "2024-10-31", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--SDK-Blog-Banner--1.png", - "posterTitle": "", - "summary": "Scroll's vision is to bring everyone, everywhere onchain. In pursuit of this vision, Scroll has proven the power of zk-Rollups at scale — processing over 100M transactions for hundreds of protocols", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_SDK-Blog-Banner--1_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "67222354b421020001cdf2a8", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Nansen x Scroll: Powering Ecosystem Growth with Data", - "slug": "nansen-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Nansen-x-Scroll.png", - "created_at": "2024-10-30T12:15:16.000Z", - "updated_at": "2024-10-30T12:46:47.000Z", - "published_at": "2024-10-30T12:38:15.000Z", - "custom_excerpt": "Introduction\n\nAt Scroll, we believe that truth lies in data.\n\nToday, we're excited to announce our collaboration with Nansen, a leading blockchain analytics platform, to bring their advanced analytics tools to the Scroll ecosystem. ", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nAt Scroll, we believe that truth lies in data.\n\nToday, we're excited to announce our collaboration with Nansen, a leading blockchain analytics platform, to bring their advanced analytics tools to the Scroll ecosystem. ", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Nansen-x-Scroll-_1028_538.jpg", - "twitter_title": "Nansen x Scroll: Powering Ecosystem Growth with Data", - "twitter_description": "Introduction\n\nAt Scroll, we believe that truth lies in data.\n\nToday, we're excited to announce our collaboration with Nansen, a leading blockchain analytics platform, to bring their advanced analytics tools to the Scroll ecosystem. This collaboration reflects our commitment to empowering builders with the best tools available.", - "meta_title": "Nansen x Scroll: Powering Ecosystem Growth with Data", - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "nansen-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-10-30", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Nansen-x-Scroll.png", - "posterTitle": "", - "summary": "Introduction\n\nAt Scroll, we believe that truth lies in data.\n\nToday, we're excited to announce our collaboration with Nansen, a leading blockchain analytics platform, to bring their advanced analytics tools to the Scroll ecosystem. ", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Nansen-x-Scroll-_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "671631388bc29b0001717a22", - "authors": [ - { - "name": "Shambhavi" - } - ], - "title": "Introducing Scroll’s First Airdrop: A Celebration of the Global Community", - "slug": "introducing-scrolls-first-airdrop-a-celebration-of-the-global-community", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-cover.png", - "created_at": "2024-10-21T10:47:20.000Z", - "updated_at": "2024-10-24T16:28:55.000Z", - "published_at": "2024-10-21T13:19:48.000Z", - "custom_excerpt": "Today, we are excited to introduce Scroll’s first airdrop to our community, celebrating the collective efforts and contributions that have contributed to Scroll’s success so far.\n", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Today, we are excited to introduce Scroll’s first airdrop to our community, celebrating the collective efforts and contributions that have contributed to Scroll’s success so far.\n", - "reading_time": 8, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Introducing Scroll’s First Airdrop", - "meta_description": "We're excited to introduce Scroll’s first airdrop to our community, celebrating the collective efforts that have contributed to Scroll’s success.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "introducing-scrolls-first-airdrop-a-celebration-of-the-global-community", - "type": "Announcement", - "date": "2024-10-21", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-cover.png", - "posterTitle": "", - "summary": "Today, we are excited to introduce Scroll’s first airdrop to our community, celebrating the collective efforts and contributions that have contributed to Scroll’s success so far.\n", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "6714eedc8bc29b000171799a", - "authors": [ - { - "name": "Raul Xavier" - } - ], - "title": "Announcing Scroll’s largest rewards program to date", - "slug": "announcing-scrolls-largest-rewards-program-to-date-3", - "status": "draft", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Rewards_2.png", - "created_at": "2024-10-20T11:51:56.000Z", - "updated_at": "2024-10-20T12:41:23.000Z", - "published_at": "2024-10-20T11:56:11.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "\n\n\n\nTL;DR\n\n\n * We reflect on the successes of Scroll Sessions and the insights gained.\n * Scroll Sessions 2 is launching with a revamped Marks system to reward more participation across the ecosystem.\n * Introducing Scroll Open, a new program aimed at fostering innovation and helping builders grow within the Scroll ecosystem.\n * Stay tuned for new opportunities and rewards as we continue to support builders and expand the ecosystem.\n\n\n\nIntroduction\n\n\nIn April, we introduced Scroll Sessions after", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "announcing-scrolls-largest-rewards-program-to-date-3", - "type": "Announcement", - "date": "2024-10-20", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Rewards_2.png", - "posterTitle": "", - "summary": "\n\n\n\nTL;DR\n\n\n * We reflect on the successes of Scroll Sessions and the insights gained.\n * Scroll Sessions 2 is launching with a revamped Marks system to reward more participation across the ecosystem.\n * Introducing Scroll Open, a new program aimed at fostering innovation and helping builders grow within the Scroll ecosystem.\n * Stay tuned for new opportunities and rewards as we continue to support builders and expand the ecosystem.\n\n\n\nIntroduction\n\n\nIn April, we introduced Scroll Sessions after", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "671486f48bc29b0001717916", - "authors": [ - { - "name": "Shambhavi" - } - ], - "title": "Introducing Scroll’s First Airdrop: A Celebration of the Global Community", - "slug": "introducing-scrolls-first-airdrop", - "status": "draft", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Session-Two_-Derivatives-on-Scroll@3x--2-.png", - "created_at": "2024-10-20T04:28:36.000Z", - "updated_at": "2024-10-21T10:45:14.000Z", - "published_at": "2024-10-20T10:55:18.000Z", - "custom_excerpt": "Today, we are excited to introduce Scroll’s first airdrop to our global community, celebrating the collective efforts and contributions that have driven Scroll’s success so far.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Today, we are excited to introduce Scroll’s first airdrop to our global community, celebrating the collective efforts and contributions that have driven Scroll’s success so far.", - "reading_time": 7, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Announcing Scroll’s Largest Rewards Program to Date", - "meta_description": "In April we introduced Scroll Sessions. Marks were awarded to our community for engaging and contributing to the ecosystem’s growth.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "introducing-scrolls-first-airdrop", - "type": "Announcement", - "date": "2024-10-20", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Session-Two_-Derivatives-on-Scroll@3x--2-.png", - "posterTitle": "", - "summary": "Today, we are excited to introduce Scroll’s first airdrop to our global community, celebrating the collective efforts and contributions that have driven Scroll’s success so far.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "6714e60b8bc29b0001717968", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Announcing Scroll’s Largest Rewards Program to Date", - "slug": "announcing-scrolls-largest-rewards-program-to-date", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Session-Two_-Derivatives-on-Scroll@3x-1.png", - "created_at": "2024-10-20T11:14:19.000Z", - "updated_at": "2024-10-20T11:54:13.000Z", - "published_at": "2024-10-20T10:27:00.000Z", - "custom_excerpt": "In April, we introduced Scroll Sessions after our mainnet had been successfully running for six months. Marks were awarded to our community for engaging and contributing to the ecosystem’s growth, from bridging assets to Scroll to participating in DeFi.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "In April, we introduced Scroll Sessions after our mainnet had been successfully running for six months. Marks were awarded to our community for engaging and contributing to the ecosystem’s growth, from bridging assets to Scroll to participating in DeFi.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Session-Two-_-1028_538-2.png", - "twitter_title": "Announcing Scroll’s Largest Rewards Program to Date", - "twitter_description": "In April, we introduced Scroll Sessions after our mainnet had been successfully running for six months. Marks were awarded to our community for engaging and contributing to the ecosystem’s growth, from bridging assets to Scroll to participating in DeFi.", - "meta_title": "Announcing Scroll’s Largest Rewards Program to Date", - "meta_description": "In April, we introduced Scroll Sessions after our mainnet had been successfully running for six months.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "announcing-scrolls-largest-rewards-program-to-date", - "type": "Announcement", - "date": "2024-10-20", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Session-Two_-Derivatives-on-Scroll@3x-1.png", - "posterTitle": "", - "summary": "In April, we introduced Scroll Sessions after our mainnet had been successfully running for six months. Marks were awarded to our community for engaging and contributing to the ecosystem’s growth, from bridging assets to Scroll to participating in DeFi.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Session-Two-_-1028_538-2.png", - "language": "en", - "valid": true - }, - { - "_id": "670d0ba396a17d0001ca7550", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Anyrand x Scroll: Free, Verifiable Randomness for All EVMs", - "slug": "anyrand-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Pencils-x-Scroll.png", - "created_at": "2024-10-14T12:16:35.000Z", - "updated_at": "2024-10-14T14:32:28.000Z", - "published_at": "2024-10-14T12:20:13.000Z", - "custom_excerpt": "Introduction\n\nWe’re excited to announce a collaboration between Anyrand, drand, and Scroll to liberate verifiable randomness (VRFs) by making it available as a public good on any EVM chain.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe’re excited to announce a collaboration between Anyrand, drand, and Scroll to liberate verifiable randomness (VRFs) by making it available as a public good on any EVM chain.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_Pencils-x-Scroll-_1024_512.png", - "twitter_title": "Anyrand x Scroll: Free, Verifiable Randomness for All EVMs", - "twitter_description": null, - "meta_title": "Anyrand x Scroll: Free, Verifiable Randomness for All EVMs", - "meta_description": "We’re excited to announce a collaboration between Anyrand, drand, and Scroll to liberate verifiable randomness (VRFs) by making it available", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "anyrand-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-10-14", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Pencils-x-Scroll.png", - "posterTitle": "", - "summary": "Introduction\n\nWe’re excited to announce a collaboration between Anyrand, drand, and Scroll to liberate verifiable randomness (VRFs) by making it available as a public good on any EVM chain.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_Pencils-x-Scroll-_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "6707d00096a17d0001ca74ed", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Scroll Integrates Chainlink CCIP To Unlock a Multi-Chain Ecosystem", - "slug": "chainlink-ccip", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner.png", - "created_at": "2024-10-10T13:00:48.000Z", - "updated_at": "2024-10-10T15:44:42.000Z", - "published_at": "2024-10-10T15:44:42.000Z", - "custom_excerpt": "In line with our mission of providing web3 developers with high-quality infrastructure for creating novel decentralized applications, Scroll has integrated the industry-standard Chainlink Cross-Chain Interoperability Protocol (CCIP).", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "In line with our mission of providing web3 developers with high-quality infrastructure for creating novel decentralized applications, Scroll has integrated the industry-standard Chainlink Cross-Chain Interoperability Protocol (CCIP).", - "reading_time": 4, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_Lido-x-Scroll_1024_512.png", - "twitter_title": "Scroll Integrates Chainlink CCIP To Unlock a Multi-Chain Ecosystem", - "twitter_description": "In line with our mission of providing web3 developers with high-quality infrastructure for creating novel decentralized applications, Scroll has integrated the industry-standard Chainlink Cross-Chain Interoperability Protocol (CCIP).", - "meta_title": "Scroll Integrates Chainlink CCIP To Unlock a Multi-Chain...", - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "chainlink-ccip", - "type": "Ecosystem highlights", - "date": "2024-10-10", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner.png", - "posterTitle": "", - "summary": "In line with our mission of providing web3 developers with high-quality infrastructure for creating novel decentralized applications, Scroll has integrated the industry-standard Chainlink Cross-Chain Interoperability Protocol (CCIP).", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-banner_Lido-x-Scroll_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "6705283a023ed400017e7ac2", - "authors": [ - { - "name": "Shambhavi" - } - ], - "title": "Scroll: Everyone, Everywhere", - "slug": "scroll-everyone-everywhere", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--the-people-s-chain.png", - "created_at": "2024-10-08T12:40:26.000Z", - "updated_at": "2024-10-10T09:04:55.000Z", - "published_at": "2024-10-10T09:04:55.000Z", - "custom_excerpt": "“Scroll”, our name, came from our mission. We are “SCaling with a ROLLup” (scaling), we are building a “Smart Contract ROLLup” (compatibility), and we are building something that brings with it an end-user experience as smooth as SCROLLing on your phone (great UX). ", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "“Scroll”, our name, came from our mission. We are “SCaling with a ROLLup” (scaling), we are building a “Smart Contract ROLLup” (compatibility), and we are building something that brings with it an end-user experience as smooth as SCROLLing on your phone (great UX). ", - "reading_time": 4, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Scroll: Everyone, Everywhere", - "meta_description": "Our vision has been unchanged since the day that Scroll was conceived: provide equitable access to a globally distributed network of applications and services to everyone, everywhere on our vast planet.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scroll-everyone-everywhere", - "type": "Announcement", - "date": "2024-10-10", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--the-people-s-chain.png", - "posterTitle": "", - "summary": "“Scroll”, our name, came from our mission. We are “SCaling with a ROLLup” (scaling), we are building a “Smart Contract ROLLup” (compatibility), and we are building something that brings with it an end-user experience as smooth as SCROLLing on your phone (great UX). ", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "670528f8023ed400017e7ad1", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "SCR Token - Our First Step Toward Decentralization", - "slug": "scr-token", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Casa-Reaction-Announcement.png", - "created_at": "2024-10-08T12:43:36.000Z", - "updated_at": "2024-10-08T14:52:37.000Z", - "published_at": "2024-10-08T12:53:55.000Z", - "custom_excerpt": "Scroll is embarking on its first step toward decentralization. We are excited to announce the launch of the SCR token. Our vision is to provide everyone, everywhere, access to a global distributed network of applications and services.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Scroll is embarking on its first step toward decentralization. We are excited to announce the launch of the SCR token. Our vision is to provide everyone, everywhere, access to a global distributed network of applications and services.", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Casa-Reaction-Announcement_1028_538.jpg", - "twitter_title": "SCR Token - Our First Step Toward Decentralization", - "twitter_description": "Scroll is embarking on its first step toward decentralization. We are excited to announce the launch of the SCR token. Our vision is to provide everyone, everywhere, access to a global distributed network of applications and services.", - "meta_title": "SCR Token - Our First Step Toward Decentralization", - "meta_description": "Scroll is embarking on its first step toward decentralization. We are excited to announce the launch of the SCR token.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scr-token", - "type": "Announcement", - "date": "2024-10-08", - "posterImg": "https://scroll.ghost.io/content/images/2024/10/Blog-Banner--_-Blog-Banner--Casa-Reaction-Announcement.png", - "posterTitle": "", - "summary": "Scroll is embarking on its first step toward decentralization. We are excited to announce the launch of the SCR token. Our vision is to provide everyone, everywhere, access to a global distributed network of applications and services.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/10/Xspace-cover_Casa-Reaction-Announcement_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "66f19617ccd86700015f6841", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "Alchemy x Scroll: Supercharge Your Scroll Development with Alchemy's Web3 Suite", - "slug": "alchemy-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/09/Blog-Banner--_-Blog-Banner--Alchemy-x-Scroll.png", - "created_at": "2024-09-23T16:23:51.000Z", - "updated_at": "2024-09-24T15:20:51.000Z", - "published_at": "2024-09-24T15:20:00.000Z", - "custom_excerpt": "Introduction\n\nWe're excited to announce that Alchemy's powerful developer tools are now available on Scroll, empowering builders to create lightning-fast, scalable dapps with ease.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe're excited to announce that Alchemy's powerful developer tools are now available on Scroll, empowering builders to create lightning-fast, scalable dapps with ease.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/09/Xspace-banner_Alchemy-x-Scroll-_1024_512.png", - "twitter_title": "Alchemy x Scroll: Supercharge Your Scroll Development with Alchemy's Web3 Suite", - "twitter_description": "We're excited to announce that Alchemy's powerful developer tools are now available on Scroll, empowering builders to create lightning-fast, scalable dapps with ease.", - "meta_title": "Alchemy x Scroll: Supercharge Your Scroll Development ", - "meta_description": "We're excited to announce that Alchemy's developer tools are available on Scroll, empowering builders to create lightning-fast, scalable dapps.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "alchemy-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-09-24", - "posterImg": "https://scroll.ghost.io/content/images/2024/09/Blog-Banner--_-Blog-Banner--Alchemy-x-Scroll.png", - "posterTitle": "", - "summary": "Introduction\n\nWe're excited to announce that Alchemy's powerful developer tools are now available on Scroll, empowering builders to create lightning-fast, scalable dapps with ease.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/09/Xspace-banner_Alchemy-x-Scroll-_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "66e9c752a5e97400010e228b", - "authors": [ - { - "name": "Natalia Trybala" - } - ], - "title": "0x x Scroll: Serious Swaps for Serious Onchain Apps", - "slug": "0x-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/09/Blog-Banner--_-Blog-Banner--0x-x-Scroll.png", - "created_at": "2024-09-17T18:15:46.000Z", - "updated_at": "2024-09-18T13:50:34.000Z", - "published_at": "2024-09-18T13:04:38.000Z", - "custom_excerpt": "Introduction\n\nWe’re thrilled to announce that 0x has officially launched on Scroll, enabling builders to offer their users the smoothest swap experience in DeFi.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe’re thrilled to announce that 0x has officially launched on Scroll, enabling builders to offer their users the smoothest swap experience in DeFi.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/09/Xspace-banner_0x-x-Scroll_1024_512.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": "0x x Scroll: Serious Swaps for Serious Onchain Apps", - "meta_description": "We’re thrilled to announce that 0x has officially launched on Scroll, enabling builders to offer their users the smoothest swap experience.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "0x-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-09-18", - "posterImg": "https://scroll.ghost.io/content/images/2024/09/Blog-Banner--_-Blog-Banner--0x-x-Scroll.png", - "posterTitle": "", - "summary": "Introduction\n\nWe’re thrilled to announce that 0x has officially launched on Scroll, enabling builders to offer their users the smoothest swap experience in DeFi.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/09/Xspace-banner_0x-x-Scroll_1024_512.png", - "language": "en", - "valid": true - }, - { - "_id": "66c843d8cd6be80001a3509a", - "authors": [ - { - "name": "Shambhavi" - } - ], - "title": "Kaskade x Scroll: A Leap Forward in DeFi", - "slug": "kaskade-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner--Kaskade-x-Scroll-.png", - "created_at": "2024-08-23T08:10:00.000Z", - "updated_at": "2024-08-28T08:54:20.000Z", - "published_at": "2024-08-26T05:26:00.000Z", - "custom_excerpt": "Introduction\n\nWe are pleased to announce that Kaskade Finance is now live on Scroll, offering users new opportunities to trade seamlessly and engage with community incentives.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe are pleased to announce that Kaskade Finance is now live on Scroll, offering users new opportunities to trade seamlessly and engage with community incentives.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Kaskade-x-Scroll-_1028_538-2.jpg", - "twitter_title": null, - "twitter_description": null, - "meta_title": "Kaskade x Scroll: A Leap Forward in DeFi ", - "meta_description": "Kaskade Finance is now live on Scroll, offering users the best trade rates and unique campaign opportunities. Start trading on Kaskade today!", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "kaskade-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-08-26", - "posterImg": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner--Kaskade-x-Scroll-.png", - "posterTitle": "", - "summary": "Introduction\n\nWe are pleased to announce that Kaskade Finance is now live on Scroll, offering users new opportunities to trade seamlessly and engage with community incentives.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Kaskade-x-Scroll-_1028_538-2.jpg", - "language": "en", - "valid": true - }, - { - "_id": "66c831f7cd6be80001a3501f", - "authors": [ - { - "name": "Shambhavi" - }, - { - "name": "Natalia Trybala" - } - ], - "title": "Maverick x Scroll: A New Era of Efficient and Composable DeFi", - "slug": "maverick-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner--Maverick-x-Scroll--1--1.png", - "created_at": "2024-08-23T06:53:43.000Z", - "updated_at": "2024-08-28T08:50:30.000Z", - "published_at": "2024-08-23T09:11:53.000Z", - "custom_excerpt": "Introduction\n\nWe are thrilled to announce that Maverick Protocol has officially launched on Scroll. This integration will introduce an efficient, composable, and sustainable liquidity operating system, marking a significant advancement in DeFi infrastructure.\n", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe are thrilled to announce that Maverick Protocol has officially launched on Scroll. This integration will introduce an efficient, composable, and sustainable liquidity operating system, marking a significant advancement in DeFi infrastructure.\n", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Maverick-x-Scrol_1028_538.jpg", - "twitter_title": null, - "twitter_description": null, - "meta_title": "Maverick x Scroll: A New Era of Efficient, Composable DeFi", - "meta_description": "Maverick is DeFi’s liquidity operating system, with a mission to expand the reach of decentralized finance.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "maverick-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-08-23", - "posterImg": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner--Maverick-x-Scroll--1--1.png", - "posterTitle": "", - "summary": "Introduction\n\nWe are thrilled to announce that Maverick Protocol has officially launched on Scroll. This integration will introduce an efficient, composable, and sustainable liquidity operating system, marking a significant advancement in DeFi infrastructure.\n", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Maverick-x-Scrol_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "66c70052cd6be80001a34fa0", - "authors": [ - { - "name": "Natalia Trybala" - }, - { - "name": "Shambhavi" - } - ], - "title": "Ethena x Scroll: Empowering Financial Innovation with USDe", - "slug": "ethena-x-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner---Ethena-x-Scroll--1-.png", - "created_at": "2024-08-22T09:09:38.000Z", - "updated_at": "2024-08-28T08:50:16.000Z", - "published_at": "2024-08-22T10:31:35.000Z", - "custom_excerpt": "Introduction\n\nWe are excited to announce that Ethena Labs has successfully integrated with Scroll, introducing USDe to the Scroll ecosystem. This marks a significant milestone in our journey towards a more secure and decentralized financial environment.", - "canonical_url": null, - "tags": [ - { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - } - ], - "primary_tag": { - "id": "66c400f6e7297d0001de8e26", - "name": "Ecosystem highlights", - "slug": "ecosystem-highlights", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-08-20T02:35:34.000Z", - "updated_at": "2024-08-20T02:35:34.000Z", - "url": "https://scroll.ghost.io/tag/ecosystem-highlights/" - }, - "excerpt": "Introduction\n\nWe are excited to announce that Ethena Labs has successfully integrated with Scroll, introducing USDe to the Scroll ecosystem. This marks a significant milestone in our journey towards a more secure and decentralized financial environment.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Ethena-x-Scroll_1028_538.jpg", - "twitter_title": null, - "twitter_description": null, - "meta_title": "Ethena Integrates USDe with Scroll: A New Era in DeFi", - "meta_description": "Discover the power of USDe on Scroll with faster transactions, lower fees, and enhanced security! Get started with USDe on Scroll today.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "ethena-x-scroll", - "type": "Ecosystem highlights", - "date": "2024-08-22", - "posterImg": "https://scroll.ghost.io/content/images/2024/08/Blog-Banner--_-Blog-Banner---Ethena-x-Scroll--1-.png", - "posterTitle": "", - "summary": "Introduction\n\nWe are excited to announce that Ethena Labs has successfully integrated with Scroll, introducing USDe to the Scroll ecosystem. This marks a significant milestone in our journey towards a more secure and decentralized financial environment.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/08/Xspace-cover_Ethena-x-Scroll_1028_538.jpg", - "language": "en", - "valid": true - }, - { - "_id": "66b131df6c7355000146e8e2", - "authors": [ - { - "name": "Raul Xavier" - } - ], - "title": "Proof Recursion: Scroll’s Darwin Upgrade", - "slug": "proof-recursion-scrolls-darwin-upgrade", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/08/Blog_Banner____Darwin_Mainnet_Upgrade.png", - "created_at": "2024-08-05T20:11:11.000Z", - "updated_at": "2024-08-14T06:48:18.000Z", - "published_at": "2024-08-06T16:00:44.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "\n\n\n\nOverview\n\n\nScroll is excited to announce the Darwin upgrade, launching on August 21st, 2024. This upgrade will reduce gas fees by 34% by using a single aggregated proof for multiple batches, eliminating the need to finalize each batch individually.\n\n\n\nContents of this Upgrade\n\n\n\nAggregating Multiple Batches\n\n\nReducing fees is Scroll’s top priority. In zkEVM, users’ gas fees cover three primary costs:\n\n\n 1. L1 gas fees for publishing L2 transaction data on Ethereum.\n 2. Hardware costs to gene", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Scroll's Darwin Upgrade: 34% Gas Fee Reduction Explained", - "meta_description": "Discover how Scroll's Darwin upgrade reduces gas fees by 34% with aggregated proofs. Learn about the latest improvements and changes.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "proof-recursion-scrolls-darwin-upgrade", - "type": "Technical", - "date": "2024-08-06", - "posterImg": "https://scroll.ghost.io/content/images/2024/08/Blog_Banner____Darwin_Mainnet_Upgrade.png", - "posterTitle": "", - "summary": "\n\n\n\nOverview\n\n\nScroll is excited to announce the Darwin upgrade, launching on August 21st, 2024. This upgrade will reduce gas fees by 34% by using a single aggregated proof for multiple batches, eliminating the need to finalize each batch individually.\n\n\n\nContents of this Upgrade\n\n\n\nAggregating Multiple Batches\n\n\nReducing fees is Scroll’s top priority. In zkEVM, users’ gas fees cover three primary costs:\n\n\n 1. L1 gas fees for publishing L2 transaction data on Ethereum.\n 2. Hardware costs to gene", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "669393ee596556000124625e", - "authors": [ - { - "name": "Raul Xavier" - } - ], - "title": "Scroll Canvas - Build Your Onchain Story", - "slug": "scroll-canvas-build-your-onchain-story", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/07/Blog-Banner--_-Vision-Post_-The-Scroll-Script@3x-1.png", - "created_at": "2024-07-14T09:01:34.000Z", - "updated_at": "2024-12-13T11:39:06.000Z", - "published_at": "2024-07-14T09:08:16.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "\n\n\nScroll Canvas is your unique space to display onchain credentials, status and achievements issued and collected across the Scroll ecosystem. As you interact with different Scroll projects and collect Badges, your story unfolds on Scroll Canvas. The onchain space is more than just tokens—it is also a piece of your social life and your reputation.\n\n\n\nAttested Badges, Not Tokens\n\n\nThrough the integration with the Ethereum Attestation Service, every badge on your Scroll Canvas carries a seal of a", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Scroll Canvas: Showcase Your Onchain Achievements and Badges", - "meta_description": "Discover Canvas, a platform to display your onchain credentials, status, and achievements. Mint badges and engage with the Scroll community.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scroll-canvas-build-your-onchain-story", - "type": "Announcement", - "date": "2024-07-14", - "posterImg": "https://scroll.ghost.io/content/images/2024/07/Blog-Banner--_-Vision-Post_-The-Scroll-Script@3x-1.png", - "posterTitle": "", - "summary": "\n\n\nScroll Canvas is your unique space to display onchain credentials, status and achievements issued and collected across the Scroll ecosystem. As you interact with different Scroll projects and collect Badges, your story unfolds on Scroll Canvas. The onchain space is more than just tokens—it is also a piece of your social life and your reputation.\n\n\n\nAttested Badges, Not Tokens\n\n\nThrough the integration with the Ethereum Attestation Service, every badge on your Scroll Canvas carries a seal of a", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "667b456a8da4260001df87f0", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Compressing the Gas: Scroll’s Curie Upgrade", - "slug": "compressing-the-gas-scrolls-curie-upgrade", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/07/Blog-Banner--_-Curie-Mainnet-Upgrade.png", - "created_at": "2024-06-25T22:32:10.000Z", - "updated_at": "2024-08-14T06:45:59.000Z", - "published_at": "2024-06-26T10:15:31.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "Overview\n\n\nScroll is pleased to announce the Curie upgrade, scheduled for July 3rd, 2024. This upgrade will reduce gas fees on the Scroll chain by 2x. It introduces data availability (DA) compression to decrease the Layer 1 DA size and its associated gas fees. Additionally, it incorporates two transaction types, EIP-1559 and EIP-2930, and base fee schema to stabilize Scroll’s gas fees. Lastly, it supports new EVM opcodes TLOAD, TSTORE, and MCOPY in the Cancun hard fork.\n\n\n\nContents of this Upgra", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Scroll's Upgrade: Enhancing Efficiency and Reducing Gas Fees", - "meta_description": "Scroll announces the upgrade, cutting gas fees by half and introducing EIP-1559, EIP-2930, new EVM opcodes, and dynamic block times for improved efficiency.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "compressing-the-gas-scrolls-curie-upgrade", - "type": "Technical", - "date": "2024-06-26", - "posterImg": "https://scroll.ghost.io/content/images/2024/07/Blog-Banner--_-Curie-Mainnet-Upgrade.png", - "posterTitle": "", - "summary": "Overview\n\n\nScroll is pleased to announce the Curie upgrade, scheduled for July 3rd, 2024. This upgrade will reduce gas fees on the Scroll chain by 2x. It introduces data availability (DA) compression to decrease the Layer 1 DA size and its associated gas fees. Additionally, it incorporates two transaction types, EIP-1559 and EIP-2930, and base fee schema to stabilize Scroll’s gas fees. Lastly, it supports new EVM opcodes TLOAD, TSTORE, and MCOPY in the Cancun hard fork.\n\n\n\nContents of this Upgra", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "6675b51ee7b7420001e271b5", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Session One: DeFi on Scroll", - "slug": "session-one-defi-on-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/06/Blog-Banner--_-Session-One--DeFi-on--Scroll-6.png", - "created_at": "2024-06-21T17:15:10.000Z", - "updated_at": "2024-08-27T01:43:18.000Z", - "published_at": "2024-06-21T17:28:49.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "This April, we introduced Scroll Sessions as an engaging way for users to participate in the Scroll ecosystem. Sessions allow you to receive Marks which help keep track of your onchain activity. It’s yet another unique opportunity to make your mark on our community and web3.\n\n\nSession Zero was a complete success! The Scroll ecosystem welcomed over $500 million in TVL, going from $180 million to over $700 million. Now we’re moving from zero to one…\n\n\n\nWhat’s New in Session One\n\n\nWe kicked off Scr", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "Receive Marks on Scroll Session One | Scroll", - "meta_description": "Learn how you can receive Marks on Scroll just by providing liquidity on DeFi or holding certain assets.", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "session-one-defi-on-scroll", - "type": "Announcement", - "date": "2024-06-21", - "posterImg": "https://scroll.ghost.io/content/images/2024/06/Blog-Banner--_-Session-One--DeFi-on--Scroll-6.png", - "posterTitle": "", - "summary": "This April, we introduced Scroll Sessions as an engaging way for users to participate in the Scroll ecosystem. Sessions allow you to receive Marks which help keep track of your onchain activity. It’s yet another unique opportunity to make your mark on our community and web3.\n\n\nSession Zero was a complete success! The Scroll ecosystem welcomed over $500 million in TVL, going from $180 million to over $700 million. Now we’re moving from zero to one…\n\n\n\nWhat’s New in Session One\n\n\nWe kicked off Scr", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "666112e9c78fcd0001649f2a", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Towards the wallet endgame with Keystore", - "slug": "towards-the-wallet-endgame-with-keystore", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/06/Security-Measures-Blog-Cover.png", - "created_at": "2024-06-06T01:37:45.000Z", - "updated_at": "2024-08-27T01:44:49.000Z", - "published_at": "2024-06-06T01:45:45.000Z", - "custom_excerpt": "Keystore is a new component in the smart wallet infrastructure.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "Keystore is a new component in the smart wallet infrastructure.", - "reading_time": 11, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/06/Backend-upload-for-Twitter.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "towards-the-wallet-endgame-with-keystore", - "type": "Technical", - "date": "2024-06-06", - "posterImg": "https://scroll.ghost.io/content/images/2024/06/Security-Measures-Blog-Cover.png", - "posterTitle": "", - "summary": "Keystore is a new component in the smart wallet infrastructure.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/06/Backend-upload-for-Twitter.png", - "language": "en", - "valid": true - }, - { - "_id": "66548a088d7d6d000159bda0", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Economizing Deposit to Scroll: Batch Bridge Deposit", - "slug": "economizing-deposit-to-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/05/Scroll-Blog-banner_Batch-deposit--1-.png", - "created_at": "2024-05-27T13:26:32.000Z", - "updated_at": "2024-05-29T01:46:14.000Z", - "published_at": "2024-05-27T13:32:47.000Z", - "custom_excerpt": "At Scroll, we are constantly striving to reduce transaction fees. Today, we are excited to announce a new feature that cuts transaction gas fees by approximately 50% when bridging from Ethereum to Scroll Mainnet.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "At Scroll, we are constantly striving to reduce transaction fees. Today, we are excited to announce a new feature that cuts transaction gas fees by approximately 50% when bridging from Ethereum to Scroll Mainnet.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/05/Xspace-banner_Batch-deposit_1024_512-1.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "economizing-deposit-to-scroll", - "type": "Technical", - "date": "2024-05-27", - "posterImg": "https://scroll.ghost.io/content/images/2024/05/Scroll-Blog-banner_Batch-deposit--1-.png", - "posterTitle": "", - "summary": "At Scroll, we are constantly striving to reduce transaction fees. Today, we are excited to announce a new feature that cuts transaction gas fees by approximately 50% when bridging from Ethereum to Scroll Mainnet.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/05/Xspace-banner_Batch-deposit_1024_512-1.png", - "language": "en", - "valid": true - }, - { - "_id": "66228acad336f50001e52915", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Enter the V0RTEx: Scroll’s First Online Hackathon", - "slug": "enter-the-v0rtex", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/04/Image-from-Ayoung-via-Slack.png", - "created_at": "2024-04-19T15:16:26.000Z", - "updated_at": "2024-08-27T01:45:38.000Z", - "published_at": "2024-04-19T15:22:46.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Calling all contributors! In case you missed it, we recently announced the first of our series of online hackathons - V0RTEx 01.\n\n\nWhether you're a seasoned web3 contributor or a curious explorer, the VORTEx Contributors Hackathon is an open invitation to ambitious innovators who want to challenge the status quo. We are excited to announce that we have over $85K in Track and Partner Bounties, as well as Pool prizes.\n\n\nThe Hackathon will run from April 24th until April 29th and will be hosted on ", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": "Enter the V0RTEx", - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "enter-the-v0rtex", - "type": "Announcement", - "date": "2024-04-19", - "posterImg": "https://scroll.ghost.io/content/images/2024/04/Image-from-Ayoung-via-Slack.png", - "posterTitle": "", - "summary": "Calling all contributors! In case you missed it, we recently announced the first of our series of online hackathons - V0RTEx 01.\n\n\nWhether you're a seasoned web3 contributor or a curious explorer, the VORTEx Contributors Hackathon is an open invitation to ambitious innovators who want to challenge the status quo. We are excited to announce that we have over $85K in Track and Partner Bounties, as well as Pool prizes.\n\n\nThe Hackathon will run from April 24th until April 29th and will be hosted on ", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "661fc6ded336f50001e528f6", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Introducing Scroll Sessions", - "slug": "introducing-scroll-sessions", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/04/Scroll-Blog-Banner.png", - "created_at": "2024-04-17T12:55:58.000Z", - "updated_at": "2024-08-27T01:46:24.000Z", - "published_at": "2024-04-17T13:04:58.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Today, we’re introducing Scroll Sessions, our loyalty program to reward the community with Scroll Marks for participation and engagement in the Scroll ecosystem. Beginning with Session Zero, users can obtain Scroll Marks by bridging assets to Scroll. In the coming weeks, we will introduce more Sessions and add more features to make this program inclusive, fun, and engaging for the Scroll community.\n\n\nWe built our zkEVM L2 to be the foundational layer for the next generation of protocols and push", - "reading_time": 1, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/04/Image-from-proj-points-internal.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "introducing-scroll-sessions", - "type": "Announcement", - "date": "2024-04-17", - "posterImg": "https://scroll.ghost.io/content/images/2024/04/Scroll-Blog-Banner.png", - "posterTitle": "", - "summary": "Today, we’re introducing Scroll Sessions, our loyalty program to reward the community with Scroll Marks for participation and engagement in the Scroll ecosystem. Beginning with Session Zero, users can obtain Scroll Marks by bridging assets to Scroll. In the coming weeks, we will introduce more Sessions and add more features to make this program inclusive, fun, and engaging for the Scroll community.\n\n\nWe built our zkEVM L2 to be the foundational layer for the next generation of protocols and push", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/04/Image-from-proj-points-internal.png", - "language": "en", - "valid": true - }, - { - "_id": "661d916a215f180001db507d", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Blobs are Here: Scroll’s Bernoulli Upgrade", - "slug": "blobs-are-here-scrolls-bernoulli-upgrade", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/04/Blog-Banner-Blobs-Bernoulli-Upgrade-1.png", - "created_at": "2024-04-15T20:43:22.000Z", - "updated_at": "2024-05-23T02:12:46.000Z", - "published_at": "2024-04-16T13:06:12.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "Overview\n\n\nScroll is excited to announce the Bernoulli upgrade, scheduled for April 29th, 2024. This upgrade will significantly reduce transaction costs by 10x, contingent upon L1 gas prices. It introduces EIP-4844 data blobs for L1 data availability, and the SHA2-256 precompile.\n\n\n\nContents of this upgrade\n\n\nThe Bernoulli upgrade includes two new features:\n\n\n\nEIP-4844 support\n\n\nEthereum's Dencun upgrade introduced the eagerly anticipated EIP-4844, a feature that significantly reduces data avail", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/04/Blog-Banner-Blobs-1.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "blobs-are-here-scrolls-bernoulli-upgrade", - "type": "Technical", - "date": "2024-04-16", - "posterImg": "https://scroll.ghost.io/content/images/2024/04/Blog-Banner-Blobs-Bernoulli-Upgrade-1.png", - "posterTitle": "", - "summary": "Overview\n\n\nScroll is excited to announce the Bernoulli upgrade, scheduled for April 29th, 2024. This upgrade will significantly reduce transaction costs by 10x, contingent upon L1 gas prices. It introduces EIP-4844 data blobs for L1 data availability, and the SHA2-256 precompile.\n\n\n\nContents of this upgrade\n\n\nThe Bernoulli upgrade includes two new features:\n\n\n\nEIP-4844 support\n\n\nEthereum's Dencun upgrade introduced the eagerly anticipated EIP-4844, a feature that significantly reduces data avail", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/04/Blog-Banner-Blobs-1.png", - "language": "en", - "valid": true - }, - { - "_id": "65c9ff4b2bd8ae00012f1ffb", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scaling DeFi: Announcing The First zkEVM Market On Aave", - "slug": "scaling-defi-with-aave", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/02/First-zkEVM-Market.png", - "created_at": "2024-02-12T11:21:47.000Z", - "updated_at": "2024-08-27T01:47:19.000Z", - "published_at": "2024-02-12T14:06:36.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Since our mainnet launch, we’ve seen our ecosystem grow exponentially. Today, we are excited to announce that Scroll has integrated with one of the foundational pillars of DeFi, Aave, being the first zkEVM to do so. This landmark collaboration marks a significant step forward in the evolution of DeFi platforms, opening new doors for users and setting a precedent for the industry.\n\n\n\nWhat this means for users:\n\n\n * Enhanced Security: The integration ensures an added layer of security through Scro", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/02/First-zk-1.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "scaling-defi-with-aave", - "type": "Announcement", - "date": "2024-02-12", - "posterImg": "https://scroll.ghost.io/content/images/2024/02/First-zkEVM-Market.png", - "posterTitle": "", - "summary": "Since our mainnet launch, we’ve seen our ecosystem grow exponentially. Today, we are excited to announce that Scroll has integrated with one of the foundational pillars of DeFi, Aave, being the first zkEVM to do so. This landmark collaboration marks a significant step forward in the evolution of DeFi platforms, opening new doors for users and setting a precedent for the industry.\n\n\n\nWhat this means for users:\n\n\n * Enhanced Security: The integration ensures an added layer of security through Scro", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/02/First-zk-1.png", - "language": "en", - "valid": true - }, - { - "_id": "65bcc17763f97b0001be3a80", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Protocol Upgrade: Bridging Cost Reduction", - "slug": "protocol-upgrade-bridging-cost-reduction", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/02/protocol-upgrade-bridging-cost-reduction-4.png", - "created_at": "2024-02-02T10:18:31.000Z", - "updated_at": "2024-02-08T09:02:27.000Z", - "published_at": "2024-02-07T15:00:54.000Z", - "custom_excerpt": null, - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "Scroll is excited to announce its first protocol upgrade since launching Scroll Mainnet on October 18th, 2023.\n\n\nThis upgrade will significantly improve the cost-efficiency for users who are bridging funds from Ethereum to Scroll. We are expecting a bridging cost reduction of up to 50% once this upgrade has been implemented on Scroll Mainnet.\n\n\nFollowing the upgrade, only the Scroll contracts will be affected. Both the Scroll sequencer and follower nodes will remain unchanged, and will not need ", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": "Protocol Upgrade: Bridging Cost Reduction", - "id": "protocol-upgrade-bridging-cost-reduction", - "type": "Technical", - "date": "2024-02-07", - "posterImg": "https://scroll.ghost.io/content/images/2024/02/protocol-upgrade-bridging-cost-reduction-4.png", - "posterTitle": "Protocol Upgrade: Bridging Cost Reduction", - "summary": "Scroll is excited to announce its first protocol upgrade since launching Scroll Mainnet on October 18th, 2023.\n\n\nThis upgrade will significantly improve the cost-efficiency for users who are bridging funds from Ethereum to Scroll. We are expecting a bridging cost reduction of up to 50% once this upgrade has been implemented on Scroll Mainnet.\n\n\nFollowing the upgrade, only the Scroll contracts will be affected. Both the Scroll sequencer and follower nodes will remain unchanged, and will not need ", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65afb5d5c34f8a00018da107", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scaling Security: Multi-Prover Implementation on Scroll", - "slug": "scaling-security", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_21.png", - "created_at": "2024-01-23T12:49:25.000Z", - "updated_at": "2024-01-29T08:46:39.000Z", - "published_at": "2024-01-23T12:59:35.000Z", - "custom_excerpt": "We explore a multi-proof system and the incorporation of a TEE prover as a secondary prover to Scroll.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - { - "id": "67163ef68bc29b0001717a4a", - "name": "#pseudo", - "slug": "hash-pseudo", - "description": null, - "feature_image": null, - "visibility": "internal", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-10-21T11:45:58.000Z", - "updated_at": "2024-10-21T11:45:58.000Z", - "url": "https://scroll.ghost.io/404/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "We explore a multi-proof system and the incorporation of a TEE prover as a secondary prover to Scroll.", - "reading_time": 7, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_21_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scaling Security: Multi-Prover Implementation on Scroll", - "feature_image_caption": "Scaling Security: Multi-Prover Implementation on Scroll", - "id": "scaling-security", - "type": "Technical", - "date": "2024-01-23", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_21.png", - "posterTitle": "Scaling Security: Multi-Prover Implementation on Scroll", - "summary": "We explore a multi-proof system and the incorporation of a TEE prover as a secondary prover to Scroll.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_21_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63d28254b5b0001f24c6c", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Designing Scroll Origins", - "slug": "designing-scroll-origins", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_20.png", - "created_at": "2024-01-16T08:24:08.000Z", - "updated_at": "2024-01-26T12:32:14.000Z", - "published_at": "2023-12-18T00:00:00.000Z", - "custom_excerpt": "Origins is a visual embodiment of Scroll’s commitment to zero knowledge principles.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Origins is a visual embodiment of Scroll’s commitment to zero knowledge principles.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_20_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Designing Scroll Origins", - "feature_image_caption": "Designing Scroll Origins", - "id": "designing-scroll-origins", - "type": "Announcement", - "date": "2023-12-18", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_20.png", - "posterTitle": "Designing Scroll Origins", - "summary": "Origins is a visual embodiment of Scroll’s commitment to zero knowledge principles.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_20_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a638e0254b5b0001f24c5c", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Community Update: November", - "slug": "community-update-november", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_19.png", - "created_at": "2024-01-16T08:05:52.000Z", - "updated_at": "2024-01-26T08:36:53.000Z", - "published_at": "2023-12-13T00:00:00.000Z", - "custom_excerpt": "Dive into our November recap.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Dive into our November recap.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_19_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Community Update: November", - "feature_image_caption": "Community Update: November", - "id": "community-update-november", - "type": "Announcement", - "date": "2023-12-13", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_19.png", - "posterTitle": "Community Update: November", - "summary": "Dive into our November recap.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_19_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63881254b5b0001f24c4b", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Data Availability Post 4844", - "slug": "data-availability-4844", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_18.png", - "created_at": "2024-01-16T08:04:17.000Z", - "updated_at": "2024-06-06T01:12:27.000Z", - "published_at": "2023-12-04T00:00:00.000Z", - "custom_excerpt": "The one and only feature requested by most rollups is an improvement of Ethereum’s usability as a data availability layer.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "The one and only feature requested by most rollups is an improvement of Ethereum’s usability as a data availability layer.", - "reading_time": 16, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_18_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": "Data Availability Post 4844", - "id": "data-availability-4844", - "type": "Technical", - "date": "2023-12-04", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_18.png", - "posterTitle": "Data Availability Post 4844", - "summary": "The one and only feature requested by most rollups is an improvement of Ethereum’s usability as a data availability layer.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_18_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a6380d254b5b0001f24c3c", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Community Update: October", - "slug": "community-update-october", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_17.png", - "created_at": "2024-01-16T08:02:21.000Z", - "updated_at": "2024-01-26T08:38:15.000Z", - "published_at": "2023-11-01T00:00:00.000Z", - "custom_excerpt": "Dive into our October recap.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Dive into our October recap.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_17_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": "Community Update: October", - "id": "community-update-october", - "type": "Announcement", - "date": "2023-11-01", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_17.png", - "posterTitle": "Community Update: October", - "summary": "Dive into our October recap.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_17_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63768254b5b0001f24c27", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Announcing the Scroll Origins NFT", - "slug": "scroll-origins-nft", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_16_1.png", - "created_at": "2024-01-16T07:59:36.000Z", - "updated_at": "2024-01-26T08:39:32.000Z", - "published_at": "2023-10-26T00:00:00.000Z", - "custom_excerpt": "To commemorate our launch, we are unveiling Scroll Origins, an NFT mint to celebrate our earliest builders who have been a part of our journey from the beginning.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "To commemorate our launch, we are unveiling Scroll Origins, an NFT mint to celebrate our earliest builders who have been a part of our journey from the beginning.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_16_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Announcing the Scroll Origins NFT", - "feature_image_caption": "Announcing the Scroll Origins NFT", - "id": "scroll-origins-nft", - "type": "Announcement", - "date": "2023-10-26", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_16_1.png", - "posterTitle": "Announcing the Scroll Origins NFT", - "summary": "To commemorate our launch, we are unveiling Scroll Origins, an NFT mint to celebrate our earliest builders who have been a part of our journey from the beginning.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_16_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a636e7254b5b0001f24c17", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scroll’s Security Measures", - "slug": "scrolls-security-measures", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_15.png", - "created_at": "2024-01-16T07:57:27.000Z", - "updated_at": "2024-01-26T08:40:21.000Z", - "published_at": "2023-10-19T00:00:00.000Z", - "custom_excerpt": "At Scroll, security has always been our top priority guiding every decision we make.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "At Scroll, security has always been our top priority guiding every decision we make.", - "reading_time": 4, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_15_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll’s Security Measures", - "feature_image_caption": "Scroll’s Security Measures", - "id": "scrolls-security-measures", - "type": "Announcement", - "date": "2023-10-19", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_15.png", - "posterTitle": "Scroll’s Security Measures", - "summary": "At Scroll, security has always been our top priority guiding every decision we make.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_15_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63624254b5b0001f24c02", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "A Letter from Scroll: Mainnet is Here!", - "slug": "founder-letter", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_14.png", - "created_at": "2024-01-16T07:54:12.000Z", - "updated_at": "2024-01-26T12:30:24.000Z", - "published_at": "2023-10-17T00:00:00.000Z", - "custom_excerpt": "Scroll was founded in 2021 with the mission to scale Ethereum, and we're just getting started.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Scroll was founded in 2021 with the mission to scale Ethereum, and we're just getting started.", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_14_og.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Founder Letter", - "feature_image_caption": "Founder Letter", - "id": "founder-letter", - "type": "Announcement", - "date": "2023-10-17", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_14.png", - "posterTitle": "Founder Letter", - "summary": "Scroll was founded in 2021 with the mission to scale Ethereum, and we're just getting started.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_14_og.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63511254b5b0001f24bea", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scroll’s Fresh Coat: A Community Touch", - "slug": "scrolls-fresh-coat", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_13-1.jpg", - "created_at": "2024-01-16T07:49:37.000Z", - "updated_at": "2024-01-26T08:44:52.000Z", - "published_at": "2023-08-24T00:00:00.000Z", - "custom_excerpt": "Discover our updated website and documentation, shaped by collective insights and collaboration.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Discover our updated website and documentation, shaped by collective insights and collaboration.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_13_og-2.png", - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll's Evolution", - "feature_image_caption": "Scroll's Evolution", - "id": "scrolls-fresh-coat", - "type": "Announcement", - "date": "2023-08-24", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_13-1.jpg", - "posterTitle": "Scroll's Evolution", - "summary": "Discover our updated website and documentation, shaped by collective insights and collaboration.", - "canonical": null, - "ogImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_13_og-2.png", - "language": "en", - "valid": true - }, - { - "_id": "65a63483254b5b0001f24bda", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Announcing the Scroll Beta Testnet on Sepolia", - "slug": "scroll-sepolia", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_12.jpg", - "created_at": "2024-01-16T07:47:15.000Z", - "updated_at": "2024-01-26T08:45:35.000Z", - "published_at": "2023-08-17T00:00:00.000Z", - "custom_excerpt": "We are excited to announce that our Beta testnet is now live on Sepolia.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "We are excited to announce that our Beta testnet is now live on Sepolia.", - "reading_time": 6, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll Beta on Sepolia", - "feature_image_caption": "Scroll Beta on Sepolia", - "id": "scroll-sepolia", - "type": "Announcement", - "date": "2023-08-17", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_12.jpg", - "posterTitle": "Scroll Beta on Sepolia", - "summary": "We are excited to announce that our Beta testnet is now live on Sepolia.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a6340f254b5b0001f24bcb", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Contribute to Scroll", - "slug": "contribute-to-scroll", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_11.jpg", - "created_at": "2024-01-16T07:45:19.000Z", - "updated_at": "2024-01-26T08:47:05.000Z", - "published_at": "2023-07-13T00:00:00.000Z", - "custom_excerpt": "You can now start contributing to Scroll easily.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "You can now start contributing to Scroll easily.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Contribute to Scroll", - "feature_image_caption": "Contribute to Scroll", - "id": "contribute-to-scroll", - "type": "Announcement", - "date": "2023-07-13", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_11.jpg", - "posterTitle": "Contribute to Scroll", - "summary": "You can now start contributing to Scroll easily.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a63344254b5b0001f24bb2", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Announcing the Scroll Alpha Testnet on Goerli", - "slug": "alpha-testnet", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_10.jpg", - "created_at": "2024-01-16T07:41:56.000Z", - "updated_at": "2024-01-26T08:48:54.000Z", - "published_at": "2023-02-27T00:00:00.000Z", - "custom_excerpt": "We are excited to announce that our Alpha testnet is now live on Goerli.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "We are excited to announce that our Alpha testnet is now live on Goerli.", - "reading_time": 2, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Alpha Testnet on Goerli", - "feature_image_caption": "Alpha Testnet on Goerli", - "id": "alpha-testnet", - "type": "Announcement", - "date": "2023-02-27", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_10.jpg", - "posterTitle": "Alpha Testnet on Goerli", - "summary": "We are excited to announce that our Alpha testnet is now live on Goerli.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a632df254b5b0001f24ba3", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Release Note for 0109 Upgrade", - "slug": "release-note-0109", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_9.jpg", - "created_at": "2024-01-16T07:40:15.000Z", - "updated_at": "2024-01-26T08:49:52.000Z", - "published_at": "2023-01-13T00:00:00.000Z", - "custom_excerpt": "This release note describes the changes introduced in the testnet upgrade on Jan 9.", - "canonical_url": null, - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "This release note describes the changes introduced in the testnet upgrade on Jan 9.", - "reading_time": 1, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Release Note 0109", - "feature_image_caption": "Release Note 0109", - "id": "release-note-0109", - "type": "Announcement", - "date": "2023-01-13", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_9.jpg", - "posterTitle": "Release Note 0109", - "summary": "This release note describes the changes introduced in the testnet upgrade on Jan 9.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a6304d254b5b0001f24b91", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "The Anatomy of Proof Generation", - "slug": "proof-generation", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_8.jpg", - "created_at": "2024-01-16T07:29:17.000Z", - "updated_at": "2024-01-26T12:31:42.000Z", - "published_at": "2022-12-14T00:00:00.000Z", - "custom_excerpt": "A technical deep dive into the computational costs of proof generation.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "A technical deep dive into the computational costs of proof generation.", - "reading_time": 21, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Proof Generation", - "feature_image_caption": "Proof Generation", - "id": "proof-generation", - "type": "Technical", - "date": "2022-12-14", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_8.jpg", - "posterTitle": "Proof Generation", - "summary": "A technical deep dive into the computational costs of proof generation.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a626f0254b5b0001f24b52", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "KZG in Practice: Polynomial Commitment Schemes and Their Usage in Scaling Ethereum", - "slug": "kzg", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_7.jpg", - "created_at": "2024-01-16T06:49:20.000Z", - "updated_at": "2024-01-26T12:31:05.000Z", - "published_at": "2022-10-25T00:00:00.000Z", - "custom_excerpt": "An introduction to polynomial commitment schemes and their usage in Scroll and Ethereum.", - "canonical_url": null, - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "An introduction to polynomial commitment schemes and their usage in Scroll and Ethereum.", - "reading_time": 12, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "KZG in Practice", - "feature_image_caption": "KZG in Practice", - "id": "kzg", - "type": "Technical", - "date": "2022-10-25", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_7.jpg", - "posterTitle": "KZG in Practice", - "summary": "An introduction to polynomial commitment schemes and their usage in Scroll and Ethereum.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a6261d254b5b0001f24b3e", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Upgrading the Scroll Pre-Alpha Testnet", - "slug": "upgrading-pre-alpha-testnet", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_6.jpg", - "created_at": "2024-01-16T06:45:49.000Z", - "updated_at": "2024-01-26T08:53:53.000Z", - "published_at": "2022-10-09T00:00:00.000Z", - "custom_excerpt": "Our new testnet upgrade enables smart contract deployment on Scroll.", - "canonical_url": "https://scroll.mirror.xyz/FYzq9QWb2UhS00p-AOFMBh1Oq6SCqLA6L855GAHczOw", - "tags": [ - { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - } - ], - "primary_tag": { - "id": "65a6264f254b5b0001f24b46", - "name": "Announcement", - "slug": "announcement", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:46:39.000Z", - "updated_at": "2024-01-16T06:46:39.000Z", - "url": "https://scroll.ghost.io/tag/announcement/" - }, - "excerpt": "Our new testnet upgrade enables smart contract deployment on Scroll.", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll Pre-Alpha Testnet", - "feature_image_caption": "Scroll Pre-Alpha Testnet", - "id": "upgrading-pre-alpha-testnet", - "type": "Announcement", - "date": "2022-10-09", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_6.jpg", - "posterTitle": "Scroll Pre-Alpha Testnet", - "summary": "Our new testnet upgrade enables smart contract deployment on Scroll.", - "canonical": "https://scroll.mirror.xyz/FYzq9QWb2UhS00p-AOFMBh1Oq6SCqLA6L855GAHczOw", - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a6255f254b5b0001f24b20", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "An overview of Scroll’s architecture", - "slug": "architecture", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_5.jpg", - "created_at": "2024-01-16T06:42:39.000Z", - "updated_at": "2024-01-26T08:54:51.000Z", - "published_at": "2022-08-01T00:00:00.000Z", - "custom_excerpt": "The architecture overview of our EVM-equivalent zkRollup aiming to scale Ethereum.", - "canonical_url": "https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k", - "tags": [ - { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - } - ], - "primary_tag": { - "id": "65a625ac254b5b0001f24b2c", - "name": "Technical", - "slug": "technical", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T06:43:56.000Z", - "updated_at": "2024-01-16T06:43:56.000Z", - "url": "https://scroll.ghost.io/tag/technical/" - }, - "excerpt": "The architecture overview of our EVM-equivalent zkRollup aiming to scale Ethereum.", - "reading_time": 6, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll’s Architecture Overview", - "feature_image_caption": "Scroll’s Architecture Overview", - "id": "architecture", - "type": "Technical", - "date": "2022-08-01", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_5.jpg", - "posterTitle": "Scroll’s Architecture Overview", - "summary": "The architecture overview of our EVM-equivalent zkRollup aiming to scale Ethereum.", - "canonical": "https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k", - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a6248f254b5b0001f24b0e", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scroll’s Technical Principles", - "slug": "technical-principles", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_4.jpg", - "created_at": "2024-01-16T06:39:11.000Z", - "updated_at": "2024-01-26T08:55:39.000Z", - "published_at": "2022-07-21T00:00:00.000Z", - "custom_excerpt": "To scale Ethereum with our zkRollup, we have designed Scroll based on this set of principles.", - "canonical_url": "https://scroll.mirror.xyz/N7cAie4ul0PdSxNdv2FTqgMV2JEkhOJocsxfeqe4SFE", - "tags": [ - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - }, - "excerpt": "To scale Ethereum with our zkRollup, we have designed Scroll based on this set of principles.", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Technical Principles", - "feature_image_caption": "Technical Principles", - "id": "technical-principles", - "type": "General", - "date": "2022-07-21", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_4.jpg", - "posterTitle": "Technical Principles", - "summary": "To scale Ethereum with our zkRollup, we have designed Scroll based on this set of principles.", - "canonical": "https://scroll.mirror.xyz/N7cAie4ul0PdSxNdv2FTqgMV2JEkhOJocsxfeqe4SFE", - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a5f753254b5b0001f24afc", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Announcing the Scroll Pre-Alpha Testnet", - "slug": "pre-alpha-testnet", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_3.jpg", - "created_at": "2024-01-16T03:26:11.000Z", - "updated_at": "2024-01-26T08:56:29.000Z", - "published_at": "2022-07-19T00:00:00.000Z", - "custom_excerpt": "After over a year of building our zkEVM in close collaboration with the PSE - the Pre-Alpha!", - "canonical_url": "https://scroll.mirror.xyz/XQyXDgyxoefag6hcBgGJFz8qrb10rmSU-zUBvY3Q9_A", - "tags": [ - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - }, - "excerpt": "After over a year of building our zkEVM in close collaboration with the PSE - the Pre-Alpha!", - "reading_time": 3, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Scroll Pre-Alpha Testnet", - "feature_image_caption": "Scroll Pre-Alpha Testnet", - "id": "pre-alpha-testnet", - "type": "General", - "date": "2022-07-19", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_3.jpg", - "posterTitle": "Scroll Pre-Alpha Testnet", - "summary": "After over a year of building our zkEVM in close collaboration with the PSE - the Pre-Alpha!", - "canonical": "https://scroll.mirror.xyz/XQyXDgyxoefag6hcBgGJFz8qrb10rmSU-zUBvY3Q9_A", - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a5ea3a254b5b0001f24acb", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "Scroll’s Vision and Values", - "slug": "vision-and-values", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_2.jpg", - "created_at": "2024-01-16T02:30:18.000Z", - "updated_at": "2024-01-26T08:57:02.000Z", - "published_at": "2022-06-13T00:00:00.000Z", - "custom_excerpt": "The promise of Ethereum is to build a decentralized computing platform widely accessible to all.", - "canonical_url": "https://scroll.mirror.xyz/EYn7ODhQAnNWABwWcu5xZLts_wEXTZAEWyTgExGS1DA", - "tags": [ - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - }, - "excerpt": "The promise of Ethereum is to build a decentralized computing platform widely accessible to all.", - "reading_time": 5, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "Vision and Values", - "feature_image_caption": "Vision and Values", - "id": "vision-and-values", - "type": "General", - "date": "2022-06-13", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_2.jpg", - "posterTitle": "Vision and Values", - "summary": "The promise of Ethereum is to build a decentralized computing platform widely accessible to all.", - "canonical": "https://scroll.mirror.xyz/EYn7ODhQAnNWABwWcu5xZLts_wEXTZAEWyTgExGS1DA", - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "65a5e418254b5b0001f24aa3", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "zkEVM", - "slug": "zkevm", - "status": "published", - "feature_image": "https://scroll.ghost.io/content/images/2024/01/poster_cover_1.jpg", - "created_at": "2024-01-16T02:04:08.000Z", - "updated_at": "2024-01-26T08:57:58.000Z", - "published_at": "2021-09-28T00:00:00.000Z", - "custom_excerpt": "We believe zkRollups to be the holy grail: a best-in-class Layer 2 scaling solution for Ethereum.", - "canonical_url": null, - "tags": [ - { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - } - ], - "primary_tag": { - "id": "65a5e726254b5b0001f24ab0", - "name": "General", - "slug": "general", - "description": null, - "feature_image": null, - "visibility": "public", - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "codeinjection_head": null, - "codeinjection_foot": null, - "canonical_url": null, - "accent_color": null, - "created_at": "2024-01-16T02:17:10.000Z", - "updated_at": "2024-01-16T02:17:10.000Z", - "url": "https://scroll.ghost.io/tag/general/" - }, - "excerpt": "We believe zkRollups to be the holy grail: a best-in-class Layer 2 scaling solution for Ethereum.", - "reading_time": 13, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": "zkEVM", - "feature_image_caption": "zkEVM", - "id": "zkevm", - "type": "General", - "date": "2021-09-28", - "posterImg": "https://scroll.ghost.io/content/images/2024/01/poster_cover_1.jpg", - "posterTitle": "zkEVM", - "summary": "We believe zkRollups to be the holy grail: a best-in-class Layer 2 scaling solution for Ethereum.", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "667e75e1ab1de90001f3f555", - "authors": [ - { - "name": "Scroll" - } - ], - "title": "test multi language support", - "slug": "test-multi-language-support", - "status": "draft", - "feature_image": null, - "created_at": "2024-06-28T08:35:45.000Z", - "updated_at": "2024-06-28T08:37:03.000Z", - "published_at": null, - "custom_excerpt": null, - "canonical_url": null, - "tags": [], - "excerpt": "test multi language support\n", - "reading_time": 0, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": null, - "meta_description": null, - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "test-multi-language-support", - "date": "2024-06-28", - "posterImg": null, - "posterTitle": "", - "summary": "test multi language support\n", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - }, - { - "_id": "671f847ccd3e1d000196da1b", - "authors": [ - { - "name": "Shambhavi" - } - ], - "title": "How to claim your $SCR: A step-by-step Guide", - "slug": "how-to-claim-your-scr-a-step-by-step-guide", - "status": "draft", - "feature_image": null, - "created_at": "2024-10-28T12:33:00.000Z", - "updated_at": "2024-10-28T12:35:45.000Z", - "published_at": null, - "custom_excerpt": "How to claim your $SCR: A step-by-step Guide", - "canonical_url": null, - "tags": [], - "excerpt": "How to claim your $SCR: A step-by-step Guide", - "reading_time": 1, - "og_image": null, - "og_title": null, - "og_description": null, - "twitter_image": null, - "twitter_title": null, - "twitter_description": null, - "meta_title": "How to claim your $SCR", - "meta_description": "Outline the duration of the claiming window.\n- Who is eligible? (include link to eligibility criteria).", - "email_subject": null, - "frontmatter": null, - "feature_image_alt": null, - "feature_image_caption": null, - "id": "how-to-claim-your-scr-a-step-by-step-guide", - "date": "2024-10-28", - "posterImg": null, - "posterTitle": "", - "summary": "How to claim your $SCR: A step-by-step Guide", - "canonical": null, - "ogImg": null, - "language": "en", - "valid": true - } -] \ No newline at end of file diff --git a/src/assets/blog/alpha-testnet.md b/src/assets/blog/alpha-testnet.md deleted file mode 100644 index 7228cc19d..000000000 --- a/src/assets/blog/alpha-testnet.md +++ /dev/null @@ -1,17 +0,0 @@ -# Announcing the Scroll Alpha Testnet on Goerli - -Just a few years ago, zkEVMs were entirely theoretical, existing solely in research forums and whitepapers due to their significant proving overhead and circuit complexity. However, with the combined effort of researchers in the zk space, huge improvements to proof systems, circuit design, and acceleration have made zkEVMs practical. - -For nearly two years, we’ve focused our efforts on building a bytecode-compatible zkEVM in the open alongside the Privacy and Scaling Explorations team and other open source contributors. A zkEVM is no easy feat, and it has taken a lot of effort and progress to get to where we are today. Throughout this process, we have adhered to our values: - -- **Community-driven:** The open source ethos allows efforts to compound over time as we collectively iterate upon cryptographic primitives together and harness their power for practical applications. -- **Long-term thinking:** zkEVMs are one of the most complex systems that leverage blockchains, and it is imperative that a system this intricate is built safely, securely, and with a long-term vision in mind. A feature-complete, battle-tested zkEVM is a multi-year process and must be built with rigorous standards. -- **Adherence to Ethereum’s values:** Ethereum is the gold standard of blockchains for good reason. Rollups should eventually extend Ethereum in all aspects, including decentralization and resilience. - -In August 2022, we launched our Pre-Alpha testnet, supported by our community of over 100,000 users. To date, we’ve processed over 15,400,000 transactions and proved 1,800,000 blocks. Over 641,000 batches have been submitted as validity proofs and finalized by our rollup contract on L1. - -Today, we are thrilled to announce that our Alpha testnet is now live on Goerli, marking a pivotal moment in the development of Scroll. Our deployment is completely permissionless, allowing anyone to experiment with our technology and push it to its limits. - -Our feature set is [transparent](https://hackmd.io/@haichen/ryukZaYAs), and we’re committed to iterating and improving the performance of our zkEVM over the coming months. We’re excited to continue working alongside our strong community of open source contributors to build a future where blockchains will power the applications of tomorrow. - -Try it for yourself at [scroll.io/alpha](http://scroll.io/alpha)! diff --git a/src/assets/blog/architecture.md b/src/assets/blog/architecture.md deleted file mode 100644 index 4b2c8973e..000000000 --- a/src/assets/blog/architecture.md +++ /dev/null @@ -1,77 +0,0 @@ -# An overview of Scroll’s architecture - -Scroll is an EVM-equivalent zkRollup to scale Ethereum. Technically speaking, Scroll is built upon two major pieces. The core piece is the [zkEVM](https://scroll.io/blog/zkEVM), which is used to prove the correctness of EVM execution in Layer 2. We have been building it in the open with the Privacy and Scaling Explorations group at the Ethereum Foundation for over a year. But to turn the zkEVM into a full zkRollup on the Ethereum, we also need to build a complete L2 architecture around it. - -In this post, we give an overview of Scroll’s overall architecture. More specifically, we will cover the initial version of Scroll which is composed of a centralized sequencing node and decentralized proving network. We are committed to decentralizing the set of sequencing nodes in the future and will share our design for this in future articles. - -## Scroll’s architecture - -The current architecture consists of three infrastructure components (see Figure 1): - -- **Scroll Node:** Constructs L2 blocks from user transactions, commits them to the Ethereum base layer, and passes messages between L1 and L2. -- **Roller Network:** Generates the zkEVM validity proofs to prove that transactions are executed correctly. -- **Rollup and Bridge Contracts:** Provides data availability for Scroll transactions, verifies zkEVM validity proofs, and allows users to move assets between Ethereum and Scroll. - -In what follows, we detail the role of each of these components. - -![Figure 1. Scroll architecture](https://i.imgur.com/oLlyhIx.png) - -### Scroll Node - -The **Scroll node** is the main way for applications and users to interact with Scroll. It consists of three modules, the **Sequencer**, **Coordinator**, and **Relayer**. - -The **Sequencer** provides a JSON-RPC interface and accepts L2 transactions. Every few seconds, it retrieves a batch of transactions from the L2 mempool and executes them to generate a new L2 block and a new state root. Our sequencer implementation is based on the Go-Ethereum (Geth), one of the most popular Ethereum node implementation. By forking Geth, we can achieve the best compatibility and inherit security that has stood the test of time. - -Once a new block is generated, the **Coordinator** is notified and receives the execution trace of this block from the Sequencer. It then dispatches the execution trace to a randomly-selected **Roller** from the roller pool for proof generation. - -The **Relayer** watches the bridge and rollup contracts deployed on both Ethereum and Scroll. It has two main responsibilities. First, it monitors the rollup contract to keep track of the status of L2 blocks including their data availability and validity proof. Second, it watches the deposit and withdraw events from the bridge contracts deployed on both Ethereum and Scroll and relays the messages from one side to the other. - -### Roller Network - -The **Rollers** serve as provers in the network that are responsible for generating validity proofs for the zkRollup. Rollers are expected to utilize accelerators such as GPUs, FPGAs, and ASICs to reduce the proving time and proving cost. Figure 2 shows how a Roller generates the validity proof for each block. The process consists of the following steps: - -- A Roller first converts the execution trace received from the **Coordinator** to circuit witnesses. -- It generates proofs for each of the **zkEVM** circuits. -- Finally, it uses **proof aggregation** to combine proofs from multiple zkEVM circuits into a single block proof. - -![Figure 2. Roller workflow](https://i.imgur.com/Sajm1E2.png) - -### Rollup and Bridge Contracts - -Scroll connects to the base layer of Ethereum through the **Rollup** and **Bridge** smart contracts. Together, these ensure data availability for L2 transactions and allow users to pass assets and messages between L1 and L2. - -The **Rollup contract** receives L2 state roots and blocks from the Sequencer. It stores state roots in the Ethereum state and L2 block data as Ethereum calldata. This provides **data availability** for Scroll blocks and leverages the security of Ethereum to ensure that indexers including the Scroll Relayer can reconstruct L2 blocks. Once a block proof establishing the validity of an L2 block has been verified by the Rollup contract, the corresponding block is considered finalized on Scroll. - -The **Bridge contracts** deployed on the Ethereum and Scroll allow users to pass arbitrary messages between L1 and L2. On top of this message passing protocol, we have also built a trustless bridging protocol to allow users to bridge ERC-20 assets in both directions. To send a message or funds from Ethereum to Scroll, users call a `sendMessage` transaction on the Bridge contract. The Relayer will index this transaction on L1 and send it to the Sequencer for inclusion in an L2 block. Sending messages from Scroll back to Ethereum uses a similar process on the L2 Bridge contract. - -## How does Scroll’s zkRollup work? - -Putting these three architectural pieces together, we can now explain the workflow of Scroll’s zkRollup, summarized in Figure 3 below. - -![Figure 3. Scroll workflow](https://i.imgur.com/QC6IWil.png) - -L2 blocks in Scroll are generated, committed to base layer Ethereum, and finalized in the following sequence of steps: - -1. The Sequencer generates a sequence of blocks. For the _i_-th block, the Sequencer generates an execution trace _**T**_ and sends it to the Coordinator. Meanwhile, it also submits the transaction data _**D**_ as calldata to the Rollup contract on Ethereum for data availability and the resulting state roots and commitments to the transaction data to the Rollup contract as state. -2. The Coordinator randomly selects a Roller to generate a validity proof for each block trace. To speed up the proof generation process, proofs for different blocks can be generated in parallel on different Rollers. -3. After generating the block proof _**P**_ for the _i_-th block, the Roller sends it back to the Coordinator. Every _k_ blocks, the Coordinator dispatches an aggregation task to another Roller to aggregate _k_ block proofs into a single aggregate proof _**A**_. -4. Finally, the Coordinator submits the aggregate proof _**A**_ to the Rollup contract to finalize L2 blocks _i+1_ to _i+k_ by verifying the aggregate proof against the state roots and transaction data commitments previously submitted to the rollup contract. - -Figure 3 illustrates that Scroll blocks will be finalized on L1 in a multi-step process. Each L2 block will progress through the following three stages until it is finalized. - -- `Precommitted` indicates a block has been proposed by a Sequencer and sent to Rollers. Although Precommitted blocks are not yet a canonical part of the Scroll L2 chain because they have not been posted on the Ethereum base layer, users who trust the Sequencer can choose to take action on them in anticipation. -- `Committed` indicates the transaction data of this block has been posted on the rollup contract on Ethereum. This ensures that the block data is available, but does not prove that it has been executed in a valid way. -- `Finalized` indicates the correct execution of transactions in this block has been proven by verifying a validity proof on-chain on Ethereum. Finalized blocks are considered canonical parts of the Scroll L2 chain. - -Putting all of these together, Scroll is able to execute native EVM bytecode on L2 while inheriting strong security guarantees from base layer Ethereum. In the next post in this series, we will explain the workflow for developers to deploy dapps on Scroll and how users can interact with them. - -## Learn more - -We have designed Scroll’s architecture to align with our [vision and values](https://mirror.xyz/scroll.eth/EYn7ODhQAnNWABwWcu5xZLts_wEXTZAEWyTgExGS1DA) and our [technical principles](https://mirror.xyz/scroll.eth/N7cAie4ul0PdSxNdv2FTqgMV2JEkhOJocsxfeqe4SFE). In upcoming articles, we explain how Scroll will use this architecture to provide a more scalable user and developer experience on Ethereum. Stay tuned to learn more, and sign up to try out our pre-alpha testnet at [scroll.io](http://scroll.io/)! - -If our vision of scaling Ethereum in an open and community-driven way resonates with you, we are looking for values-aligned individuals to help Scroll become the most developer- and user-friendly scaling solution for Ethereum. - -- If you are a ZK researcher, ZKP, Go or Solidity developer, or a GPU engineer, we are working on many interesting technical challenges at the edge of what’s possible. Come build cutting-edge solutions to these problems with us in the open! -- If you love nurturing and growing ecosystems or communities, we are looking for developer advocates and community organizers to make sure we are building in a community-aligned and user-friendly way. - -To learn more about these roles and about Scroll, check out our [website](https://scroll.io/), [Twitter](https://twitter.com/Scroll_ZKP), [Discord](https://discord.gg/scroll), or [jobs page](https://boards.greenhouse.io/scrollio). If you want to get straight to the code and build with us, you can find our repos at [github.com/scroll-tech](http://github.com/scroll-tech) and [github.com/privacy-scaling-explorations/zkevm-circuits](http://github.com/privacy-scaling-explorations/zkevm-circuits). diff --git a/src/assets/blog/community-update-november.md b/src/assets/blog/community-update-november.md deleted file mode 100644 index 8d73b348a..000000000 --- a/src/assets/blog/community-update-november.md +++ /dev/null @@ -1,50 +0,0 @@ -# Community Update: November - -### Early Mainnet Statistics - -- [Over 26,000 batches have been committed and finalized on L1 Ethereum.](https://scroll.io/rollupscan?page=1&per_page=10) -- [More than 5,900,000 transactions have been executed on Scroll Mainnet.](https://scrollscan.com/) -- [Scroll Mainnet has attracted over $48,000,000 in TVL.](https://l2beat.com/scaling/projects/scroll) - -### Technical Improvements - -**Bridging Costs:** We have implemented several advanced technical optimizations to significantly reduce the cost of bridging funds onto Scroll. To further this effort, we are designing Scroll’s “batch compression” feature, which will unlock further efficiency by reducing the amount of gas it costs to commit each batch to L1 Ethereum. - -**EVM-Compatibility:** Our engineering team has made substantial progress in enabling the SHA2-256 precompile and implementing EIP-1559, Ethereum’s upgraded fee mechanism. These upgrades significantly boost Scroll’s overall compatibility with Ethereum, unlocking a more comprehensive range of new possibilities across DeFi, GameFi, and everything in between. - -**Security:** With the end goal of complete decentralization in mind, we are slowly beginning to remove Scroll’s training wheels. We are now designing an enforced batch mechanism that will ensure that user funds can always be recovered in the unlikely event of a long-lasting sequencer failure. To improve our security over the short term, we have optimized Scroll’s chain-monitor component to make it more robust. This optimization allows us to short-circuit batch finalization in the unlikely case of an ongoing exploit. - -**Robustness and UX:** With UX as a core focus, we are refactoring the Scroll bridge backends to provide a superior experience for Scroll users. One of the main features of this UX upgrade is the ability to see much more detailed information about failing transactions. - -### Scroll Community Meetups - -Part of Scroll’s journey is to foster relationships and growth across all parts of the globe, onboarding builders and users to propel the growth of our earliest community supporters. Scroll Community Meetups is a worldwide initiative for Scroll to provide support of up to $1,000 USD for developer community organizers and those who wish to host gatherings to educate local communities about Scroll and our mission. - -### Scroll at Devconnect 🇹🇷 - -Now that Devconnect 2023 has come to a close, it is only fitting that we take some time to pause and reflect on what was one of the most amazing Ethereum events of the year. - -Over the seven days we spent in Istanbul, Scroll participated in more than 30 events, hosting presentations, participating in panel discussions, and supporting builders at numerous hacker events throughout the city. Our Developer Relations team was out in full force, supporting builders at events such as [zkHack](https://twitter.com/__zkhack__), [L3 Summit](https://twitter.com/L3_Summit), ZuConnect, Builder Nights, and the Istanbul Hacker Club. We hosted numerous educational workshops at these events to help guide and support the next generation of Ethereum builders. - -In addition to the main event, the Scroll team hosted the very first L2DAYS, held in collaboration with L2beat. With a jam-packed agenda that spanned two full days, L2DAYS was the largest individual event at Devconnect, attracting some of the brightest minds in the space to bring together builders, researchers, and enthusiasts who all share a collective passion for the development of Ethereum’s rollup-centric roadmap. - -We understand that many of you reading this may not have had the opportunity to attend the in-person event, so we recorded every main stage talk across both days. You can find both [days one](https://www.youtube.com/watch?v=BsUC0jZzP8E) and [two](https://www.youtube.com/watch?v=BsUC0jZzP8E) on our official [YouTube channel](https://www.youtube.com/@Scroll_ZKP/streams). - -### ETH Global Istanbul 🛠️ - -As part of our community-building efforts in Turkey, we were proud supporters and sponsors of the 2023 ETH Global Hackathon in Istanbul. We were blown away by the levels of support for this year’s event and were proud to see that more than 160 out of the total 427 teams who registered for the event chose to build on Scroll. - -To support the effort of our early ecosystem builders, we awarded multiple teams a share in our $17,000 prize pool, spanning across two categories. The top ten winners from our ‘Best on Scroll’ track have been listed below - see [here](https://ethglobal.com/showcase?events=istanbul) for our complete list of winners. - -**Best on Scroll track:** - -- [Stark-Bridge-N-Frog](https://t.co/at6AnN67cD) -- [Memento](https://t.co/SLemfdZb7Q) -- [Footy Stars](https://t.co/UPBbNrw2CZ) -- [Prompt to Chain](https://t.co/imxLjBlxGt) -- [ZKvote Cc](https://t.co/8gVH4755yB) -- [GoldenGate](https://t.co/MOdFXA6ksU) -- [Ephemeral ZK L3s](https://t.co/PSE6QJYPD0) -- [zkmap](https://t.co/UpeQetzdxr) -- [SaferBridge](https://t.co/vpMEHHAw4l) -- [Vitalik's Secret](https://t.co/0FQsKaEae3) \ No newline at end of file diff --git a/src/assets/blog/community-update-october.md b/src/assets/blog/community-update-october.md deleted file mode 100644 index 9e50dbe56..000000000 --- a/src/assets/blog/community-update-october.md +++ /dev/null @@ -1,50 +0,0 @@ -# Community Update: October - -Welcome to Scroll’s October community update, where we unpack some of our latest technical advancements and breakthroughs made by our engineering team over the past month. - -### Mainnet Updates - -- [Over 9400 batches have been finalized on Scroll Mainnet and committed to L1 Ethereum.](https://scroll.io/rollupscan?page=1&per_page=10) -- [More than 1,950,000 transactions have been executed on Scroll Mainnet.](https://scrollscan.com/) -- [Scroll mainnet has attracted over $27M in value locked since launch since the time of writing.](https://l2beat.com/scaling/projects/scroll) -- [Our Co-Founder Sandy Peng was featured on the Bankless Podcast to discuss Scroll mainnet.](https://www.youtube.com/watch?v=FWzdCbFXAy8) - -### Scroll Mainnet is Here! - -After over two years of building, we successfully launched the Scroll zkEVM on Ethereum mainnet. Scroll mainnet is open to all developers and users and can be seamlessly accessed through our simple [bridge UI](https://scroll.io/bridge). - -For more information on our mainnet launch, we published a [blog post](https://scroll.io/blog/founderLetter) reflecting on our journey so far and includes all the relevant details you will need to get started today. - -### Security Measures - -Throughout our pre-launch phase, we battle-tested Scroll over three consecutive testnets to ensure that Scroll Mainnet upholds the highest security standards and is safe for everyone. In addition to our own internal auditing, we collaborated with four auditing firms, including [OpenZeppelin](https://twitter.com/OpenZeppelin), [Zellic](https://twitter.com/zellic_io), [Trail of Bits](https://twitter.com/trailofbits), and [Kalos Security](https://twitter.com/kalos_security). - -For a comprehensive report on our internal and external auditing phases, check out our official [blog post](https://scroll.io/blog/scrolls-security-measures) that outlines our security practices in further detail. - -### Our \$1,000,000 Bug Bounty on Immunefi - -As security remains our top priority, we have launched a [\$1,000,000 bug bounty on Immunfei](https://immunefi.com/bounty/scroll/) to encourage security researchers and auditors from our community to help ensure that Scroll continues to be battle-tested as much as possible following our mainnet launch. Additionally, our Co-Founder Haichen Shen joined ImmuneFi for a [Twitter Space](https://x.com/Scroll_ZKP/status/1715061502699532589?s=20) to discuss our bounty program's details. - -Below is a framework that lists the rewards for different tiers of identified vulnerabilities: - -- **Critical**: up to \$1,000,000.00 -- **High**: \$10,000.00 - \$50,000.00 -- **Medium**: \$5,000.00 - -### Smart Contract Deployment Tutorials - -To help support our early ecosystem builders, Raza and Ahmed from our Developer Relations team put together several video tutorials to guide developers on deploying different types of smart contracts on Scroll Mainnet. - -- [Developer Guide #1: How to deploy a smart contract on Scroll using Hardhat.](https://x.com/BuildWithScroll/status/1714788878262157566?s=20) -- [Developer Guide #2: How to deploy a smart contract on Scroll using Foundry.](https://x.com/BuildWithScroll/status/1715062322425917946?s=20) -- [Developer Guide #3: How to deploy an ERC-20 smart contract on Scroll using Remix.](https://x.com/BuildWithScroll/status/1715412851538755783?s=20) - -### ETH Hong Kong Hackathon - -In collaboration with Bewater.xyz, we co-hosted the 2023 ETH Hong Kong Hackathon. Throughout this two-day event, eight projects were granted a share in our combined \$25,000 prize pool, spanned over two categories. You can view the complete list of winning submissions via our results page [here.](https://build.bewater.xyz/en/campaigns/mUwy-2023ETH-HongKong-Hackathon/result) - -[1st Place: Supervised Ringsig - An onchain privacy-preserving transaction protocol.](https://build.bewater.xyz/en/campaigns/mUwy-2023ETH-HongKong-Hackathon/projects/393) - -[2nd Place: Lazy Otter - DeFi risk management protocol.](https://build.bewater.xyz/en/campaigns/mUwy-2023ETH-HongKong-Hackathon/projects/362) - -[3rd Place: Apus Network - A decentralized ZKP compute marketplace.](https://build.bewater.xyz/en/campaigns/mUwy-2023ETH-HongKong-Hackathon/projects/350) \ No newline at end of file diff --git a/src/assets/blog/contribute-to-scroll.md b/src/assets/blog/contribute-to-scroll.md deleted file mode 100644 index be8cfba9e..000000000 --- a/src/assets/blog/contribute-to-scroll.md +++ /dev/null @@ -1,21 +0,0 @@ -# Contribute to Scroll - -_Written by Daniel Helm ([@dghelm](https://twitter.com/dghelm))._ - -Open-source contributions are one of the most important cornerstones of the digital age. The world runs on open source, from Linux to Docker and thousands of other projects, driven by a community of developers who contribute their skills and expertise. At Scroll, we firmly believe in the power of community and are thrilled to introduce our new initiative: Contribute to Scroll. - -At some point around ETHDenver this year, after months of warring and memes about “the first zkEVM,” many of us working on Scroll wanted to emphasize what we thought mattered most — being the _**community-first zkEVM**_. We recognize that the community aspect of open source is vital for the growth and adoption of Ethereum and its entire ecosystem, Scroll included. With this in mind, we are excited to launch Contribute to Scroll, a repository that encourages open collaboration and the integration of Scroll with various developer tools and projects. - -In the Contribute to Scroll repository, we invite everyone to suggest their ideas and shape the future of Scroll by taking a look at the open issues. While the current focus is on adding Scroll to developer tooling and exploring experimental projects we call "skunkworks," this is just the beginning. We have big plans for the future, with many more exciting initiatives in the pipeline. - -We encourage you to check out the repository and see if any suggested integrations spark your interest. Some of these integrations may require as little as 10 minutes. Your contribution could have a significant impact on the development and growth of Scroll. [The Contribute to Scroll repo can be found here.](https://github.com/scroll-tech/contribute-to-scroll) - -![GitHub Repo](https://imgur.com/FqFfTwV.png) - -## Rewarding Contributors - -At Scroll, we value and appreciate the efforts of those who contribute to our ecosystem. Thanks to our friends at GitPOAP, we are able to acknowledge and reward contributors. This initiative is just the start, as we envision Scroll as a truly community-built and community-owned project. In the coming months, you can expect more of our repositories to be refactored to promote open collaboration by emphasizing comprehensive documentation and modularity to push the boundaries of what can be achieved with Scroll. - -![GitPOAP](https://i.imgur.com/uXuoVia.png) - -If you are eager to join the builder community around Scroll but don't find anything that particularly excites you, you can still contribute by suggesting another idea. Better yet, gather some collaborators, or keep an eye out for our upcoming documentation initiatives and protocol code refactors. Contribute to Scroll is a testament to our shared vision of building the future of open source technology together, and we invite you to be part of the vibrant community shaping the future. diff --git a/src/assets/blog/data-availability-4844.md b/src/assets/blog/data-availability-4844.md deleted file mode 100644 index de4b65487..000000000 --- a/src/assets/blog/data-availability-4844.md +++ /dev/null @@ -1,157 +0,0 @@ -# Data Availability Post 4844 - -*Acknowledgments: Special thanks to [Protolambda](https://x.com/protolambda), [Ye Zhang](https://twitter.com/yezhang1998), [Jens Ernstberger](https://twitter.com/0xSerious), [Péter Garamvölgyi](https://twitter.com/thegaram33), and [Hanzaleh Akbari](https://scholar.google.com/citations?user=O2IVJ6sAAAAJ&hl=en) for fruitful discussions and feedback on earlier drafts of this post.* - -## Introduction - -For the past few years, solving the blockchain [scalability trilemma](https://github.com/ethereum/wiki/wiki/Sharding-FAQs/c54cf1b520b0bd07468bee6950cda9a2c4ab4982#this-sounds-like-theres-some-kind-of-scalability-trilemma-at-play-what-is-this-trilemma-and-can-we-break-through-it) has been the top priority for the Ethereum community. The goal is to achieve higher scalability without sacrificing decentralization or security. After much-needed exploration, the Ethereum community has unanimously adopted [a rollup-centric approach](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) to tackle scalability, prioritizing the needs of rollups in Ethereum’s roadmap. - -The one and only feature requested by most rollups is an improvement of Ethereum’s usability as a data availability layer. [EIP4844](https://www.eip4844.com), otherwise known as Proto-Danksharding, is Ethereum’s quick answer to this need, while a [more advanced version](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#What-is-Danksharding) of the same EIP is in the making. EIP4844 introduces a new transaction format called *[blob-carrying transactions](https://eips.ethereum.org/EIPS/eip-4844)*, which will allow users to include a blob of data in the transaction; this data is guaranteed to be available for a few weeks. Soon the Ethereum network is going to go through a hardfork dubbed as [Cancun](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md)-[Deneb](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/beacon-chain.md) that includes EIP4844, among other things. - -Data availability has long been a topic of discussion, at least with regard to the pace of things going in and out of fashion in the blockchain sphere. However, we believe there is much to be demystified. In this post, we discuss what a data availability layer is and why rollups need to use one. Moreover, we discuss EIP4844 and how it is going to improve Ethereum’s ability to serve as a data availability layer. Finally, we look into opening a blob commitment in a circuit and present a simple proof of concept. - -## Is Integrity of Execution All You Need? - -A decentralized and permissionless blockchain offers many attractive guarantees to its users, including censorship resistance, immutability, liveness, and most prominently, integrity of execution. Simply put, the state transitions are valid, and smart contract executions are always done correctly. This is only possible thanks to every node checking the validity of blocks and the decentralized nature of the network. Rollups attempt to provide the same guarantees but cheaper! - -The main idea of rollups is to move execution off of L1 to a cheaper environment, while employing a mechanism to prove [succinctly (ZK)](https://ethereum.org/en/developers/docs/scaling/zk-rollups/) or [optimistically (OP)](https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/) to an L1 rollup contract that these executions are done correctly and the state transitions are valid. It is important to note that the so-called rollup contract typically sees only a commitment to the full state of the rollup chain, such as the Merkle Root of its state tree. A state transition updates this commitment. - -The following is a reminder of how the two major classes of these mechanisms work: - -- **OP:** Optimistic mechanisms are based on fraud proofs. The idea is that if a rollup operator submits an invalid state transition to the L1 rollup contract, people are incentivized to prove this violation to the contract and get rewarded. Therefore, **if we assume that someone can monitor the rollup chain at any time (albeit with some delay), the integrity of the execution is guaranteed.** -As long as there is no invalid state transition, L1 never has to execute any of the rollup transactions; that’s where the users get their cost savings. In contrast, should a rollup operator attest to an invalid state transition, it is imperative for someone to construct and present a fraud-proof within a designated time frame; otherwise, the invalid state transition will irrevocably be finalized. -Note that the rollup chain full-state has to be available (or recoverable) to the watchers, otherwise they can’t even recognize an invalid state transition. -- **ZK:** Succinct proofs of validity are stronger, in the sense that they do not rely on an incentivized actor to watch the chain. The inner working of these proofs are more complicated and utilize [cryptographic](https://scroll.io/blog/proofGeneration) [magic](https://scroll.io/blog/kzg), but what they achieve is simple, mathematically proving that the new state of the rollup chain is the result of correct execution. That means even if the full-state of the rollup chain is never available, the **integrity of execution is always guaranteed**. - -**This article will focus on rollups with succinct proofs.** - -**Unfortunately, integrity of execution is not all you need**. To provide properties like censorship resistance or liveness, **a rollup still needs to guarantee that its full-state is recoverable**. If a rollup cannot guarantee that its full-state is recoverable, then a user can’t make a proof of balance in the rollup chain. In turn, they will not be able to withdraw their funds to L1 without the cooperation of the rollup operator; clearly, this is an unacceptable deviation from the guarantees of L1. - -## What is Data Availability again? - -**Data availability (DA) is a guarantee that refers to data being published openly and promptly within the network.** In other words, data being available in this context means it is not withheld by the supposed publisher. Note that data availability is not about permanent storage; data is going to be available just for long enough that anyone who is interested gets a chance to fetch it. The **data availability layer** is an infrastructure for publishing data that guarantees the data will be available. - -If you find the term data availability confusing or misleading, you are not alone. In retrospect, an alternative term like **data publishing** might have been a better choice. - -See: https://twitter.com/dankrad/status/1699598362851287459 - -### Origin of the Data Availability Problem - -The problem of ensuring data availability was first introduced in the context of scaling solutions for Layer 1. A natural and simple strategy for scaling is to increase the capacity of each block. Many scalability solutions do this in one way or another. The main issue with any scalability solution that increases block size is that everyone in the network has to download and validate all the blocks. Consequently, if we increase the block size too much, weaker nodes fall behind and are effectively eliminated. Hence, we get a less decentralized network little by little. If we could somehow distribute the task of validating blocks among nodes so that everybody has to download and validate only a small portion of each block, then we could have larger blocks. One challenge of this family of solutions is to ensure that the whole block was indeed published. - -### Data Availability for Rollups - -In the previous section, we discussed why the recoverability of the full-state of the rollup chain is necessary to maintain the guarantees of L1. We can **guarantee that the full-state is recoverable by making either of the following available (1) transaction data or (2) state diff data.** - -**The rollup inherits all security assumptions of its data availability layer.** That is why many rollups use the same L1 they are operating on as the data availability layer: to avoid additional security assumptions. One way to use Ethereum as the data availability layer is to simply embed the data in a transaction and make sure it gets included in an L1 block. As long as Ethereum blocks are available, the embedded data in the transaction will be available too. Ethereum blocks are expected to be available, as the block producers are incentivized to promptly broadcast their blocks to obtain attestations from other validators; otherwise their block will be ignored. - -Currently, before the inclusion of EIP4844, the cheapest way to embed data in a transaction is to include the data as `calldata`. `calldata` is a read-only memory space where the arguments you send with the smart contract function calls are stored. This memory space is only accessible during the execution of the function and is more gas-efficient than storage. While the content of the `calldata` is not accessible in the EVM environment after the function call, anyone who has access to the history of Ethereum transactions can still recover it. - -However, `calldata` **is still more expensive than necessary as it provides other features on top of data availability**; basically calldata can be read from the smart contract. EIP4844 introduces `blob-carrying transactions` that are designed to serve as data availability utility. Only a commitment to the blob data is available in the EVM, and it is not possible to directly read this data in the smart contract. Hence, it is expected that the cost of publishing data in blobs would be significantly cheaper. However, blob data-gas is going to be priced separately with an EIP1559-like mechanism. More on this later. - -It is important to note that reducing the cost of data availability directly translates to a lower cost of operation for rollups, and that means lower transaction fees for rollup users. Today, roughly 80% of gas fees paid by a typical rollup operator is for embedding the rollup chains data on L1 as `calldata`, and only 20% for proof verification. - -## Data Availability in Scroll’s Protocol - -### A ZKRollup Contract: Commit and Finalize - -Scroll's rollup process has many stages, but for the purposes of this article, we will solely focus on **commit** and **finalize**, two stages that deal with data availability and proof verification. - -- **commit:** Every few minutes the sequencer submits a new batch of transactions as `calldata` to the `commitBatch` function of the [rollup contract](https://github.com/scroll-tech/scroll/blob/33089b829f72ce4ae56ba105248a1bbab9eb0d8e/contracts/src/L1/rollup/ScrollChain.sol#L164C25-L164C25). The function [computes](https://github.com/scroll-tech/scroll/blob/33089b829f72ce4ae56ba105248a1bbab9eb0d8e/contracts/src/L1/rollup/ScrollChain.sol#L251C40-L251C40) and [stores](https://github.com/scroll-tech/scroll/blob/33089b829f72ce4ae56ba105248a1bbab9eb0d8e/contracts/src/L1/rollup/ScrollChain.sol#L253C9-L253C25) the `Keccak` hash of the batch, which will serve as a commitment and input to the snark verifier when we verify the proof. Note that the L2 transactions data is embedded in this L1 transaction. While the data is not stored in the Ethereum state, it effectively serves as a data availability solution for Scroll’s chain. Anyone can just collect these transactions (from archive nodes) and look at their payload. -- **finalize:** After committing to a batch, the provers start creating a succinct state transition proof for the execution of the batch. `finalizeBatchWithProof` takes the proof as input and verifies a statement that looks like the following: - > Given `prevStateRoot`, executing the transaction batch committed to in `commitment(txBatch)` results in the updated state root `postStateRoot`. - - Note that the finalize step only takes a commitment to all executed transactions as an input, as opposed to all transactions in plain. - - -### PI Circuit: Decompressing Public Inputs - -As we mentioned previously, the statement proven only includes a commitment to transactions executed. This is meant to save the on-chain verifier contract from having to process a big [public input polynomial](https://scroll.io/blog/proofGeneration#phase-1-filling-in-the-trace-table), effectively compressing the public input. The prover, however, has to open this commitment in-circuit, i.e. it has to know the actual transactions in the batch. On Scroll's zkEVM, the [PI circuit](https://github.com/scroll-tech/zkevm-circuits/blob/develop/zkevm-circuits/src/pi_circuit.rs) is the sub-circuit that opens this commitment and decompresses the public input for the rest of the zkEVM. - -The PI circuit is provided with the commitment to the transaction batch as public input, and the prover has to provide the raw transaction batch data as witness. **The constraints of the PI circuit check that the provided witness indeed corresponds to the commitment in the public input.** Skipping this consistency check allows a malicious prover to commit to a batch of transactions and execute another batch of transactions, effectively making recovery of the full-state of the rollup chain impossible. - -## Extending Ethereum’s Usability as Data Availability Layer - -So far we talked about data availability importance and how Ethereum is used today as a DA layer. Now let us put our protocol designer hats on and take a quick look at different ideas for increasing Ethereum’s capacity as a DA layer. - -- **reduce `calldata` gas cost:** this is a very intuitive idea that can automatically increase Ethereum’s capacity to publish more data for data availability purposes. In fact, this was done in past in [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028). However, there is a limit to this approach. Lower gas cost for `calldata` means larger blocks, implying higher delays for block propagation. Pushing block propagation delay too high can [destabilize the consensus mechanism of L1](https://eprint.iacr.org/2016/454.pdf). -- **reduce `calldata` gas cost with a cap on total `calldata` in a block:** [EIP4488](https://eips.ethereum.org/EIPS/eip-4488) proposed exactly that. While this sounds like a good deal, Ethereum’s core developers decided that this proposal is too complex and carries too much risk of implementation, so it was eventually ditched. Notably though, this EIP was accompanied by a sister proposal [EIP4444](https://eips.ethereum.org/EIPS/eip-4444). The goal of EIP4444 was to reduce the data storage requirement for node operators and it suggests that execution clients prune historical block data after a year. EIP4444 was meant to complete EIP4488 by mitigating the additional storage load introduced by EIP4488. -- **proof of data unavailability:** Suppose we have a way to distribute the task of validating big blocks in the network so that everybody has to download and validate only a small portion of each block. What if a node tries to download a portion of the big block and it is not accessible to them? Can they make a data unavailability proof and slash the block producer? The answer is unfortunately no. Not publishing data is not a uniquely attributable fault. Quoting [Al-Bassam et al.](https://arxiv.org/abs/1809.09044): - - > *in any scheme where a node has the ability to "raise the alarm" about some piece of data not being available, if the publisher then publishes the remaining data, all nodes who were not paying attention to that specific piece of data at that exact time cannot determine whether it was the publisher that was maliciously withholding data or whether it was the fisherman that was maliciously making a false alarm.* - > -- **data availability sampling:** While we can’t make proofs of data unavailability, each node can **test the availability of the data**. The main challenge here is to design a test that is efficient and accurate, meaning that it requires a relatively small number of samples and provides a high level of confidence. -[One idea](https://vitalik.ca/general/2021/04/07/sharding.html#so-how-do-you-check-that-1-mb-of-data-is-available-without-actually-trying-to-download-it-that-sounds-impossible) is to encode the data in an **erasure code**. An erasure code is a scheme that adds redundancy to the raw data in a way that keeps the raw data recoverable, even if a constant portion of the encoded data is erased. There are many constructions for erasure codes, with *Reed-Solomon* being one of the most popular. -Suppose we encode the block data with the Reed-Solomon code, then if more than a **constant factor** $\alpha$, e.g. $\frac{3}{4}$, of the encoded data is available then the whole raw data is recoverable. We denote $\alpha$ as the recoverability ratio. Now each node has to decide whether $\alpha$ fraction of encoded data is indeed available or not. To do so each node can sample $m$ location of the encoded data at random and try to fetch them all. If only one of those parts is not available, then the node will consider the whole data unavailable. In the case that less than $\alpha$ fraction of data is available each node will detect unavailability with a probability at least $1 - \alpha^m$, this probability quickly approaches one as we increase $m$. Note that $m$ is a relatively small number comparing to the block size (technically it is a constant that does not have to grow with the block size). -To make things more clear, let's consider a concrete case in which we set the recoverability ratio $\alpha = \frac{3}{4}$, the number of samples $m=100$, and we have $N = 10^6$ nodes in the network. Now let's focus on the case that a block is not recoverable, meaning that less than $\alpha$ fraction of the encoded data is available. In this case, a simple union-bound implies that the probability that every node in the network detects the unavailability is more than $1 - N\times \alpha^m \approx 0.9999996$. -While this idea is brilliant, it is complex to implement, and it involves quite a few other components. If it was not clear, a lot of details are hiding under the rug. For instance, we have to ensure that the encoded data is a valid Reed-Solomon code word, one approach to guarantee this is using a polynomial commitment scheme such as [KZG commitment](https://scroll.io/blog/kzg). Moreover, the underlying decentralized p2p network has to be robust enough to support data dissemination and sampling even in Byzantine setting, and designing such p2p networks is an active area of research. -This is the backbone of Danksharding, the up-and-coming data sharding solution that is going to be implemented after EIP4844 and expand the capacity of Ethereum as a data availability layer even further. - -## Proto-Danksharing: blob-carrying data - -One way to think about EIP4844 is as a clever combination of EIP4444 and EIP4488. It also implements many components that are required for the original Danksharding with data availability sampling proposal; so while it is easier to implement, it paves the way for what is coming next. - -The EIP introduces a new transaction type called **blob-carrying transaction.** Each blob-carrying transaction can “carry” a list of blobs. A blob is a package of data formatted as $2^{12} = 4096$ elements from the scalar field of BLS12-381, roughly 125 kilobytes. The reason for this specific format is to simplify creating KZG commitments to the content of the blob. - -The content of the blob is not available in the execution environment, unlike `calldata`. In fact, the blob-carrying transaction only carries the commitment to the blobs, and only those commitments are available in the execution environment. The actual data is shared, fetched, and validated by the consensus clients. - -The blobs are only stored for a short time, 4096 epochs, which is a bit more than 18 days. During this time, consensus nodes are expected to serve this data to their peers in the network. After that consensus clients can prune the old blobs. This pruning mechanism is designed to alleviate the burden of storing blob data on top of other things. Remember that data availability is not about permanent data storage; 18 days is long enough so that anyone who is interested gets a chance to fetch the data. - -A blob-carrying transaction looks like a regular EIP1559 transaction with two additional fields, `max_fee_per_blob_gas` and `blob_versioned_hashes`. We will explain the function of these two new fields in the following sections. - -### Blobs Fee Market - -The fee market for blobs is separated from the normal fee market, meaning that after EIP4844, we are going to have a normal (execution) gas price and a blob gas price. There is an EIP1559-like mechanism in place for blobs gas price that targets 3 blobs and allows a maximum of 6 blobs per block. The field `max_fee_per_blob_gas` denotes the blob gas price the user is willing to pay; it must be greater or equal to the current blob gas price to be valid. - -One nice implication of this design choice is the cost of data availability for Layer 2s is not affected by the burst of demand for transacting on Layer 1. Moreover, this two-dimensional fee market design is a step towards a more ambitious vision of improving the efficiency of the fee market by adopting a [multidimensional EIP1559](https://ethresear.ch/t/multidimensional-eip-1559/11651). - -### Capacity of Blobs - -The target capacity of the blobs per block is not that high. **It is only 380 KB, which translates to roughly 100 TPS combined across all rollups.** With the current parameters, storing blob data introduces an additional nearly 50GB storage requirement for node operators. For a typical node, 50GB is nothing to worry about, so why not include more blobs per block? The reason is every consensus node still has to download and validate all the blobs. In fact, after the inclusion of EIP4844, consensus clients will not consider a block as valid, [until all its blobs have been downloaded and verified](https://github.com/ethereum/consensus-specs/blob/86fb82b221474cc89387fa6436806507b3849d88/specs/deneb/fork-choice.md#is_data_available). We still don’t have the clever data availability sampling mechanism in place. Hence, the additional load introduced by blobs has to be carefully capped to avoid the risk of destabilizing the consensus mechanism by pushing block propagation delay too high [note: basically, the attestation deadline for consensus clients is 4 seconds, so every block has to be well propagated before 4 seconds]. That is why the target for blobs is set relatively low. - -The truth is we do not yet have a strong understanding of the relation between the blob target capacity and the block propagation delay. The Ethereum network topology is very complex and almost impossible to simulate on test nets [note: a recent study looks into [propagation delay of big blocks on mainnet](https://docs.google.com/presentation/d/1glx__evliifIRyS3GnbzADd0rVPV4CFPh92INEsRdX8/edit#slide=id.g27bd3dadddc_0_195), however, blocks and blobs are very distinct in terms of propagation. Blocks are single-sourced, while blobs are multi-sourced and they can benefit from a parallelization in their propagation.]. As a result, the parameters are set very cautiously and it is possible that they could get bumped up at a later time. - -### KZG commitments and Versioned Hash - -The commitment to each blob is in the format of a **versioned hash**. It is 32 bytes value where the first byte is the version, currently set to $0x01$, followed by the last 31 bytes of SHA256 hash of the KZG commitment of the blob, i.e. `version_byte + SHA256(KZG(blob))[1:]`. The rationale is to keep the possibility of changing the commitment scheme from KZG to something else without breaking the format, just in case KZG commitments are deemed to be not as safe as desired in the future, for instance if quantum computers become practical. - -The field `blob_versioned_hashes` denotes a list of commitments to the blobs included in the transaction. Notice that a blob-carrying transaction can carry more than one blob. - -### Point Evaluation Precompile - -The EIP4844 introduces a new precompile that is designed to allow users to open the commitment to the blobs, and effectively access the blob data from smart contracts. This is very handy when verifying optimistic or succinct proofs that involve the blob data. - -The `point_evaluation_precompile(versioned_hash, kzg_commitment, proof, z, y)` receives a versioned hash, the KZG commitment to the blob, and a KZG opening proof for point $z$ and value $y$ as input. It verifies that `kzg_commitment` corresponds to the `versioned_hash` provided and that the opening `proof` is valid. That is the for Lagrange interpolation polynomial of the blob `p(X)` we have `p(z) = y`. - -This precompile nicely fits the needs of rollups with succinct proof of validity. There is no need to fully open the commitment to blob in EVM, it just suffices to check whether the data provided in the circuit as witness is consistent with the blob. More on this later. - -## Data Availability in Scroll’s Protocol Post EIP4844 - -### Commit - -Post EIP4844, a rollup commit transaction will be a blob-carrying transaction `tx`. The rollup transaction batch will be encoded in a blob. Then the rollup contract does not have to calculate the commitment to the transaction batch data anymore; we just copy `tx.blob_versioned_hashes` to the storage for use during the finalization stage. - -### Blob Consistency Check in PI Circuit - -Earlier we discussed that the function of the PI circuit is to check that the provided transaction batch indeed corresponds to the commitment to the transaction batch provided in the commit phase. We still have to do this when we put the transaction batch in a blob, but the way it is done is a bit different. - -### The Challenge of Non-native Field - -Ethereum only has precompiles for one pairing-friendly elliptic curve, BN254. Our zkEVM uses this curve for arithmetization, which means that we defined the values and constraints of the circuits over the scalar field of the curve BN254. The EIP4844, however, uses another curve, BLS12-381, for KZG commitments. This makes things a little bit complicated. - -This choice is perhaps motivated by security and efficiency. Consensus clients already use BLS12-381 curve for [making attestations](https://eth2book.info/capella/part2/building_blocks/signatures/), so it is already implemented and audited by all client teams. Besides, BN254 only provides [100 bits of security](https://github.com/zcash/zcash/issues/714), while BLS12-381 provides roughly [120 bits of security](https://hackmd.io/@benjaminion/bls12-381#Security-level). - - -*If the two curves were identical*, we could have added an advice column in the zkEVM circuit dedicated to storing the blob data padded with zeros. The KZG commitment to all circuit columns is part of the final snark proof *(note: for simplicity, assume we don’t do any aggregations at batch level)*, and we could have just compared the KZG commitment to the blob column to the versioned hash obtained from the blob-carrying transaction. - -Unfortunately, this is not the case, and we can’t just directly cross-check commitment to an advice column with the blob versioned hash. Luckily there is [another approach](https://notes.ethereum.org/@dankrad/kzg_commitments_in_proofs) that works. Let `p(X)` be the Lagrange polynomial of blob over the BLS12-381 scalar field. We can evaluate this polynomial on a random point `z`, both in contract and in-circuit, and check that these evaluations are equal. Then the famous Schwartz-Zippel lemma implies that if the equality holds with high probability then the two polynomials are identical. The challenging part here is to evaluate `p(X)` in-circuit, as this evaluation has to be done over BLS12-381, not BN254. Non-native field operations are considered relatively expensive. Using the [barycentric formula](https://github.com/ethereum/consensus-specs/blob/86fb82b221474cc89387fa6436806507b3849d88/specs/deneb/polynomial-commitments.md#evaluate_polynomial_in_evaluation_form) we can do this by $2 \times 4096$ non-native multiplications and divisions. The additional cost imposed on the prover is relatively small. - -### Proof of Concept - -We have implemented a [PoC for in-circuit blob consistency check](https://github.com/mmjahanara/blob-consistency-check). The circuit takes the commitment to the transactions batch `batch_commit` , the challenge point `z`, and the evaluation `y` as public inputs. The prover has to provide the `blob` as witness. We apply the Fiat-Shamir trick to obtain the pseudo-random challenge point `z` so the circuit enforces `z = hash(batch_commit+blob)`. Moreover, the circuit constraints `p(z)=y`, where `p(X)` is the Lagrange interpolation polynomial of `blob`. - -This gadget uses 28,083,027 advice cells and 3,393,116 lookup advice cells. On an M1 MacBook Pro (10 CPU cores, 16 GB RAM), proof generation takes 138.97 seconds on average. - -## Conclusions - -Data availability is a major piece of the blockchain scalability puzzle. EIP4844 is a big step towards improving Ethereum's utility as a data availability layer. However, with its current setting of parameters, it will not provide a large enough capacity to meet all the needs of rollups. Hopefully Danksharding, with its brilliant data availability sampling, will significantly improve the situation. Until then, rollups need to rely on a combination of calldata and blob storage, and develop better compression schemes; or accept additional security assumptions and adopt data availability layers other than Ethereum. diff --git a/src/assets/blog/designing-scroll-origins.md b/src/assets/blog/designing-scroll-origins.md deleted file mode 100644 index 57e9d9bf9..000000000 --- a/src/assets/blog/designing-scroll-origins.md +++ /dev/null @@ -1,30 +0,0 @@ -# Designing Scroll Origins - -In October, we launched Scroll Origins, a program to commemorate the launch of Scroll Mainnet and celebrate alongside early developers building on Scroll ([previous blog](https://scroll.io/blog/scroll-origins-nft)). We’ve now enabled minting for eligible addresses ([https://scroll.io/developer-nft/mint](https://scroll.io/developer-nft/mint)) and would love to take some time to elaborate on how we approached the design of this NFT. - -## Quintic, Quartic and Cubic - -A visual embodiment of Scroll’s commitment to zero knowledge principles, each NFT is a non-transferable token, an SVG file with all the data stored on-chain (No, it’s not a JPEG!). - -A unique polynomial function is created based on the contract deployment date, wallet address, and a few other project-specific factors to construct an NFT that's personal to each developer. There are three different NFT patterns with polynomial graphics based on the contract deployment stage. The earliest batch of deployed projects receives a Quintic pattern, followed by Quartic and then Cubic. - -For graphs to be beautifully displayed within the NFT frame, passing through the coordinates of origin with all turning points prominently displayed, we applied a few more math wizardries. Here’s the [Python script](https://raw.githubusercontent.com/scroll-tech/frontends/mainnet/public/files/generate_polynomials.py) for generating polynomials for each NFT graph. - -

- quintic - quartic - cubic -

- -## One more thing - -On top of that, we added some extra rarity feature unlocks - epic and rare rainbow patterns for the more active protocols with more user activities. Head over to [https://scroll.io/developer-nft/mint](https://scroll.io/developer-nft/mint) to mint your piece of Scroll’s history and share your NFT with the community to discover which one boasts the most rarity features. - -

- rainbow-background.svg - rainbow-stroke.svg -

- -## More on Scroll - -We are dedicated to building more fun activities for our community to enjoy, and your feedback is essential to make this happen. Keep an eye out for upcoming programs for both developers and users on Scroll, and thank you for supporting us early on this journey! diff --git a/src/assets/blog/founder-letter.md b/src/assets/blog/founder-letter.md deleted file mode 100644 index 648b7e7dc..000000000 --- a/src/assets/blog/founder-letter.md +++ /dev/null @@ -1,63 +0,0 @@ -# A Letter from Scroll: Mainnet is Here! - -![scroll mainnet live](/imgs/homepage/blog/founderLetter/scroll_mainnet_live.png) - -Scroll was founded in 2021 with the mission to scale Ethereum. After three successful testnets spanning over 15 months with extensive testing and rigorous security audits, we are thrilled to announce that Scroll Mainnet has officially launched for everyone to use. As we open the doors to Mainnet, we want to take a moment to reflect on our journey thus far. - -### Starting With Research - -Scroll was established by Ethereum enthusiasts and open-source contributors dedicated to advancing zero-knowledge proofs. Our research into enhancing prover efficiency yielded the first [ASIC paper ](https://ieeexplore.ieee.org/document/9499783)and a [GPU prototype](https://dl.acm.org/doi/10.1145/3575693.3575711). Coupled with advancements in proving systems, we observed a large improvement in prover efficiency. This breakthrough led to our work on the zkEVM, a scaling solution nearly identical to Ethereum with lower cost, faster speed and limitless scaling potential. We shared our nascent insights on Ethereum’s [research forum](https://ethresear.ch/t/introducing-scroll-a-new-layer2-solution/9186), marking the true beginning of Scroll's journey. - -### Growing in the Open - -As Scroll evolved, we stayed true to our academic roots, channeling our passion into building. Scroll grew up in the playground of the open source community; we were fortunate to collaborate with some of the finest researchers and most skilled engineers to build our zkEVM. Uniquely, our zkEVM has been open-source from day one, crafted in collaboration with the Ethereum Foundation’s PSE team and a community of individual collaborators. We continuously upstreamed our code in a [shared repository](https://github.com/privacy-scaling-explorations/zkevm-circuits), driven by common objectives and a dedication to open-source values. - -### Focusing on Developer Experience - -We believe scaling solutions must meet developers and users where they are, and there is no ecosystem more vibrant than Ethereum’s, where developers are accustomed to building with the open-source tooling purpose-built for this community. By offering an EVM-compatible solution, we allow a seamless experience for existing applications and developer tooling to migrate from Ethereum to Scroll. Everything functions right out of the box. Currently, we support all EVM opcodes, including the recently added PUSH0 (with the exception of the soon-to-be deprecated SELFDESTRUCT) and six precompiles, such as ecPairing, enabling developers to deploy zk applications on Scroll. Furthermore, by utilizing the widely adopted Geth codebase, we minimize deviations from Ethereum. This deepens compatibility for nodes and simplifies the adoption of diverse clients. - -### Security Over Optics - -At Scroll, our commitment to security is uncompromising and has guided all of our decisions. Our code is grounded in battle-tested cryptographic libraries such as halo2, while being reviewed regularly by community members. Internally, we operate both blue and red security teams dedicated to uncovering potential vulnerabilities. Recognizing the importance of objective assessments from external parties, we engaged four esteemed firms for comprehensive external audits. Our bridge and rollup contracts were audited by OpenZeppelin and Zellic; the zkEVM circuits were reviewed by Trail of Bits, Zellic, and KALOS, and the node implementation was analyzed by Trail of Bits. To make security even more robust, we are launching a well-funded bug bounty program on the Immunefi platform. - -### Progress Through Testnets - -Our focus on developer experience and security was not purely theoretical. In the 15 months since our initial release, our sequence of testnets has allowed us to continuously refine Scroll alongside our community. Throughout this time, we closely monitored and learned from the following milestones: - -- Over 450K smart contracts deployed -- 90M+ total transactions -- An average of 305K transactions per day -- Production of 9M+ blocks -- Generation of 280K ZK proofs - -![MainnetDigitalAssets](/imgs/homepage/blog/founderLetter/MainnetDigitalAssets.png) - -Our testnets have allowed us to approach the Mainnet release with the attention to detail and caution necessary to ensure its success. This time also gave us the opportunity to more clearly carve out our place in the broader Ethereum ecosystem and to voice our values to the public. We will continue to operate our most recent testnet, [Scroll Sepolia](https://scroll.io/blog/scrollSepolia), as a testing ground for all upgrades to our Mainnet. - -### A Global Effort - -Over the past year, we have actively encouraged developers around the world to experiment on Scroll. By globally supporting grassroots events, hosting developer-centric workshops, and organizing ZK research education, radical and transformative ideas are emerging that we once could only imagine. We aim to continue fostering a wide array of innovative applications while minimizing costs for experimentation. As the community expands, we are heartened by the increasing collaborative contributions that will cater to the next billion users. - -Our team is distributed across 26 countries, with a footprint covering every populated continent. While this has made development and coordination in some ways more logistically challenging, we intentionally structured our team this way to engage with local communities globally. Embracing a variety of identities and backgrounds allows us to achieve more meaningful levels of social consensus and reach a broader audience. - -![GroupPhotos](/imgs/homepage/blog/founderLetter/GroupPhotos.png) - -### Commitment to Community - -Our mission transcends purely technological advancement; we cherish the spirit of Ethereum just as deeply as its security that we inherit. As our community blossoms, our core values remain steadfast: unwavering commitment to technical rigor, dedication to research and technology, warmth in our interactions, openness to being challenged, and a commitment to credible neutrality. We are shaping the future with our community, seeking to encourage collaboration rather than dominance in a zero-sum game. Our vision for the ecosystem is to be like Ethereum’s "infinite garden" where we can nurture and cultivate as gardeners, allowing for healthy, organic growth. - -In this light, we welcome you to begin your journey on our Mainnet. - -### Getting Started with Scroll Mainnet - -With updated documentation and our [developer quickstart](https://docs.scroll.io/en/home/), it’s never been easier to use Scroll. - -- [For users](https://docs.scroll.io/en/getting-started/overview/) -- [For developers](https://docs.scroll.io/en/developers/) -- [Participate in our $1M bug bounty program](https://immunefi.com/bounty/scroll/) - -### Join Us - -We’d like to extend our heartfelt gratitude to our community. None of this would have been possible without your participation, support, and belief in our shared vision. We want you to know that we are in this with you for the long haul. Don’t be a stranger; you can always connect with us on [Discord](http://discord.gg/scroll), [X](https://twitter.com/Scroll_ZKP), or at[ scroll.io](http://scroll.io/). - -The Scroll Team diff --git a/src/assets/blog/kzg.md b/src/assets/blog/kzg.md deleted file mode 100644 index a4f2a4d97..000000000 --- a/src/assets/blog/kzg.md +++ /dev/null @@ -1,153 +0,0 @@ -# KZG in Practice: Polynomial Commitment Schemes and Their Usage in Scaling Ethereum - -_Written by Andy Arditi ([@\_andyrdt](https://twitter.com/_andyrdt))._ - -_Thanks to Yi Sun and Kobi Gurkan for their feedback and review._ - -## Introduction - -Zero knowledge proofs have garnered an air of mystery around them, due to their mathematical complexity. They are affectionately referred to as “moon math,” as they are seen by most as otherworldly magic. - -We at Scroll want to demystify the inner workings of zero knowledge proofs. This doesn’t make them any less magical, and we feel it is important to help the community understand the technical aspects of our work. - -In this post, we give an introduction to a critical ingredient to many zero knowledge proof systems: polynomial commitment schemes. We then briefly explain KZG, which is one of the most widely used polynomial commitment schemes in practice. We continue by discussing how KZG is being used in Scroll’s zk-rollups, as well as in Ethereum’s Proto-Danksharding. Finally, we show how zk-rollups and Proto-Danksharding can be efficiently and elegantly integrated with one another - an integration which is enabled by their respective usage of polynomial commitment schemes. - -## Why are we talking about polynomials? - -Polynomials are extremely powerful tools, and they have useful applications across many different domains. Polynomials can be used to represent large objects in an efficient way. - -One standard object that we can represent as a polynomial is an $n$-dimensional vector of field elements $v \in \mathbb{F}_p^n$. We can craft a polynomial $\phi(x)$ to represent $v$ by ensuring that $\phi(x)$ passes through the points $(i, v_i)$ for $i = 1, 2, …, n$. - -For example, we could take the $3$-dimensional vector $v = [2, 0, 6]$, and represent it as the polynomial $\phi(x) = 4x^2 - 14x + 12$. You can plug in values to verify that indeed $\phi(1) = 2$, $\phi(2) = 0$, and $\phi(3) = 6$. In this way, the polynomial $\phi(x)$ “_encodes_” the vector $v$. - - - -In general, it’s possible to take $n$ arbitrary points and find a unique polynomial of degree $n-1$ which passes through all of them. This process is called “[polynomial interpolation](https://en.wikipedia.org/wiki/Polynomial_interpolation),” and there are established methods of achieving this task efficiently. (Check out this nifty [online tool](https://www.wolframalpha.com/input/?i=interpolating+polynomial+calculator) from Wolfram Alpha that can interpolate a polynomial given a vector of inputs!) - -## What are polynomial commitment schemes? Why are they useful? - -A polynomial commitment scheme is a [commitment scheme](https://en.wikipedia.org/wiki/Commitment_scheme) with some nice additional properties. In a general commitment scheme, the committer commits to a message $m$ by outputting some commitment $c$. The committer can then later reveal the message $m$, and a verifier can validate that indeed the commitment $c$ corresponds to $m$. A commitment scheme should be “binding” (once publishing $c$, the committer should not be able to find some other message $m’ \neq m$ which also corresponds to $c$) and “hiding” (publishing $c$ should not reveal any information about the underlying message $m$). - -Now, with _polynomial_ commitment schemes, the committer commits to a _polynomial_ $\phi$, rather than some arbitrary message $m$. Polynomial commitment schemes satisfy the above-mentioned properties of normal commitment schemes, _and also achieve an additional property_: the committer should be able to “open” certain evaluations of the committed polynomial without revealing the entire thing. For example, the committer should be able to prove that $\phi(a)=b$ without revealing exactly what $\phi(x)$ is. - -This is a really awesome property that is extremely useful for zero knowledge applications! We can use it to prove that we have some polynomial which satisfies certain properties (in this case, that it passes through a certain point $(a,b)$), all _without revealing what the polynomial is_! - -Another reason why this property is useful is that the commitment $c$ is generally much smaller than the polynomial it represents. We’ll see a commitment scheme where a polynomial of arbitrarily large degree can be represented by its commitment as a single group element. This is especially desirable when thinking about posting data on-chain, where block space is a valuable asset, and any sort of compression can be immediately translated into cost savings. - -## The KZG polynomial commitment scheme - -Ok, now that we’ve motivated polynomial commitment schemes, let’s see how to actually construct one. The one we’ll be focusing on is the [Kate-Zaverucha-Goldberg](https://www.iacr.org/archive/asiacrypt2010/6477178/6477178.pdf) (KZG) polynomial commitment scheme. KZG is widely used for many tasks in the blockchain space - it is already being used by Scroll’s proof systems, and it will soon be integrated into Ethereum’s protocol with [Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) (EIP-4844). We’ll elaborate on each of these use cases later on. - -This section will briefly outline the mathematical construction of the KZG polynomial commitment scheme. It is not meant to be comprehensive, but should give a clear picture of how things are working. For the mathematically inclined, we will provide some further references at the end of this section. - -Anyway, let’s begin with the construction. The KZG polynomial commitment scheme consists of four steps. - -Step 1 (Setup): - -- The first step is a one-time trusted setup. Once this step is completed, the other steps can be repeated to commit to and reveal various different polynomials. -- Let $g$ be a generator of some pairing-friendly elliptic curve group $\mathbb{G}$ -- Let $l$ be the maximum degree of the polynomials we want to commit to -- Pick some random field element $\tau \in \mathbb{F}_p$ -- Compute $(g, g^{\tau}, g^{\tau^2}, …, g^{\tau^l})$, and release it publicly - - Note that $\tau$ should _not_ be revealed - it is a secret parameter of the setup, and should be discarded after the setup ceremony such that nobody can figure out its value.[^1] - -Step 2 (Commit to polynomial): - -- Given a polynomial $\phi(x) = \sum_{i=0}^{l} \phi_i x^i$ -- Compute and output commitment $c = g^{\phi(\tau)}$ - - Although the committer cannot compute $g^{\phi(\tau)}$ directly since he doesn’t know $\tau$, he can compute it using the output of the setup $(g, g^{\tau}, g^{\tau^2}, …, g^{\tau^l})$: - - $\prod_{i=0}^{l} (g^{\tau^i})^{\phi_i} = g^{\sum_{i=0}^{l}\phi_i \tau^i}= g^{\phi(\tau)}$ - -Step 3 (Prove an evaluation): - -- Given an evaluation $\phi(a) = b$ -- Compute and output proof $\pi = g^{q(\tau)}$ - - Where $q(x) := \frac{\phi(x) - b}{x - a}$ - - This is called the “_quotient polynomial._” Note that such a $q(x)$ exists if and only if $\phi(a)=b$. The existence of this quotient polynomial therefore serves as a proof of the evaluation. - -Step 4 (Verify an evaluation proof): - -- Given a commitment $c = g^{\phi(\tau)}$, an evaluation $\phi(a)=b$, and a proof $\pi = g^{q(\tau)}$ -- Verify that $e(\frac{c}{g^b}, g) = e(\pi, \frac{g^{\tau}}{g^a})$, where $e$ is a non-trivial [bilinear mapping](https://en.wikipedia.org/wiki/Bilinear_map) - - Some algebra (see linked notes below) shows that this is equivalent to checking that the property in Step 3 holds at $\tau$: - - $q(\tau) = \frac{\phi(\tau) - b}{\tau - a}$ - - The bilinear mapping enables us to check this property without knowing the secret setup parameter $\tau$. -- Once this verification is complete, we can conclude that (with overwhelmingly high probability) the quotient polynomial is correct, and therefore that the evaluation is correct. - -This was a very quick whirlwind of the math behind KZG, with some details left out. For more depth (and to see a cool extension where you can prove multiple evaluations with a single proof), check out these great resources: - -- [Dankrad Feist’s notes on KZG](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) -- [Alin Tomescu’s notes on KZG](https://alinush.github.io/2020/05/06/kzg-polynomial-commitments.html) - -## Use cases - -**Scroll’s zk-rollups** - -In the case of zk-rollups, we want to prove that some computation which occurred on L2 was valid. At a high level, the computation which occurs on L2 can be represented as a 2-dimensional matrix through a process called “witness generation.” The matrix can then be represented by a list of polynomials - each column can be encoded as its own 1-dimensional vector. The computation’s validity can then be expressed as a set of mathematical relations that must hold between these polynomials.[^2] For example, if the first three columns are represented by polynomials $a(x)$, $b(x)$, and $c(x)$ respectively, we may want the relation $a(x) \cdot b(x) - c(x) = 0$ to hold. Whether or not the polynomials (which represent a computation) satisfy these “correctness constraints” can be determined by evaluating the polynomials at some random points. If the “correctness constraints” are satisfied specifically at these random points, then a verifier can assert that, with very high probability, the computation is correct.[^3] - - - -One can naturally see how a polynomial commitment scheme like KZG can be directly plugged into this paradigm: the rollup will commit to a set of polynomials, which together represent the computation. A verifier can then ask for evaluations on some random points to check if the correctness constraints hold, therefore verifying if the computation represented by the polynomials is valid or not.[^4] - -Scroll specifically uses KZG for its polynomial commitment scheme. There are a couple of other commitment schemes that would also function similarly, however they both currently have drawbacks in comparison to KZG: - -1. The **Inner Product Argument** **(IPA)** scheme is appealing because it does not require a trusted setup, and can also be composed recursively in an efficient way. However, it requires a particular cycle of elliptic curves (known as the “[_Pasta curves_](https://electriccoin.co/blog/the-pasta-curves-for-halo-2-and-beyond/)”) in order to achieve its nice recursive properties. Efficient operations over these Pasta curves are currently not supported on Ethereum. This means that proof verification, which takes place at the Ethereum execution layer, would be extremely inefficient. If used without its recursive properties (say, using non-Pasta curves), IPA’s proof verification time grows linearly in the size of the circuit, which makes it infeasible for the huge circuits required for zk-rollups. -2. The **Fast Reed-Solomon IOP of Proximity** **(FRI)** scheme also does not require a trusted setup. It does not rely on elliptic curve cryptography, and accordingly has fast proof generation (expensive elliptic curve operations are not necessary for generating proofs) and is quantum-resistant. However, its proof size and verification time are both large compared to those of KZG. - -**Ethereum’s Proto-Danksharding** - -[Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) (EIP-4844) is a proposal which aims to make it cheaper for rollups to post data on Ethereum’s L1. It will do this by introducing a new transaction type called a “blob-carrying transaction.” This new transaction type will carry with it a larger data blob (on the order of 128 kB). However, the data blob will not be accessible from Ethereum’s execution layer (i.e. a smart contract cannot directly read a data blob). Rather, only a _commitment_ to the data blob will be accessible from the execution layer. - -Now, how should we create the commitment to the data blob? We could generate a commitment by simply hashing the data blob. But this is a bit restrictive, as we can’t prove any properties of the data blob without revealing the whole thing.[^5] - -We could alternatively treat the data blob as a polynomial (remember that it’s easy to represent mathematical objects such as data vectors as polynomials) and then use a polynomial commitment scheme to commit to the data. This allows us not only to achieve a commitment to the data, but also to be able to efficiently check certain properties of the data blob without needing to read the entire thing. - -One very useful feature which is enabled by polynomial commitments to data blobs is that of [data availability sampling](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) (DAS). With DAS, validators can verify the correctness and availability of a data blob _without needing to download the entire data blob_. We’ll not delve into the specifics of exactly how DAS works, but it is enabled by the special properties of polynomial commitment schemes that we’ve discussed above. While the actual implementation of DAS is not included in the initial Proto-Danksharding (EIP 4844) proposal, it will be implemented shortly afterwards, on the way to Ethereum achieving "full" Danksharding. - -Ethereum plans specifically to use KZG as its polynomial commitment scheme. Researchers have explored other polynomial commitment schemes, and have [concluded](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#Couldn%E2%80%99t-we-use-some-other-commitment-scheme-without-a-trusted-setup) that KZG leads to the most elegant and efficient implementation for Ethereum’s Danksharding roadmap in the short to medium term.[^6] - -**How Scroll’s zk-rollups and Ethereum’s Proto-Danksharding interact** - -We’ve now discussed two seemingly independent uses of KZG: Scroll uses it to commit to computations executed on L2, and Ethereum uses it to commit to data blobs. Now we’ll see how these two uses of KZG can actually interact in a cool way! - -After processing a batch of transactions on L2 and computing a new state root, Scroll will post essentially three things to the Ethereum L1: - -- $T$ - the list of transactions that were executed on L2 -- $s_i$ - the new state root at time-step $i$ -- $\pi$ - a proof that the new state root $s_i$ is valid - -We want to verify not only that the new state root $s_i$ is valid (i.e. that there exists _some_ list of transactions that, when properly executed, causes the previous state root $s_{i-1}$ to change to the new state root $s_i$), but also that the list of transactions $T$ _is actually the list of transactions_ which causes the state root to change from $s_{i-1}$ to $s_i$. In order to achieve this, we need to somehow enforce a connection between $T$ and $\pi$. - -$T$ will be posted as a data blob, and so the verifier contract will have access to a KZG commitment to it. The proof $\pi$ will itself contain KZG commitments to various polynomials which represent the computation. One polynomial that is committed to within $\pi$ is the polynomial representing the list of transactions that were processed. Thus, we have two separate KZG commitments to the same data - let’s call them $C_T$ (from the data blob) and $C_{\pi}$ (from the proof), and let’s assume they represent the same underlying polynomial $\phi_T$ (this polynomial is a representation of the transaction list $T$). We can efficiently check if the two commitments represent the same polynomial with a “[proof of equivalence](https://ethresear.ch/t/easy-proof-of-equivalence-between-multiple-polynomial-commitment-schemes-to-the-same-data/8188)”: - -1. Compute $z = \text{hash}(C_T | C_{\pi})$ -2. Publish evaluation proofs that $\phi(z) = a$ under _both_ commitments $C_T$ and $C_{\pi}$ - -The idea here is to pick a random(ish) point, and check equality between the two polynomials. If the polynomials are equal at the randomly selected point (and the number of total points is sufficiently large), then the two polynomials are the same with very high probability.[^7] - -This proof of equivalence actually works for any combination of polynomial commitment schemes[^8] - it doesn’t matter if one is a FRI commitment while the other is a KZG commitment, as long as both can be opened at a point. - -## Wrapping up - -Let’s do a bit of a recap. - -We began by motivating polynomials. Polynomials are useful objects that can easily represent large mathematical objects. They become even more useful when we introduce polynomial commitment schemes. Polynomial commitment schemes are like normal cryptographic commitment schemes, with the additional property that point-evaluations can be proven without revealing the entire polynomial. - -We then gave a mathematical description of one of the most popular polynomial commitment schemes: KZG. The scheme has four steps: (1) a one-time trusted setup; (2) a commitment $c = g^{\phi(\tau)}$; (3) a proof $\pi = g^{q(\tau)}$, where $q(x)$ is a quotient polynomial; and (4) a verification using a bilinear mapping, checking that the relation between $\phi(x)$ and $q(x)$ is correct. - -The point-evaluation property of polynomial commitment schemes enables very cool applications. - -We saw one such application in the case of zk-rollups: computation is represented as a polynomial, and its validity can be verified by checking that the polynomial satisfies certain constraints. Since polynomial commitment schemes allow for point-evaluation proofs, zk-rollups can simply use the concise commitment to represent the computation, rather than the lengthy polynomial itself. - -Another application is Proto-Danksharding: data blobs are represented as polynomials, and their commitments are computed via KZG. The mathematical properties of KZG enable data availability sampling, which is critical to the scaling of Ethereum’s data layer. - -We finished by examining how the commitments in Scroll’s zk-rollup proofs interact with data blob commitments on Ethereum. - -[^1]: While it sounds like this is a hard task to achieve, there are established methods of conducting such trusted setup ceremonies with weak trust assumptions (1-out-of-N trust assumption) using [multi-party computation](https://en.wikipedia.org/wiki/Secure_multi-party_computation) (MPC). For more on how trusted setups work, check out [this post by Vitalik](https://vitalik.ca/general/2022/03/14/trustedsetup.html). -[^2]: This process of transforming a computation into a mathematical object, and expressing its validity as mathematical relations is known as “arithmetization.” There are various ways of doing this transformation, but Scroll uses [Plonkish arithmetization](https://zcash.github.io/halo2/concepts/arithmetization.html). -[^3]: This idea is formally known as the [Schwartz Zippel Lemma](https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma), and it is widely used to efficiently validate properties of polynomials. -[^4]: Note that this interactive challenge where the verifier queries the polynomials at random points can be converted into a non-interactive protocol via the [Fiat-Shamir transform](https://www.zkdocs.com/docs/zkdocs/protocol-primitives/fiat-shamir/). -[^5]: We could alternatively prove some property of the data blob using a succinct proof (e.g. proving knowledge of the data which hashes to the correct hash, and then proving some property of that data), but this is too expensive to perform every time information about data blobs needs to be accessed/validated. -[^6]: In the long term, KZG may need to be swapped out for a polynomial commitment scheme which is quantum-resistant. Proto-Danksharding is being [implemented in a way](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#Why-use-the-hash-of-the-KZG-instead-of-the-KZG-directly) such that the commitment scheme can be swapped out in the future. -[^7]: This again follows from the [Schwartz Zippel Lemma](https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma). Note that it’s important that the prover must not be able to know the value of the evaluation point $z$ before committing to data - this would enable the prover to easily construct a bogus polynomial which satisfies the equality check at $z$. By setting $z$ to the hash of both commitments, the prover cannot know $z$ until after both polynomials are committed. -[^8]: There is a complication, however, that arises when two polynomial commitment schemes operate over distinct groups. For example, Scroll currently uses the [BN254](https://neuromancer.sk/std/bn/bn254) curve while Ethereum plans to use [BLS12-381](https://electriccoin.co/blog/new-snark-curve/) curve for Proto-Danksharding. In this case, we aren’t able to directly compare group elements, as in the proof of equivalence outlined above. However, there’s a way around this, which can be read in [Dankrad Feist’s notes](https://notes.ethereum.org/@dankrad/kzg_commitments_in_proofs#ZKPs-over-non-aligned-fields). diff --git a/src/assets/blog/pre-alpha-testnet.md b/src/assets/blog/pre-alpha-testnet.md deleted file mode 100644 index 2bbc52022..000000000 --- a/src/assets/blog/pre-alpha-testnet.md +++ /dev/null @@ -1,42 +0,0 @@ -# Announcing the Scroll Pre-Alpha Testnet - -After over a year of building our zkEVM-based zkRollup in close collaboration with the PSE (Privacy and Scaling Explorations) group at the Ethereum Foundation, we are releasing the pre-alpha version of Scroll for external testers! In the spirit of building in the open with the community, we have prioritized getting community feedback quickly with this initial release. - -If you’d like to be an early tester, sign up at [signup.scroll.io](https://signup.scroll.io/) for access. We will invite as many testers as possible while we drive towards a permissionless, public release. - -## **What’s in the pre-alpha testnet?** - -This initial release will be run on a private PoA fork of Ethereum (the testnet L1) operated by Scroll. On top of this private chain, we will run a testnet Scroll L2 supporting the following features: - -- Users will be able to play with a few key demo applications such as a Uniswap fork with familiar web interfaces such as Metamask. -- Users will be able to view the state of the Scroll testnet via block explorers. -- Scroll will run a node that supports unlimited read operations (e.g. getting the state of accounts) and user-initiated transactions involving interactions with the pre-deployed demo applications (e.g. transfers of ERC-20 tokens or swaps of tokens). -- Rollers will generate and aggregate validity proofs for part of the zkEVM circuits to ensure a stable release. In the next testnet phase, we will ramp up this set of zkEVM circuits. -- Bridging assets between these testnet L1 and L2s will be enabled through a smart contract bridge, though arbitrary message passing will not be supported in this release. - -Scroll’s pre-alpha testnet will be the first chance for early users and developers to interact with our infrastructure and experience dapp workflows on Scroll. As we scale our node infrastructure, we will relax some of the performance-motivated restrictions and onboard more testers. - -## **What’s next for Scroll?** - -Soon after our pre-alpha testnet, we will be deploying a more open and permissionless alpha testnet. This will be deployed on a public Ethereum testnet and will be open to the public. In particular, our community can expect the following features: - -- Allowing developers to deploy smart contracts -- Allowing anyone to run an archival Scroll node -- Generating and aggregating more pieces of the zkEVM proof to be verified on-chain - -As we move step by step towards an eventual mainnet release, we will enable successively more pieces of our final architecture, including a decentralized Roller network and integrations with EVM-native developer tools. In the next few weeks, we will release a series of expository articles and posts explaining Scroll’s architecture and the technical vision that has informed Scroll’s development decisions. Stay tuned to learn more about these! - -## Scroll’s Release Philosophy - -Scroll’s plan for scaling Ethereum and serving billions of users and developers is a long-term roadmap that requires careful consideration and execution. We firmly believe in the future of the zkEVM as a key to scaling Ethereum, and as such, are committed to releasing it in a way that allows us to work through any challenges in a focused manner and incorporate feedback alongside our roadmap. - -By giving users, developers and the broader community progressively more functionality to test instead of releasing all features at once, we aim to isolate any bugs and UX difficulties early and often, allowing us to build towards the most robust, scalable solution that will stand the test of time. - -## Join us and learn more - -To become an early tester or contributor, sign up to try out our pre-alpha testnet at [signup.scroll.io](https://signup.scroll.io/). In the meantime, if our vision of scaling Ethereum in an open and community-driven way resonates with you, we are looking for values-aligned individuals to help Scroll become the most developer- and user-friendly scaling solution for Ethereum. - -- If you are a ZK researcher, ZKP, Go or Solidity developer, or a GPU engineer, we are working on many interesting technical challenges at the edge of what’s possible. Come build cutting-edge solutions to these problems with us in the open! -- If you love nurturing and growing ecosystems or communities, we are looking for developer advocates and community organizers to make sure we are building in a community-aligned and user-friendly way. - -To learn more about these roles and about Scroll, check out our [website](https://scroll.io/), [Twitter](https://twitter.com/Scroll_ZKP), [Discord](https://discord.gg/scroll), or [jobs page](https://boards.greenhouse.io/scrollio). If you want to get straight to the code and build with us, you can find our repos at [github.com/scroll-tech](https://github.com/scroll-tech) and [github.com/privacy-scaling-explorations/zkevm-circuits](https://github.com/privacy-scaling-explorations/zkevm-circuits). diff --git a/src/assets/blog/proof-generation.md b/src/assets/blog/proof-generation.md deleted file mode 100644 index 89ce16aa7..000000000 --- a/src/assets/blog/proof-generation.md +++ /dev/null @@ -1,420 +0,0 @@ -# The Anatomy of Proof Generation - -_Written by Andy Arditi ([@\_andyrdt](https://twitter.com/_andyrdt)) and Ye Zhang ([@yezhang1998](https://twitter.com/yezhang1998))._ - -_Thanks to Yi Sun, Han Jian, and Ying Tong Lai for their feedback and review._ - -## Introduction - -Zero-knowledge proofs (ZKPs) have recently been generating a lot of excitement in the crypto community. -As ZKPs have become increasingly feasible over the past few years, they have unlocked new technological possibilities, and are now seen as a predominant solution to problems in privacy and scaling. - -Despite their promising potential, most of today’s ZKP systems face a major limitation: proof generation is slow and expensive. - -This limitation is commonly posed as a criticism of ZKP technology, and rightly so (for now, at least). Generating a proof attesting to the correct execution of some program requires _many_ orders of magnitude more computation than the program’s original execution. Complex programs therefore become very expensive (sometimes _prohibitively expensive_) to generate proofs for. This high cost limits the universe of applications for which ZKP technology can be feasibly applied. - -In this article, we’ll aim to understand _why_ proof generation is so expensive. In order to do so, we’ll need to break down _how_ proof generation works on a technical level, and see exactly which types of computations are involved. Once understanding the inner workings of proof generation, we can explore various ideas of how to accelerate it. - -## Working example: Square-Fibonacci - -In order to demonstrate the process of proof generation, we will use a working example throughout the article. - -We define the Square-Fibonacci sequence[^1], a variation of the Fibonacci sequence: - -- Let $f_0 = 1, f_1 = 1$ -- For $$i \geq 2$$, define $f_{i} := (f_{i-2})^2 + (f_{i-1})^2 \mod q$ - - Where $q$ is a large prime integer. We use this modulus to bound the size of each element, so that it can be represented by some predetermined number of bits. - -Let $n$ be some very large integer. For convenience, we’ll assume $n$ is a power of 2. Let $k$ be the $n^{th}$ Square-Fibonacci number. - -**Our goal**: generate an efficiently-verifiable proof $\pi$ showing that indeed $k$ is the $n^{th}$ Square-Fibonacci number (i.e. $f_n = k$). - -A verifier could naively check this statement themselves by computing $f_2$, and then $f_3$, and then $f_4$, and so on until reaching $f_n$, and then checking whether or not $f_n = k$. However, this requires many steps of computation (remember that $n$ is very large). - -Ideally we’d like the proof $\pi$ to be "efficiently-verifiable" - the verifier should be able to verify the proof much more quickly and efficiently than recomputing $f_n$ explicitly. - -## Overview of Plonk-based proof generation - -In this post, we will focus specifically on explaining Plonk-based proof systems. While other proof systems exist, studying this particular class of systems will give one general insight into the proof generation process. - -Since the [Plonk](https://eprint.iacr.org/2019/953.pdf) proof system was originally proposed in 2019, many extensions and variations have been developed. The family of Plonk-based proof systems has gained tremendous adoption, and is being used widely. - -At Scroll, we are using "[Halo 2](https://electriccoin.co/blog/ecc-releases-code-for-halo-2/)," which is a Plonk-based proof system built and maintained by our wonderful friends at [Zcash](https://z.cash/). We [modify Halo 2](https://github.com/privacy-scaling-explorations/halo2) to use KZG as its polynomial commitment scheme (rather than its default scheme, [IPA](https://dankradfeist.de/ethereum/2021/07/27/inner-product-arguments.html)) in order to achieve more efficient on-chain proof verification. - -### The phases of proof generation - -At a high level, proof generation consists of three phases: - -- **Phase 1**: write out the "witness" - - The "witness" (also sometimes known as the "trace") refers to some data that shows _why_ a statement is true. - - For example, in the Square-Fibonacci case, we would write out the step-by-step computation in a table, one step per row. - - The first row would contain $[f_0, f_1, f_2]$, where $f_2 = (f_0)^2 + (f_1)^2$. The second row would contain $[f_1, f_2, f_3]$, where $f_3 = (f_1)^2 + (f_2)^2$, and so on, until reaching the last row containing $[f_{n-2}, f_{n-1}, f_{n}]$. -- **Phase 2**: commit to the witness - - Committing to the witness involves outputting some succinct representation of the witness, and in this sense _compressing_ the witness. - - Using a polynomial commitment scheme for this step allows us to prove certain properties about the original witness referencing just the succinct commitment. -- **Phase 3**: prove that the witness is correct - - The witness generated in phase 1 must obey certain properties to be valid. - - For example, in the Square-Fibonacci case, the mathematical relation $f_{i} = (f_{i-2})^2 + (f_{i-1})^2$ must hold within each row. - - A short proof that the original witness satisfies these properties can be generated. Verification of the proof does not require access to the original witness table - verification can be performed referencing only the succinct commitment generated in phase 2. - -We will dive into each of these three phases more deeply, and explore the computations required for each. -However, before doing so, we first need to briefly review some concepts about polynomials. - -## Polynomial preliminaries - -### Forms of representation - -A polynomial $P(x) = \sum_{i=0}^{n-1} p_i x^i$ of degree $(n-1)$ can be represented in two ways: - -1. **Coefficient form** - - $P(x)$ can be represented as a tuple of its $n$ coefficients: $[p_0, p_1, \ldots, p_{n-1}]$ -2. **Evaluation form** - - $P(x)$ can be represented as a tuple of $n$ distinct evaluations: $[P(x_0), P(x_1), \ldots, P(x_{n-1})]$ - - The set of values $\{ x_0, x_1, \ldots, x_{n-1} \}$ over which the polynomial is evaluated is known as the "evaluation domain" - -Converting from coefficient form to evaluation form is known as the "Fourier transform," and converting in the reverse direction is known as the "inverse Fourier transform." - -Each of these two transforms can naively be achieved in $O(n^2)$ computation using simple methods. From coefficient form, we can simply evaluate the polynomial at each $x_i$ in evaluation domain. From evaluation form, we can use [Lagrange interpolation](https://en.wikipedia.org/wiki/Lagrange_polynomial#Definition) to obtain the unique degree $(n-1)$ polynomial passing through each of the $n$ points. - -We will be working with polynomials of very high degree, and so we’d ideally like these transforms to be more efficient. This is where the _fast_ Fourier transform comes in. - -### Fast Fourier transform (FFT) - -The efficiency of the transforms can be improved by imposing some additional structure. Proof systems generally only consider polynomials over a [finite field](https://en.wikipedia.org/wiki/Finite_field), and so we will restrict each coefficient $p_i$ and each evaluation point $x_i$ to be elements of a finite field $\mathbb{F}_q$. Additionally, we will restrict the evaluation domain (the $x_i$’s) to be a multiplicative subgroup of $\mathbb{F}_q$. In other words, the evaluation domain can be written as $\{ \omega^0, \omega^1, \ldots, \omega^{n-1} \}$ for some element $\omega \in \mathbb{F}_q$ with order $n$ (i.e. $\omega^n = 1 \mod q$). The elements in this set are called "$n^{th}$ roots of unity," since exponentiating any of them to the power of $n$ will result in 1, the "unity" element. - -This additional structure imposed over the evaluation domain enables some nice mathematical symmetries that can be leveraged to make the transforms more efficient. The **fast Fourier transform (FFT)** algorithm takes advantage of these symmetries to achieve a Fourier transform in $O(n \log n)$. The **inverse fast Fourier transform (iFFT)** algorithm similarly achieves an inverse Fourier transform in $O(n \log n)$. - -For a more in depth account of the fast Fourier transform, check out this [blog post](https://vitalik.ca/general/2019/05/12/fft.html) by Vitalik. - -With these preliminaries out of the way, we can proceed with our description of phase 1. - -## Phase 1: Filling in the trace table - -### The trace table - -The **trace table** is a 2-dimensional matrix where the "witness," or "trace," is written down. The trace table also includes other values, in addition to the witness, that are useful in demonstrating that the witness is correct. Each cell in the trace table is an element of a large finite field $\mathbb{F}_q$. - -Here’s what a trace table might look like for our working example: - - -The first three columns labeled $A, B, C$ represent the "witness data" (also known as the "private input"). Each row lists three sequential Square-Fibonacci numbers. The $i^{th}$ row $(f_i, f_{i+1}, f_{i+2})$ can be seen as a witness for (or "attesting to") the $(i+2)^{th}$ Square-Fibonacci number, as it explicitly shows the previous two values used to compute it. - -The $S$ column is known as a "selector" column. It indicates that a certain mathematical relation, or "custom gate," should hold over the elements of that row. In this case, a "1" in the $S$ column indicates that the first three elements of the row $(a, b, c)$ must satisfy $c = a^2 + b^2 \mod q$. A "0" in the $S$ column indicates that this custom gate condition does _not_ need to be satisfied. Note that in the last row, the witness data is blank, and so the selector is turned off. We insert this blank row for convenience, so that the height of the table becomes $n$, an even power of 2. - -The $P$ column is known as a "public input" column. This column contains inputs to the circuit that are publicly known. In this case, the first two values in the Square-Fibonacci sequence $f_0, f_1$ are publicly known, and $k$ is the value in the statement to be proved. - -### Witness generation - -The process of actually filling in the trace table is called "witness generation." - -This process requires iterating over each cell in the table and filling in its appropriate value. In general, a cell’s value is either copied in from an external source, or computed based on surrounding entries. The latter requires arithmetic over elements in $\mathbb{F}_q$, since each cell of the trace table is an element of this large finite field. - -Arithmetic over large finite field elements is more expensive to compute than arithmetic over native types, such as `int` or `long`. The field elements generally require ~256 bits to represent, which is much larger than the [word size]() of modern CPUs. Having to split each element’s representation across words, in addition to needing to compute all values modulo $q$, adds a computational overhead to each arithmetic operation. - -In our working example, filling in the witness table involves computing $f_{i+2} = (f_{i})^2 + (f_{i+1})^2 \mod q$ at each row $i$, requiring multiplications and additions over $\mathbb{F}_q$. - -For this particular example, the total computation required by witness generation is essentially the same as the total computation required to perform the original computation (computing the $n^{th}$ Square-Fibonacci number). Each row of the witness corresponds one-to-one with a step of the original computation. - -However, for more complex examples[^2], the computation required for witness generation is usually much larger than the original computation. Each individual step of a complex computation may need to be represented by _many_ witness rows (>1000 in some cases). This more complex representation, or "arithmetization," usually leads to a significant blow up in the size of the trace table. - -Overall, if a trace table is very large and there are a lot of entries to compute, the time and computation required for witness generation can be significant. - -### Additional processing - -Once the witness data (or "private input") has been filled in and committed to, there is some additional processing of the trace table that takes place. - -Auxiliary columns (also called "virtual columns") are extra columns generated to facilitate proving the trace’s validity. There are certain types of constraints which necessitate these auxiliary columns. - -One such constraint is the "wiring constraint." This constraint enforces that some set of cells in the trace table take on the same value. In the Square-Fibonacci trace table, we need such a constraint to enforce that each row proceeds sequentially from the previous one: for two consecutive rows $[a_i, b_i, c_i]$ and $[a_{i+1}, b_{i+1}, c_{i+1}]$, we enforce that $a_{i+1} = b_i$ and $b_{i+1} = c_i$. - -At a high level[^3], an intermediate "accumulator polynomial" is computed from the witness data, and stored in evaluation form as an extra auxiliary column $Z$. Proving that the wiring constraint holds then reduces to proving that certain constraints hold over $Z$ and its relation to the other witness columns. - -Another type of constraint which requires auxiliary columns is lookup tables. First introduced in 2020 by [plookup](https://eprint.iacr.org/2020/315.pdf), lookup tables allow for efficient set-membership checks. The computation required by auxiliary column generations for lookups can involve sorting in addition to arithmetic operations. - -Note that auxiliary columns are computed only after the witness data has been fully generated and committed to. Auxiliary column values don’t just depend on the witness data, but also on some additional randomness. This randomness is computed using the [Fiat-Shamir heuristic](https://en.wikipedia.org/wiki/Fiat%E2%80%93Shamir_heuristic), and the transcript on which it depends includes the commitments to the witness data. - -### Phase 1 cost summary - -- Enter witness data into trace table - - Iterate over and fill in all witness cells in trace table - - Computing witness values requires large finite field arithmetic -- Generate auxiliary columns for wiring and lookup constraints - - Requires additional large finite field arithmetic (as well as sorting, in the case of lookups) - -## Phase 2: Committing to the trace table - -### Interpreting the trace table columns as polynomials - -Consider column $A$ from our trace table. This column, along with all the others, is simply a length-$n$ vector of finite field elements. We can think of this vector as the evaluation form of a unique polynomial $A(x)$ with degree $(n-1)$: the $i^{th}$ element of $A$ corresponds to the evaluation $A(\omega^i)$. Here, $\omega \in \mathbb{F}_q$ is as defined in the "Polynomial preliminaries" section - it has order $n$. - -Here’s what our trace table (including the auxiliary column $Z$) looks like, interpreted as column polynomials in evaluation form: - - -### Commit to column polynomials - -Now that we see how to interpret the columns as polynomials, we can commit to each of them using a polynomial commitment scheme. - -This allows us to "compress" each column into a short representation. Doing this for all the columns yields a succinct representation of the entire trace table. - -Using a polynomial commitment scheme also allows us to generate proofs of evaluation - the prover can convince a verifier that the committed polynomial passes through a particular point, without revealing the entire polynomial. - -### Computing KZG commitments - -This subsection will give a brief overview of the mathematical computation required to compute KZG commitments for each column. For a more thorough treatment of the math, see Dankrad Feist’s posts on [KZG](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) and [PCS multiproofs](https://dankradfeist.de/ethereum/2021/06/18/pcs-multiproofs.html) (in the latter article, see the sections titled "Evaluation form" and "Lagrange polynomials"). - -First a bit of notation: let $[r]_1$ denote $r \cdot g$, where $g$ is a generator for the elliptic curve group $\mathbb{G}_1$. - -Let $\tau \in \mathbb{F}_p$ denote the secret value used in the KZG trusted setup ceremony. We can write the output of the KZG setup as $([\tau^0]_1, [\tau^1]_1, [\tau^2]_1\ldots, [\tau^l]_1)$. Note that $l$ is an upper bound on the degree of the polynomials which can be committed to from this setup. - -Suppose $A(x)$ is the column polynomial that we want to commit to. The KZG commitment to be computed for this polynomial is $[A(\tau)]_1$. - -If we had $A(x)$ in coefficient form, denoting its $i^{th}$ coefficient as $A^{(i)}$, we could compute the commitment value as follows: - -$$ -[A(\tau)]_1 = \sum_{i=0}^{n-1} A^{(i)}\cdot [\tau^i]_1 -$$ - -However, this would require converting $A(x)$ from evaluation form to its coefficient form. - -It turns out that there is a way of efficiently computing $[A(\tau)]_1$ directly from $A(x)$’s evaluation form. We can achieve this by utilizing [Lagrange basis polynomials](https://en.wikipedia.org/wiki/Lagrange_polynomial): - -- For a polynomial $A(x)$ evaluated over the evaluation domain $\{ x_0, x_1, \ldots, x_{n-1} \}$ - - Define $n$ "Lagrange basis polynomials": - - For $0 \leq i < n$ - - $\ell_{i}(x):= \prod_{j \neq i} \frac{x-x_j}{x_i - x_j}$ - - We can then write $A(x) = \sum_{i=0}^{n-1} A(x_i) \cdot \ell_i(x)$ - - In particular, $A(\tau) = \sum_{i=0}^{n-1} A(x_i) \cdot \ell_i(\tau)$ - - Therefore, we can write - - $[A(\tau)]_1 = [\sum_{i=0}^{n-1} A(x_i) \cdot \ell_i(\tau)]_1 = \sum_{i=0}^{n-1} A(x_i) \cdot [\ell_i(\tau)]_1$ - -In our case, the evaluation domain is $\{ x_0, x_1, \ldots, x_{n-1} \} = \{ \omega^0, \omega^1, \ldots, \omega^{n-1} \}$, and so each basis polynomial can be precomputed as $\ell_i(x) = \prod_{j \neq i} \frac{x - \omega^j}{\omega^i - \omega^j}$. Further, since the same secret $\tau$ is used every time, each $[\ell_i(\tau)]_1$ can be precomputed: - -$$ -[\ell_i(\tau)]_1 = \left[ \sum_{j=0}^{n-1} \ell_i^{(j)}\cdot \tau^j \right]_1= \sum_{j=0}^{n-1} \ell_i^{(j)} \cdot [\tau^j]_1 -$$ - -With each $[\ell_i(\tau)]_1$ precomputed, committing to column $A$ requires only the following computation at the time of proof generation: - -$$ -[A(\tau)]_1 = \sum_{i=0}^{n-1} A(\omega^i) \cdot [\ell_i(\tau)]_1 -$$ - -Note that each $A(\omega^i)$ is an element of $\mathbb{F}_q$ (it’s just the $i^{th}$ element of column $A$ in the trace table). Each $[\ell_i(\tau)]_1$ is an element of the elliptic curve group $\mathbb{G}_1$. Therefore, this computation can be seen as the dot product between a vector of scalars and a vector of group elements. - -### Multi-scalar multiplication (MSM) - -In general, the problem of computing the dot product between a vector of scalars and a vector of group elements is known as "**multi-scalar multiplication**," or "**MSM**" for short. - -Despite sounding simple, MSMs are not trivial to compute, as they involve arithmetic over group elements. This group arithmetic is generally even more expensive than the large finite field arithmetic we encountered in phase 1. In our case, we are working with an elliptic curve group, in which a single addition of two elements requires many finite field arithmetic operations. - -For a more complete presentation of MSM and some ideas of its implementation, see this [great post](https://www.entropy1729.com/multiscalar-multiplication/) by Entropy1729. - -### Phase 2 cost summary - -- Commit to each column (real and auxiliary) of the trace table - - For each column with length $n$, its KZG commitment can be computed via a size $n$ MSM - -## Phase 3: Proving the trace table’s correctness - -At this point, we have filled out the entire trace table, and have committed to each of its columns (including the auxiliary columns). - -All that’s left to do now is show that the original trace table is valid. - -What does it mean for the original trace table to be valid? It means that particular constraints are satisfied. In our working example, we have the following constraints: - -- The Square-Fibonacci constraint: - - Each selected row $i$ must satisfy $c_i = a_i^2 + b_i^2 \mod q$ -- Wiring constraints: - - For consecutive rows with values $[a_i, b_i, c_i]$ and $[a_{i+1}, b_{i+1}, c_{i+1}]$, we require $a_{i+1} = b_i$ and $b_{i+1} = c_i$ -- Public input constraints: - - The first row must start with the first two Square-Fibonacci numbers, which are written in the first two rows of the public input column: $a_0 = p_0, b_0 = p_1$ - - The cell corresponding to the $n^{th}$ Square-Fibonacci number must match the claimed result value, which is written in the third row of the public input column: $c_{n-2} = p_2$ - -By viewing each column as a polynomial in evaluation form (i.e. seeing $a_i$ as $A(\omega^i)$), each of the above constraints can be represented by one or more relations between the column polynomials. - -For example, the Square-Fibonacci constraint can be expressed as the following relation between the column polynomials $A, B, C, S$: - -$$ -S(x) \cdot (A(x)^2 + B(x)^2 - C(x)) = 0, \text{ for all } x \in \{\omega^0, \omega^1, \ldots, \omega^{n-1} \} -$$ - -For shorthand, we’ll label the left-hand side $\phi_0(x) := S(x) \cdot (A(x)^2 + B(x)^2 - C(x))$. - -All our constraints can be expressed in the following form: - -$$ -\phi_i(x) = 0, \text{ for all } x \in \{ \omega^0, \omega^1, \ldots, \omega^{n-1}\} -$$ - -### Combining constraints - -In general, when we have $m$ constraint polynomials $\phi_0(x), \phi_1(x), \ldots, \phi_{m-1}(x)$ that all must evaluate to 0 over the evaluation domain, we can batch them all together to get a single constraint polynomial $\phi(x)$ that must evaluate to 0 over the evaluation domain. We do this by sampling a random field element $\gamma \in \mathbb{F}_q$, and then taking a random linear combination of the individual constraints: - -$$ -\phi(x) := \gamma^0 \cdot \phi_0(x) + \gamma^1 \cdot \phi_1(x) + \ldots + \gamma^{m-1} \cdot \phi_{m-1}(x) -$$ - -If all of the individual constraint polynomials evaluate to 0 over the evaluation domain, then so does the meta-constraint polynomial $\phi(x)$. If any one of the individual constraint polynomials _does not_ evaluate to 0 at some point in the evaluation domain, then it is almost certain that $\phi(x)$ will not evaluate to 0 at that point either.[^4] Thus, it is sufficient to show that $\phi(x)$ evaluates to 0 over the entire evaluation domain. - -$$ -\text{constraints satisfied at every row} \iff \hspace{-2mm}{_p} \hspace{2mm} \phi(\omega^i)=0 \text{ for all } 0 \leq i < n -$$ - -How can we prove the statement on the right-hand side? Well we could reveal and prove the evaluations of each column polynomial at every one of the $n$ domain points. This would allow us to compute $\phi(x)$ at each point of interest. But this would lead to a large proof size - we would need to provide $n$ evaluation proofs per column polynomial. - -It turns out that we can prove such a constraint using _just one_ evaluation proof per column polynomial. - -### The quotient polynomial - -We need to show that the meta-constraint $\phi(x)$ holds for each row of the trace table. This statement _is not_ easy to prove directly. But it turns out that we can derive[^5] an equivalent[^6] statement which _is_ easy to prove: - -$$ -\begin{aligned} -\text{constraints satisfied at every row} &\iff \hspace{-2mm}{_p} \hspace{2mm} - \phi(\omega^i) = 0 \text{ for all } 0 \leq i < n\\ -& \iff (x- \omega^i) | \phi(x) \text{ for all } 0 \leq i < n\\ -& \iff \prod_{i=0}^{n-1} (x - \omega^i) | \phi(x)\\ & \iff (x^n -1) | \phi(x)\\ -& \iff \exists Q(x) \text{ s.t. } \phi(x) = Q(x) \cdot (x^n - 1) \end{aligned} -$$ - -So, if we want to prove that all constraints hold across every row, then it is equivalent to prove that there exists a polynomial $Q(x)$ which satisfies the above property. This polynomial is generally referred to as the "quotient polynomial." - -### Computing and committing to the quotient polynomial - -The quotient polynomial can be computed as - -$$ -Q(x) := \frac{\phi(x)}{x^n - 1} = \frac{\gamma^0 \phi_0(x) + \gamma^1 \phi_1(x) + \ldots + \gamma^{m-1}\phi_{m-1}(x)}{x^n -1} -$$ - -While the quotient polynomial is straightforward to express theoretically, computing it in practice actually tends to be one of the most convoluted and computationally expensive steps. - -Let’s consider the degree of $Q(x)$. Its degree is equal to the constraint polynomial with the highest degree, minus $n$. In our case, the Square-Fibonacci constraint $\phi_0(x) = S(x) \cdot (A(x)^2 + B(x)^2 - C(x))$ has the highest degree of $3n-3$, and so the corresponding quotient polynomial $Q(x)$ will have degree $2n-3$. In order to fully define such a polynomial, we need at least $2n-2$ evaluation points. - -So, let’s make it a nice round number and use $2n$ evaluation points. Our previous evaluation domain will not work - the order of $\omega$ is $n$, and so the set of $\{ \omega^i | i \in \mathbb{N} \}$ only has size $n$. We therefore need to pick some other element $\beta \in \mathbb{F}_q$ with order $2n$. We can then evaluate $Q(x)$ over the evaluation domain of $\{ \beta^0, \beta^1, \ldots, \beta^{2n-1}\}$ to obtain the $2n$ evaluations that we need. - -Here are the steps required to most efficiently do this: - -- For each column polynomial, convert from evaluation form to coefficient form - - Each transform can be achieved in $O(n \log n)$ using an iFFT -- For each column polynomial in coefficient form, generate $2n$ evaluations - - Each transform can be achieved in $O(2n \log 2n) = O(n \log n)$ using an FFT -- With $2n$ evaluations of each column polynomial, we can now compute the $2n$ evaluations of $Q(x)$ - - This simply requires field arithmetic according to the quotient polynomial’s formula - -With the $Q(x)$ in its evaluation form, we could now compute its commitment in the same way we committed to our column polynomials: - -$$ -[Q(\tau)]_1 = \sum_{i=0}^{2n-1} Q(\beta^i) \cdot [\ell_i’(\tau)]_1 -$$ - -Note, however, that since $Q(x)$ is of a larger degree than the column polynomials, we would need to use a distinct Lagrange basis, larger than the one previously used. While precomputing this larger Lagrange basis and using it to compute the commitment is possible, it requires a larger KZG trusted setup - the size of the trusted setup must exceed the quotient polynomial’s degree. - -In practice, we use a trick so that we only have to commit to polynomials with degree $< n$. We first transform $Q(x)$ to coefficient form using a size $2n$ iFFT. Then, we split $Q(x)$ into two smaller polynomials $Q_{lo}(x), Q_{hi}(x)$ such that $Q(x) = Q_{lo}(x) + x^n \cdot Q_{hi}(x)$. Each smaller polynomial has degree $ - - - -> In the medium to long term, ZK rollups will win out in all use cases as ZK-SNARK technology improves. --- Vitalik Buterin - - - -The basic idea of zk-Rollup is to aggregate a huge number of transactions into one Rollup block and generate a succinct proof for the block off-chain. Then the smart contract on Layer 1 only needs to verify the proof and apply the updated state directly without re-executing those transactions. This can help save gas fee for an order of magnitude since proof verification is much cheaper than re-executing computations. Another saving comes from data compression (i.e., only keep minimum on-chain data for verification) - -Although zk-Rollup is secure and efficient, its applications are still limited to payments and swaps. It’s hard to build general-purpose DApps due to the following two reasons. - -- First, if you want to develop DApps in a zk-Rollup, you need to write all your smart contract logic using a special language (i.e. [R1CS](https://tlu.tarilabs.com/cryptography/r1cs-bulletproofs/mainreport.html#rank-1-constraint-systems)). Not only is the syntax of required language complicated, but doing so also demands extremely strong expertise in zero knowledge proof. -- Second, current zk-Rollup doesn’t support composability[^1]. It means different zk-Rollup applications can’t interact with each other within Layer 2. Such quality significantly undermines the composability of DeFi applications. - -In a nutshell, zk-Rollup is developer-unfriendly and has limited functionality for now. -That’s the biggest problem we want to tackle. We want to provide the best developer experience and support composability within Layer 2 by supporting native EVM verification directly, so that existing Ethereum applications can simply migrate over onto the zk-Rollup as is. - - - -## Build general DApps in zk-Rollup - -There are two ways to build general DApps in zk-Rollup. - -- One is building application-specific circuit ("ASIC") for different DApps. -- The other is building a universal "EVM" circuit for smart contract execution. - - > ["circuit"](https://tlu.tarilabs.com/cryptography/r1cs-bulletproofs/mainreport.html#arithmetic-circuits) refer to the program representation used in zero knowledge proof. For example, if you want to prove hash(x) = y, you need to re-write the hash function using the circuit form. The circuit form only supports very limited expressions (i.e., R1CS only support addition and multiplication). So, it’s very hard to write program using the circuit language --- you have to build all your program logic (including if else, loop and so on) using add and mul. - -The first approach requires developer to design specialized "ASIC" circuits for different DApps. It is the most traditional way to use zero knowledge proof. Each DApp will have a smaller overhead through customized circuit design. However, it brings the problem of composability since the circuit is "static" and terrible developer experience since it needs strong expertise in circuit design[^2]. - - - -The second approach doesn’t require any special design or expertise for developer. The high-level idea of such machine-based proof is that any program will eventually run on CPU, so we only need to build a universal CPU circuit to verify the low-level CPU step. Then we can use this CPU circuit to verify any program execution. In our scenario, program is smart contract and CPU is EVM. However, this approach is not commonly adopted in the past years due to its large overhead. For example, even if you only want to prove the result of `add` is correct in one step, you still need to afford the overhead of an entire EVM circuit. If you have thousands of steps in your execution trace, it will be 1000x EVM circuit overhead on the prover side.[^3] - -Recently, there has been a lot of research going on to optimize zk proofs following those two approaches, including (i) proposing new zk-friendly primitives i.e. [Poseidon hash](https://www.poseidon-hash.info/) can achieve 100x efficiency than SHA256 in circuit, (ii) ongoing work on improving efficiency of general-purpose verifiable VMs, as in [TinyRAM](https://eprint.iacr.org/2013/507), and (iii) a growing number of general-purpose optimization tricks like Plookup, and even more generally faster cryptographic libraries. - - - -In our [previous article](https://scroll-official.medium.com/scroll-a-layer-2-ecosystem-based-on-zk-rollup-186ff0d764c), We propose to design "ASIC" circuit for each DApp and let them communicate through cryptographic commitments. However, based on the feedback from the community, we changed our priority and will focus on building a general EVM circuit (so called "zkEVM") first following the second approach. zkEVM will allow exactly the same developer experience as developing on Layer 1. Instead of leaving design complexity to the developer, we will take over it and solve the efficiency problem through customized EVM circuit design. - -## Design challenges of zkEVM - -zkEVM is hard to build. Even though the intuition is clear for years, no one has built a native EVM circuit successfully. Different from TinyRAM, it’s even more challenging to design and implement zkEVM due to the following reasons: - -- **First, EVM has limited support of elliptic curves.** For now, EVM only supports BN254 pairing. It’s hard to do proof recursion since [cyclic elliptic curve](https://github.com/daira/halographs/blob/master/halographs.pdf) is not directly supported. It’s also hard to use other specialized protocols under this setting. The verification algorithm has to be EVM friendly. -- **Second, EVM word size is 256bit.** EVM operates over 256-bit integers (much like most regular VMs operate over 32-64 bit integers), whereas zk proofs most "naturally" work over prime fields. Doing "mismatched field arithmetic" inside a circuit requires range proofs, which will add ~100 constraints per EVM step. This will blow up EVM circuit size by two orders of magnitudes. -- **Third, EVM has many special opcodes.** EVM is different from traditional VM, it has many special [opcodes](https://www.ethervm.io/) like `CALL` and it also has error types related to the execution context and gas. This will bring new challenges to circuit design. -- **Fourth, EVM is a stack-based virtual machine.** The [SyncVM](https://zksync.io/dev/contracts/#sync-vm) (zksync) and [Cario](https://eprint.iacr.org/2021/1063) (starkware) architecture defines its own IR/AIR in the register-based model. They built a specialized compiler to compile smart contract code into a new zk-friendly IR. Their approach is language compatible instead of native EVM-compatible. It’s harder to prove for stack-based model and support native tool chain directly. -- **Fifth, Ethereum storage layout carries a huge overhead.** The Ethereum storage layout highly relies on [Keccak](https://keccak.team/files/Keccak-reference-3.0.pdf) and a huge [MPT](https://eth.wiki/en/fundamentals/patricia-tree)[^4], both of them are not zk-friendly and have a huge proving overhead. For example, Keccak hash is 1000x larger than Poseidon hash in circuit. However, if you replace Keccak with another hash, it will cause some compatibility problems for the existing Ethereum infrastructure. -- **Sixth, machine-based proof has a gigantic overhead.** Even if you can handle all the aforementioned problems properly, you still need to find an efficient way to compose them together to get a complete EVM circuit. As I mentioned in previous section, even simple opcodes like `add` might result in the overhead of the entire EVM circuit. - -## Why possible now? - -Thanks for the great progress made by researchers in this area, more and more efficiency problems are solved in the last two years, the proving cost for zkEVM is eventually feasible! The biggest technology improvement comes from the following aspects: - -- **The usage of polynomial commitment.** In the past few years, most succinct zero knowledge proof protocols stick to R1CS with PCP query encoded in an application-specific trusted setup. The circuit size usually blows up and you can’t do many customized optimizations since the degree of each constraint needs to be 2 ([bilinear pairing](https://vitalik.ca/general/2017/01/14/exploring_ecp.html) only allows one multiplication in the exponent). With [polynomial commitment schemes](https://www.youtube.com/watch?v=BfV7HBHXfC0), you can lift your constraints to any degree with a universal setup or even transparent setup. This allows great flexibility in the choice of backend. -- **The appearance of lookup table arguments and customized gadgets.** Another strong optimization comes from the usage of lookup tables. The optimization is firstly proposed in [Arya](https://eprint.iacr.org/2018/380) and then gets optimized in [Plookup](https://eprint.iacr.org/2020/315). This can save A LOT for zk-unfriendly primitives (i.e., bitwise operations like AND, XOR, etc.) . [Customized gadgets](https://kobi.one/2021/05/20/plonk-custom-gates.html) allow you to do high degree constraints with efficiency. [TurboPlonk](https://docs.zkproof.org/pages/standards/accepted-workshop3/proposal-turbo_plonk.pdf) and [UltraPlonk](https://zcash.github.io/halo2/concepts/arithmetization.html) defines elegant program syntax to make it easier to use lookup tables and define customized gadgets. This can be extremely helpful for reducing the overhead of EVM circuit. -- **Recursive proof is more and more feasible.** Recursive proof has a huge overhead in the past since it relies on special pairing-friendly cyclic elliptic curves (i.e. [MNT curve-based construction](https://eprint.iacr.org/2014/595)). This introduces a large computation overhead. However, more techniques are making this possible without sacrificing the efficiency. For example, [Halo](https://eprint.iacr.org/2019/1021) can avoid the need of pairing-friendly curve and amortize the cost of recursion using special inner product argument. Aztec shows that you can do proof aggregation for existing protocols directly (lookup tables can reduce the overhead of [non-native field operation](https://hackmd.io/@arielg/B13JoihA8) thus can make the verification circuit smaller). It can highly improve the scalability of supported circuit size. -- **Hardware acceleration is making proving more efficient.** To the best of our knowledge, we have made the fastest GPU and ASIC/FPGA accelerator for the prover. [Our paper](https://people.iiis.tsinghua.edu.cn/~gaomy/pubs/pipezk.isca21.pdf) describing ASIC prover has already been accepted by the largest computer conference (ISCA) this year. The GPU prover is around 5x-10x faster than [Filecoin’s implementation](https://github.com/filecoin-project/bellperson). This can greatly improve the prover’s computation efficiency. - -## Ok, so how does it work and how to build it? - -Besides the strong intuition and technology improvement, we still need to have a more clear idea of what we need to prove and figure out a more specific architecture. We will introduce more technical details and comparisons in the follow up articles. Here, we describe the overall workflow and some key ideas. - -### Workflow for Developers and Users - -For developers, they can implement smart contracts using any EVM-compatible language and deploy the compiled bytecode on Scroll. Then, users can send transactions to interact with those deployed smart contracts. The experience for both users and developers will be the exactly the same as Layer 1. However, the gas fee is significantly reduced and transactions are pre-confirmed instantly on Scroll (withdraw only takes a few minutes to finalize). - -### Workflow for zkEVM - -Even if the workflow outside remains the same, the underlying processing procedure for Layer 1 and Layer 2 are entirely different: - -- Layer 1 relies on the re-execution of smart contracts. -- Layer 2 relies on the validity proof of zkEVM circuit. - -Let’s give a more detailed explanation of how things are going differently for transactions on Layer 1 and Layer 2. - - - -In Layer 1, the bytecodes of the deployed smart contracts are stored in the Ethereum storage. Transactions will be broadcasted in a P2P network. For each transaction, each full node needs to load the corresponding bytecode and execute it on EVM to reach the same state (transaction will be used as input data). - -In Layer 2, the bytecode is also stored in the storage and users will behave in the same way. Transactions will be sent off-chain to a centralized zkEVM node. Then, instead of just executing the bytecode, zkEVM will generate a succinct proof to prove the states are updated correctly after applying the transactions. Finally, Layer 1 contract will verify the proof and update the states without re-executing the transactions. - -Let’s take a deeper look at the execution process and see what zkEVM needs to prove at the end of the day. In native execution, EVM will load the bytecode and execute the opcodes in the bytecode one by one from beginning. Each opcode can be thought as doing the following three sub-steps : (i) Read elements from stack, memory or storage (ii) Perform some computation on those elements (iii) Write back results to stack, memory or storage.[^5] For example, `add` opcode needs to read two elements from stack, add them up and write the result back to stack. - -So, it’s clear that the proof of zkEVM needs to contain the following aspects corresponding to the execution process - -- The bytecode is correctly loaded from persistent storage - (You are running the correct opcode loaded from a given address) -- The opcodes in the bytecode are executed one by one consistently - (The bytecode is executed in order without missing or skipping any opcode) -- Each opcode is executed correctly - (Three sub-steps in each opcode are carried out correctly, R/W + computation) - -### zkEVM Design highlight - -When designing the architecture for zkEVM, we need to handle/address the aforementioned three aspects one by one. - -1. We need to design a circuit for some cryptographic accumulator. - - This part acts like a "verifiable storage", we need some technique to prove we are reading correctly. A cryptographic accumulator can be used to achieve this efficiently.[^6] - Let’s take Merkle Tree as an example. The deployed bytecode will be stored as a leaf in the Merkle Tree. Then, verifier can verify the bytecode is loaded correctly from a given address using a succinct proof (i.e., verify Merkle Path in circuit). For Ethereum storage, we need the circuit to be compatible with Merkle Patricia Trie and Keccak hash function. - -2. We need to design a circuit to link the bytecode with the real execution trace. - - One problem to move bytecode into a static circuit is conditional opcodes like `jump` (corresponding to loop, if else statement in smart contracts). It can jump anywhere. The destination is not determined before one has run the bytecode with specific input. That’s the reason why we need to verify the real execution trace. The execution trace can be thought as "unrolled bytecode", it will include the sequence of opcodes in the real execution order (i.e., if you jump to another position, the trace will contain the destined opcode and position). - - Prover will provide the execution trace directly as witness to the circuit. We need to prove that the provided execution trace is indeed the one "unrolled" from the bytecode with specific input. The idea is forcing the value of program counter to be consistent. To deal with the undetermined destination, the [idea](https://hackmd.io/5vKFGDcITKuNPHSRT8H9jA) is letting prover provide everything. Then you can check the consistency efficiently using a lookup argument (i.e., prove the opcodes with proper global counter is included in the "bus"). - -3. We need to design circuits for each opcode (Prove read, write and computations in each opcode are correct). - - This is the most important part --- Prove each opcode in the execution trace is correct and consistent. It will bring a huge overhead if you put all the things together directly. The important optimization idea here is that - - - We can separate R/W and computation into two proofs. One will fetch the elements needed for all the opcodes into a "bus". The other will prove the computation performed on the elements from the "bus" is carried out correctly. This can greatly reduce the overhead of each part (i.e., you don’t need to consider the entire EVM storage in the computation proof). In a [more detailed specification](https://github.com/appliedzkp/zkevm-specs), the first one is called "state proof" and the second one is called "EVM proof". Another observation is that "bus mapping" can be efficiently handled by the lookup argument. - - We can design higher degree customized constraint for each opcode (i.e., EVM word can be solved efficiently by chopping off it into several chunks). We can choose whether to "open" a constraint through a selector polynomial according to our need. This can avoid the overhead of the entire EVM circuit in each step. - -This architecture is firstly specified by Ethereum Foundation. It’s still at an early stage and under active development. We are collaborating with them closely on this to find the best way to implement the EVM circuit. So far, the most important traits are defined and some opcodes have already been implemented [here](https://github.com/appliedzkp/zkevm-circuits) (using UltraPlonk syntax in the Halo2 repo). More details will be introduced in the follow up articles. We refer interested readers to read this [document](https://hackmd.io/Hy_nqH4yTOmjjS9nbOArgw?view). The development process will be transparent. This will be a community-effort and fully open-sourced design. Hope more people can join and contribute to this. - -### What else it can bring? - -zkEVM is much more than just Layer 2 scaling. It can be thought as a direct way to scale Ethereum Layer 1 via Layer-1 validity proof. That means you can scale existing Layer 1 without any special Layer 2. - -For example, you can use zkEVM as a full node. The proof can be used for proving transitions between existing states directly --- No need to port anything to Layer 2, you can prove for all Layer 1 transactions directly! More broadly, you can use zkEVM to generate a succinct proof for the whole Ethereum like Mina. The only thing you need to add is proof recursion (i.e. embed the verification circuit of a block to the zkEVM)[^7]. - -## Conclusion - -zkEVM can provide the same experience for developers and users. It’s order of magnitudes cheaper without sacrificing security. There has been proposed architecture to build it in a modular way. It leverages recent breakthrough in zero knowledge proof to reduce the overhead (including customized constraint, lookup argument, proof recursion and hardware acceleration). We look forward to seeing more people joining the zkEVM community effort and brainstorming with us! - -## A little about us - -_Scroll Tech is a newly built tech-driven company. We aim to build an EVM-compatible zk-Rollup with a strong proving network ([See an overview here](/blog/architecture)). The whole team is now focusing on the development. We are actively hiring more passionate developers, reach out to us at [hire@scroll.io](mailto:hire@scroll.io). If you have any question about the technical content, reach out to me at [ye@scroll.io](mailto:ye@scroll.io). [DM](https://twitter.com/yezhang1998) is also open._ - -[^1]: Starkware claims to achieve composability a few days ago ([reference here](https://medium.com/starkware/starknet-alpha-2-4aa116f0ecfc)) -[^2]: Circuit is fixed and static. For example, you can’t use variable upper bound loop when implementing a program as a circuit. The upper bound has to be fixed to its maximum value. It can’t deal with dynamic logic. -[^3]: To make it more clear, We elaborate about the cost of EVM circuit here. As we described earlier, circuit is fixed and static. So, EVM circuit needs to contain all possible logic (10000x larger than pure `add`). That means even if you only want to prove for `add`, you still need to afford the overhead of all possible logics in the EVM circuit. It will 10000x amplify the cost. In the execution trace, you have a sequence of opcodes to prove and each opcode will have such a large overhead. -[^4]: EVM itself is not tightly bound to the Merkle Patricia tree. MPT is just how Ethereum states are stored for now. A different one can easily be plugged in (i.e., the current proposal to replace MPT with [Verkle trees](https://vitalik.ca/general/2021/06/18/verkle.html)). -[^5]: This is a highly simplified abstraction. Technically, the list of "EVM state" is longer including PC, gas remaining, call stack (all of the above plus address and staticness per call in the stack), a set of logs, and transaction-scoped variables (warm storage slots, refunds, self-destructs). Composability can be supported directly with additional identifier for different call context. -[^6]: We use accumulator for storage since the storage is huge. For memory and stack, one can use editable Plookup ("RAM" can be implemented efficiently in this way). -[^7]: It’s non-trivial to add a complete recursive proof to the zkEVM circuit. The best way to do recursion is still using cyclic elliptic curves (i.e., Pasta curve). Need some ["wrapping"](https://hackmd.io/u_2Ygx8XS5Ss1aObgOFjkA) process to make it verifiable on Ethereum Layer 1. - - From b1c930ae578c40e37041b5686cbd01073b80a692 Mon Sep 17 00:00:00 2001 From: yqrashawn Date: Mon, 30 Dec 2024 09:34:08 +0800 Subject: [PATCH 3/3] feat: use assets/blog for blog.data.json --- .gitignore | 5 +++-- scripts/download-blog-posts.data.json.mjs | 17 ++++++++++++++--- src/app/blog/[blogId]/detail.tsx | 2 +- src/app/blog/[blogId]/page.tsx | 2 +- src/app/blog/page.tsx | 3 +-- .../Highlights/HighlightList/index.tsx | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 23dd7f89e..2fd4465ab 100644 --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,6 @@ next-env.d.ts .turbo -/src/app/blog/data.json -/src/research-blog.data.json +/src/app/blog/[blogId]/data.json +/src/assets/blog/main.data.json +/src/assets/blog/research.data.json diff --git a/scripts/download-blog-posts.data.json.mjs b/scripts/download-blog-posts.data.json.mjs index ca62ec883..069ecc62d 100644 --- a/scripts/download-blog-posts.data.json.mjs +++ b/scripts/download-blog-posts.data.json.mjs @@ -1,5 +1,16 @@ -import fs from "fs" +import fs from "node:fs" import fetch from "node-fetch" +import path from "node:path" + +import { fileURLToPath } from "url" + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +const blogAssetsDir = path.join(__dirname, "..", "src", "assets", "blog") + +if (!fs.existsSync(blogAssetsDir)) { + fs.mkdirSync(blogAssetsDir, { recursive: true }) +} const isMainnet = process.env.NEXT_PUBLIC_SCROLL_ENVIRONMENT === "Mainnet" @@ -11,10 +22,10 @@ async function fetchPosts() { await Promise.all([ fetch(buildPostURL("scroll.io")) .then(res => res.json()) - .then(json => fs.writeFileSync("./src/app/blog/[blogId]/data.json", JSON.stringify(json, null, 2))), + .then(json => fs.writeFileSync("./src/assets/blog/main.data.json", JSON.stringify(json, null, 2))), fetch(buildPostURL("research.scroll.io")) .then(res => res.json()) - .then(json => fs.writeFileSync("./src/research-blog.data.json", JSON.stringify(json, null, 2))), + .then(json => fs.writeFileSync("./src/assets/blog/research.data.json", JSON.stringify(json, null, 2))), ]) } diff --git a/src/app/blog/[blogId]/detail.tsx b/src/app/blog/[blogId]/detail.tsx index 40ffbf4cf..b0c1f39bb 100644 --- a/src/app/blog/[blogId]/detail.tsx +++ b/src/app/blog/[blogId]/detail.tsx @@ -12,6 +12,7 @@ import remarkMath from "remark-math" import { Box, Typography } from "@mui/material" import { styled } from "@mui/system" +import blogSource from "@/assets/blog/main.data.json" import LoadingPage from "@/components/LoadingPage" import { LANGUAGE_MAP } from "@/constants" import useCheckViewport from "@/hooks/useCheckViewport" @@ -20,7 +21,6 @@ import { filterBlogsByLanguage } from "@/utils" import Articles from "./articles" import TOC from "./components/tableOfContents" -import blogSource from "./data.json" const BlogContainer = styled(Box)( ({ theme }) => ` diff --git a/src/app/blog/[blogId]/page.tsx b/src/app/blog/[blogId]/page.tsx index b98fce635..1d37ade29 100644 --- a/src/app/blog/[blogId]/page.tsx +++ b/src/app/blog/[blogId]/page.tsx @@ -1,6 +1,6 @@ +import blogSource from "@/assets/blog/main.data.json" import { genMeta } from "@/utils/route" -import blogSource from "./data.json" import Detail from "./detail" export const generateMetadata = genMeta(({ params }) => { diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 265068b62..1e39ee40b 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -8,6 +8,7 @@ import { Tune as TuneIcon } from "@mui/icons-material" import { Box, Modal, Typography } from "@mui/material" import { styled } from "@mui/system" +import blogSource from "@/assets/blog/main.data.json" import ArticleCard from "@/components/ArticleCard" import SectionWrapper from "@/components/SectionWrapper" import { LANGUAGE_MAP, getBlogCategoryList, getBlogSortList } from "@/constants" @@ -15,8 +16,6 @@ import useCheckViewport from "@/hooks/useCheckViewport" import useUserLanguage from "@/hooks/useUserLanguage" import { filterBlogsByLanguage } from "@/utils" -import blogSource from "./[blogId]/data.json" - const BlogContainer = styled(Box)(({ theme }) => ({ padding: "0 6rem 14rem", [theme.breakpoints.down("md")]: { diff --git a/src/app/ecosystem/Highlights/HighlightList/index.tsx b/src/app/ecosystem/Highlights/HighlightList/index.tsx index 8e54b0f0a..cff6ea435 100644 --- a/src/app/ecosystem/Highlights/HighlightList/index.tsx +++ b/src/app/ecosystem/Highlights/HighlightList/index.tsx @@ -3,7 +3,7 @@ import { Swiper, SwiperSlide } from "swiper/react" import { styled } from "@mui/system" -import Data from "@/app/blog/[blogId]/data.json" +import Data from "@/assets/blog/main.data.json" import useCheckViewport from "@/hooks/useCheckViewport" import BlogCard from "./Card"