Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ src/data/eips.json
.vscode/*
!.vscode/extensions.json
.idea
.zed
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.sw?
2 changes: 1 addition & 1 deletion src/components/PublicNetworkUpgradePage.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react';
import { Link, useLocation } from 'react-router-dom';
import eipsData from '../data/eips.json';
import { eipsData } from '../data/eips';
import { useMetaTags } from '../hooks/useMetaTags';
import { useAnalytics } from '../hooks/useAnalytics';
import { EIP, ClientTeamPerspective } from '../types';
Expand Down
9 changes: 7 additions & 2 deletions src/components/RankPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import {
getLaymanTitle,
getProposalPrefix,
getHeadlinerLayer,
getInclusionStage,
} from "../utils/eip";
import { useAnalytics } from "../hooks/useAnalytics";
import eipsData from "../data/eips.json";
import { eipsData } from "../data/eips";
import ThemeToggle from "./ui/ThemeToggle";

interface TierItem {
Expand Down Expand Up @@ -165,7 +166,11 @@ const RankPage: React.FC = () => {
// Initialize with Glamsterdam headliner EIPs
useEffect(() => {
const glamsterdamHeadliners = eipsData
.filter((eip) => eip.forkRelationships.some((fork) => fork.forkName.toLowerCase() === "glamsterdam" && (fork.status === "Proposed" || fork.status === "Considered")))
.filter((eip) =>
["Proposed for Inclusion", "Considered for Inclusion"].includes(
getInclusionStage(eip, "glamsterdam")
)
)
.filter((eip) => !isHeadliner(eip, "glamsterdam"))
.map((eip) => ({
id: `eip-${eip.id}`,
Expand Down
4 changes: 4 additions & 0 deletions src/data/eips.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { EIP } from '../types/eip';
import eipsDataRaw from './eips.json';

export const eipsData = eipsDataRaw as EIP[];
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the reason for the type assertion is because typescript won't infer the union types inside the new statusHistory field.

i believe it's safer to keep the union and do a type assertion than use a string and leave it to inference. we can always strengthen safety in the future with a compile time check (eg. in compile-eips.mjs).

6 changes: 5 additions & 1 deletion src/data/eips/2537.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Pectra",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
],
"laymanDescription": "A new precompile for the BLS12-381 curve, a native function built in clients that smart contracts can use to verify signatures and perform certain operation more cheaply and securely.",
Expand Down
11 changes: 10 additions & 1 deletion src/data/eips/2780.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,16 @@
"forkRelationships": [
{
"forkName": "Glamsterdam",
"status": "Considered",
"statusHistory": [
{
"status": "Proposed"
},
{
"status": "Considered",
"call": "acde/226",
"date": "2025-12-18"
}
],
"layer": "EL",
"champion": {
"name": "Ben Adams",
Expand Down
11 changes: 10 additions & 1 deletion src/data/eips/2926.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,16 @@
"forkRelationships": [
{
"forkName": "Glamsterdam",
"status": "Declined",
"statusHistory": [
{
"status": "Proposed"
},
{
"status": "Declined",
"call": "acde/226",
"date": "2025-12-18"
}
],
"layer": "EL",
"champion": {
"name": "Guillaume Ballet",
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/2935.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Pectra",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
],
"northStarAlignment": {
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/3540.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This introduces EVM Object Format (EOF), a new standardized container for smart contract bytecode that gets validated once when deployed rather than every time it runs. EOF separates code from data, making contracts more structured and analyzable. It enables future EVM improvements like better jump instructions, multibyte opcodes, and function representations. The format is extensible and versioned, allowing gradual introduction of new features. Only new contracts can use EOF - existing contracts remain unchanged. This is the foundation that makes other EOF-related improvements possible."
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/3670.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This adds strict validation rules for EOF smart contracts when they're deployed. It rejects contracts with invalid bytecode, such as incomplete PUSH instructions or undefined opcodes. It also removes deprecated instructions like CALLCODE and SELFDESTRUCT from EOF contracts. This validation only happens once at deployment time and only affects new EOF contracts - existing legacy contracts remain unchanged. The goal is to make bytecode more predictable and easier to reason about, while ensuring all EVM implementations handle code the same way."
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/4200.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This introduces three new jump instructions (RJUMP, RJUMPI, and RJUMPV) for EOF contracts that use relative addressing instead of absolute addressing. These instructions are more gas-efficient than traditional JUMP/JUMPI instructions, don't require JUMPDEST markers, and make code analysis easier. RJUMP does unconditional jumps, RJUMPI does conditional jumps, and RJUMPV provides jump tables for switch-case scenarios. The relative addressing means code can be moved around without breaking, and the static nature allows for better optimization and validation at deployment time."
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/4750.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This introduces proper function support to EOF contracts by allowing multiple code sections, each representing a separate function. It adds two new instructions: CALLF to call functions and RETF to return from them. Functions have defined input/output parameters and their own isolated stack, improving code organization and analysis. Dynamic jumps (JUMP/JUMPI) are completely removed in favor of static function calls, making contracts more predictable and easier to optimize. A return stack tracks function call history, and JUMPDEST becomes a simple NOP instruction since jump analysis is no longer needed."
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/4844.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Cancun-Deneb",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
]
}
12 changes: 10 additions & 2 deletions src/data/eips/5450.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This adds comprehensive stack validation to EOF contracts at deployment time, ensuring that stack underflow and overflow cannot happen during execution. By analyzing all possible code paths and tracking stack heights, it eliminates the need for most runtime stack checks, making execution faster and more predictable. Only CALLF and JUMPF instructions need runtime stack overflow checks. The validation also prevents deployment of unreachable code and ensures proper function termination. This creates guarantees that enable better compiler optimizations and ahead-of-time compilation while maintaining linear validation complexity."
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/5920.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Glamsterdam",
"status": "Proposed",
"statusHistory": [
{
"status": "Proposed"
}
],
"layer": "EL",
"champion": {
"name": "Charles Cooper",
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/6110.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Pectra",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
],
"laymanDescription": "New way how validator deposits are processed between CL and EL, more simple and native to merged Ethereum enabling better UX and features.",
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/6206.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This introduces the JUMPF instruction for EOF contracts, enabling tail call optimization by jumping to code sections without adding return stack frames. It also introduces non-returning functions - sections that never return control to their caller. This is particularly efficient for error handling helpers that end with REVERT, allowing compilers to generate more optimal code with reduced gas costs and smaller bytecode size. Functions can jump to other functions with fewer outputs, and non-returning functions don't need to clean up extra stack items before terminating."
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/6404.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Glamsterdam",
"status": "Declined",
"statusHistory": [
{
"status": "Declined"
}
],
"layer": "EL",
"champion": {
"name": "Etan Kissling",
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/6466.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Glamsterdam",
"status": "Declined",
"statusHistory": [
{
"status": "Declined"
}
],
"layer": "EL",
"champion": {
"name": "Etan Kissling",
Expand Down
12 changes: 10 additions & 2 deletions src/data/eips/663.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
},
{
"forkName": "Pectra",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This adds three new EVM instructions (DUPN, SWAPN, and EXCHANGE) that allow smart contracts to access and manipulate stack items beyond the current 16-item limit, reaching up to 256 items deep. Currently, the EVM stack can hold 1024 items but only the top 16 are easily accessible. These new instructions help compilers write more efficient code for complex functions with many variables by providing better stack management capabilities. The feature only works with the new EOF bytecode format, not legacy contracts."
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/6873.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Glamsterdam",
"status": "Withdrawn",
"statusHistory": [
{
"status": "Withdrawn"
}
],
"layer": "EL",
"champion": {
"name": "Guillaume Ballet",
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/7002.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Pectra",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
],
"laymanDescription": "A new system contract that lets the withdrawal credential owner trigger a validator exit onchain without the need for BLS validator key on CL.",
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/7069.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Fusaka",
"status": "Declined"
"statusHistory": [
{
"status": "Declined"
}
]
}
],
"laymanDescription": "This introduces three new call instructions (EXTCALL, EXTDELEGATECALL, EXTSTATICCALL) for EOF contracts that remove gas observability and simplify call semantics. Unlike legacy CALL instructions, these don't allow specifying gas limits - they use the 63/64th rule automatically. They return extensible status codes (0=success, 1=revert, 2=failure) instead of boolean values, remove output buffer complexity in favor of RETURNDATACOPY, and add RETURNDATALOAD for efficient return data access. This makes contracts more resilient to future gas repricing and eliminates many gas-related attack vectors while simplifying the calling mechanism."
Expand Down
6 changes: 5 additions & 1 deletion src/data/eips/7251.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
"forkRelationships": [
{
"forkName": "Pectra",
"status": "Included"
"statusHistory": [
{
"status": "Included"
}
]
}
],
"laymanDescription": "Introduces new validator maximum effective balance of 2048 ETH, instead of exactly 32 ETH, allowing compounding into larger individual validators that reward on each extra ETH above 32.",
Expand Down
Loading