Ethereum 로드맵과 Glamsterdam 읽기
도입
Ethereum roadmap은 제품 스펙 문서가 아니다. 연구, EIP, 클라이언트 구현, testnet, mainnet activation을 거치며 바뀐다. 따라서 학습자가 해야 할 일은 "다음 업그레이드에 무엇이 들어간다"를 외우는 것이 아니라, 어떤 정보가 확정이고 어떤 정보가 아직 draft인지 구분해 제품 가정으로 번역하는 것이다.
2026년 5월 14일 확인 기준 ethereum.org roadmap은 Glamsterdam을 H1 2026의 in-development upgrade로 표시한다. 같은 페이지는 주요 항목으로 enshrined proposer-builder separation(ePBS)과 block-level access lists를 소개한다. 관련 EIP 원문 중 일부는 여전히 draft 상태이므로, 이 강의에서는 "확정 기능"이 아니라 "제품 영향 후보와 재검토 절차"로 다룬다.
학습 목표
- roadmap, EIP, client implementation, mainnet activation을 서로 다른 확실성 단계로 구분한다.
- Glamsterdam 관련 항목을 checkout, indexer, gas estimation, treasury operation 영향으로 번역한다.
- draft EIP를 production dependency로 삼지 않는 기준을 만든다.
- source register에 접근일, 상태, 다음 확인일, 제품 가정을 남긴다.
개념 설명
Adopt
Trial
Assess
Hold
1. 로드맵 정보는 확실성 단계로 읽는다
| 단계 | 의미 | 제품 문서에 쓰는 방식 |
|---|---|---|
| Roadmap topic | ethereum.org나 research discussion에서 방향으로 제시됨 | 기회/위험 후보로만 기록 |
| Draft EIP | EIP 번호와 제안서가 있지만 변경 가능 | dependency 금지, watchlist로 관리 |
| Included candidate | fork scope에 포함 후보로 논의 | testnet 준비 항목으로 분리 |
| Client/testnet support | client release와 testnet에서 검증 | staging 실험과 monitoring 설계 |
| Mainnet activated | fork가 mainnet에 적용 | production policy와 documentation 업데이트 |
이 구분이 없으면 로드맵 자료가 제품 계획을 오염시킨다. 예를 들어 "state gas repricing이 올 수 있다"는 storage-heavy contract를 점검하라는 신호이지, 아직 특정 gas 숫자로 pricing table을 고정하라는 뜻이 아니다.
2. Glamsterdam에서 우선 읽을 항목
| 항목 | 현재 읽는 방식 | checkout/infra 영향 |
|---|---|---|
| ePBS / EIP-7732 | draft EIP, proposer-builder separation을 protocol 수준으로 옮기는 방향 | MEV, block building, relay trust, inclusion monitoring 가정 재검토 |
| Block-Level Access Lists / EIP-7928 | draft EIP, block 단위 state access map을 제안 | parallel validation, sync, state access visibility, client performance 영향 후보 |
| ETH transfer/burn logs / EIP-7708 | draft EIP, ETH 이동에 ERC-20 유사 log를 제안 | native ETH accounting/indexer 단순화 가능성, stablecoin event와 구분 필요 |
| State creation gas / EIP-8037 | draft EIP, new state creation cost 조정 제안 | deployment, storage-heavy ledger, account creation 비용 영향 후보 |
| State access gas / EIP-8038 | draft EIP, state access opcode cost 조정 제안 | gas estimate, wallet/RPC estimate, storage read/write 패턴 점검 |
이 표에서 중요한 단어는 "후보"다. draft EIP는 변경될 수 있고, 특정 fork에 최종 포함되지 않을 수 있다. 강의 과제에서는 각 항목의 최신 상태를 다시 확인하고 source register에 적는다.
3. 앱 영향은 세 문장으로 요약한다
로드맵 메모는 길게 쓰면 운영자가 읽지 않는다. 각 항목은 아래 세 문장으로 시작한다.
| 문장 | 예시 |
|---|---|
| What may change | ePBS가 block proposal과 execution payload construction의 trust model을 바꿀 수 있다 |
| Why our product cares | private orderflow, transaction inclusion, MEV-sensitive checkout route monitoring이 영향을 받을 수 있다 |
| What we do now | production assumption은 바꾸지 않고, inclusion delay metric과 relay/provider dependency를 source register에 추가한다 |
이 방식은 불확실성을 숨기지 않는다. "아직 모른다"를 문서에 남기는 것이 좋은 로드맵 관리다.
4. Stablecoin checkout 시스템 영향
checkout 시스템에서 Glamsterdam 후보 항목은 다음 지점을 건드릴 수 있다.
| 영역 | 가능한 영향 | 지금 할 일 |
|---|---|---|
| gas estimate | state access/creation cost가 바뀌면 deployment와 transaction estimate가 흔들릴 수 있다 | storage-heavy path와 gas snapshot을 분리해 둔다 |
| indexing | ETH transfer logs가 도입되면 native ETH accounting이 쉬워질 수 있다 | stablecoin Transfer와 protocol-generated ETH log를 구분하는 schema를 준비한다 |
| inclusion/MEV | ePBS가 proposer/builder trust model을 바꾸면 inclusion monitoring 기준이 달라질 수 있다 | private orderflow와 stuck tx metric을 관찰한다 |
| client performance | block-level access list가 validation/sync와 parallel execution 준비에 영향을 줄 수 있다 | node/RPC provider release note를 추적한다 |
| L2 economics | L1 throughput과 data cost 변화가 L2 fee에 간접 영향 | fee model을 분기별로 재검토한다 |
5. Draft EIP를 다루는 금지 규칙
| 금지 | 이유 |
|---|---|
| draft EIP 수치를 production pricing에 고정 | 값이 바뀌거나 fork inclusion이 빠질 수 있다 |
| draft feature를 SLA 개선 근거로 사용 | mainnet activation 전에는 사용자 약속이 아니다 |
| indexer schema를 draft log에만 의존 | log 형식과 activation boundary가 바뀔 수 있다 |
| storage/gas refactor를 로드맵 기대만으로 대규모 진행 | 실제 병목과 확정 스펙 없이 리팩터링 비용이 커진다 |
허용되는 일은 다르다. gas snapshot을 만들어두기, storage-heavy contract를 식별하기, indexer abstraction을 넓히기, source register에 재검토 일정을 걸기, testnet activation 후 staging 검증을 준비하기는 좋은 대응이다.
코드로 확인하기
위 신뢰 모델을 코드와 운영 규칙으로 확인한다. 메시지 상태, 최종성, 재시도, 관측 지점이 어디서 분리되는지 보는 것이 목적이다.
백엔드EIP / Fork 상태 register — TypeScript
각 EIP를 status 라이프사이클(
Draft → Review → Last Call → Final → Included → Activated → Withdrawn)로 추적. production dependency는Included이상만 허용.
type EipStatus = | "Idea" | "Draft" | "Review" | "Last Call" | "Final" | "Included" // 다음 fork에 포함 결정 | "Activated" // mainnet 활성화 완료 | "Withdrawn" | "Stagnant";type RoadmapItem = { id: string; // "EIP-7732" title: string; status: EipStatus; fork?: "Glamsterdam" | "Pectra" | "Fusaka" | "Future"; expectedActivation?: string; // 추정 — 변경 가능 productImpact: Array<"indexer" | "checkout" | "gas" | "mev" | "l2-fee" | "storage">; sourceUrl: string; lastVerifiedAt: string; reviewCadence: "weekly" | "monthly" | "on-fork-change";};export const ROADMAP: RoadmapItem[] = [ { id: "EIP-7732", title: "Enshrined PBS (ePBS)", status: "Draft", fork: "Glamsterdam", productImpact: ["mev"], sourceUrl: "https://eips.ethereum.org/EIPS/eip-7732", lastVerifiedAt: "2026-05-14", reviewCadence: "on-fork-change" }];const PRODUCTION_DEPENDENCY_ALLOWED: EipStatus[] = ["Included", "Activated"];export function canDependOn(eipId: string) { const e = ROADMAP.find((r) => r.id === eipId); if (!e) throw new Error(`unknown EIP ${eipId}`); return PRODUCTION_DEPENDENCY_ALLOWED.includes(e.status);}운영Fork inclusion 변경 시 자동 ticket — cron
매주 ethereum.org/EIPS 문서를 fetch해 status 변경을 감지. status가 바뀌면 owner에게 알림.
import { ROADMAP, type RoadmapItem } from "./roadmap";export async function syncEipStatuses(fetcher: (eipId: string) => Promise<EipStatus>) { const changes: Array<{ item: RoadmapItem; from: EipStatus; to: EipStatus }> = []; for (const item of ROADMAP) { const current = await fetcher(item.id); if (current !== item.status) { changes.push({ item, from: item.status, to: current }); item.status = current; item.lastVerifiedAt = new Date().toISOString().slice(0, 10); } } for (const c of changes) { await createTicket({ title: `[roadmap-change] ${c.item.id}: ${c.from} → ${c.to}`, assignee: "tech-radar", priority: c.item.productImpact.includes("checkout") ? "high" : "medium", body: `Source: ${c.item.sourceUrl}\n제품 영향: ${c.item.productImpact.join(", ")}\nFork: ${c.item.fork ?? "n/a"}` }); } return changes;}백엔드Draft EIP 의존 가드 — CI에서 차단
코드에서 EIP-7702 / EIP-3074 같은 draft 식별자를 직접 production path에 import 하지 못하게 차단.
// scripts/check-draft-eip-dependency.tsimport { readFileSync, readdirSync } from "node:fs";import { join } from "node:path";const DRAFT_FORBIDDEN = ["EIP-7732", "EIP-7702"]; // 현재 Draft — 변경 시 register와 함께 갱신const PRODUCTION_PATHS = ["src/payments", "src/onchain"];function walk(dir: string): string[] { return readdirSync(dir, { withFileTypes: true }).flatMap((d) => d.isDirectory() ? walk(join(dir, d.name)) : [join(dir, d.name)] );}const errors: string[] = [];for (const root of PRODUCTION_PATHS) { for (const file of walk(root)) { const src = readFileSync(file, "utf8"); for (const eip of DRAFT_FORBIDDEN) { if (src.includes(eip)) { errors.push(`${file}: production path depends on draft ${eip}`); } } }}if (errors.length > 0) { console.error(errors.join("\n")); process.exit(1);}강의 포인트
| 관점 | 수업 중 확인할 질문 | 산출물 |
|---|---|---|
| 최신성 | 문서 접근일과 page last updated를 기록했는가 | source register |
| 확실성 | draft, included, activated를 구분했는가 | EIP status table |
| 제품 영향 | checkout, indexer, gas, MEV, L2 fee 중 무엇을 건드리는가 | impact memo |
| 운영 | 언제 다시 확인할 것인가 | review cadence |
| 금지선 | draft 정보를 어디까지 제품에 반영하지 않을 것인가 | dependency policy |
실무 예시
백엔드[OPS] Roadmap source register 예시
| 항목 | Source | 2026-05-14 상태 | 제품 가정 | 다음 확인 |
|---|---|---|---|---|
| Glamsterdam | ethereum.org roadmap | H1 2026, in development | product policy 변경 없음 | monthly |
| ePBS | EIP-7732 | Draft | inclusion/MEV monitoring 후보 | fork scope 변경 시 |
| BAL | EIP-7928 | Draft | client performance와 validation 후보 | client testnet note 확인 |
| ETH transfer logs | EIP-7708 | Draft | native ETH accounting 후보 | EIP status change |
| State creation gas | EIP-8037 | Draft | deployment/storage gas watchlist | numbers finalized 후 |
| State access gas | EIP-8038 | Draft, some values TBD | gas estimate watchlist | parameter update 후 |
Checkout impact memo template
| 섹션 | 작성 내용 |
|---|---|
| Summary | 이 항목이 우리 checkout 시스템에 영향을 줄 가능성 한 문장 |
| Current status | source URL, 접근일, EIP status, mainnet activation 여부 |
| Opportunity | 비용, latency, indexing, monitoring 개선 가능성 |
| Risk | gas estimate 실패, indexer schema 변경, SLA 과장, provider dependency |
| No-change rule | activation 전까지 바꾸지 않을 production assumption |
| Watch action | 다음 확인일, 담당자, 확인할 source |
흔한 오해와 실패 시나리오
| 오해 | 실제 기준 |
|---|---|
| ethereum.org에 있으면 확정 스펙이다 | roadmap은 방향이며 EIP 상태와 fork activation을 별도로 봐야 한다 |
| Draft EIP도 곧 들어갈 테니 제품에 반영해도 된다 | draft는 바뀔 수 있고 빠질 수 있으므로 watchlist로만 둔다 |
| protocol upgrade는 app 개발자와 무관하다 | gas, indexing, transaction inclusion, node provider behavior에 영향을 줄 수 있다 |
| 로드맵 메모는 뉴스 요약이면 충분하다 | 제품 영향, 금지선, 다음 확인일이 있어야 운영 문서다 |
| 한 번 조사하면 끝난다 | 로드맵 자료는 변동성이 크므로 접근일과 재검토 주기가 핵심이다 |
실습 과제
- 백엔드Roadmap source register 작성: Glamsterdam 관련 항목마다 source URL, 접근일, EIP 상태, fork inclusion 여부, 제품 가정, 다음 재검토 일정을 기록한다.
- 운영Checkout impact memo 작성: ePBS, Block-Level Access Lists, ETH transfer logs, state gas repricing 중 하나를 골라 checkout 시스템의 기회, 위험, 지금 할 일을 1페이지 메모로 작성한다.
- 백엔드[OPS] Draft EIP dependency policy 만들기: draft EIP를 제품 로드맵, gas estimate, indexer schema, SLA에 반영할 때 허용/금지 기준을 정한다.
완료 기준
- roadmap, draft EIP, fork inclusion, mainnet activation의 차이를 설명했다.
- Glamsterdam 관련 항목의 source register를 작성했다.
- 선택한 항목 하나를 checkout impact memo로 번역했다.
- draft EIP를 production dependency로 삼지 않는 금지선을 정했다.
근거 자료
- Ethereum 로드맵 Glamsterdam: 03-크로스체인-L2/04-Ethereum-로드맵-Glamsterdam.md
- 이더리움 로드맵: 90-출처/원문-노트/이더리움-로드맵.md
- 이더리움 Glamsterdam 업그레이드: 90-출처/원문-노트/이더리움-Glamsterdam-업그레이드.md
- Ethereum Roadmap: https://ethereum.org/roadmap/
- EIP-7732: Enshrined Proposer-Builder Separation: https://eips.ethereum.org/EIPS/eip-7732
- EIP-7928: Block-Level Access Lists: https://eips.ethereum.org/EIPS/eip-7928
- EIP-7708: ETH transfers and burns emit a log: https://eips.ethereum.org/EIPS/eip-7708
- EIP-8037: State Creation Gas Cost Increase: https://eips.ethereum.org/EIPS/eip-8037
- EIP-8038: State-access gas cost update: https://eips.ethereum.org/EIPS/eip-8038