Skip to content

Go Ethereum Classic

go-ethereum-classic (getc) is a full Proof-of-Work node for Ethereum Classic, built as a thin fork of go-ethereum. Upstream removed PoW during the transition to Proof-of-Stake; getc revives it by transplanting the deleted code from just before each upstream purge, kept in sibling _pow.go / _etc.go files so the fork tracks upstream with minimal rebase friction (see Fork Architecture).

Branch etc/v1.17.4-full-node · Commit 9c74762b5 · Base go-ethereum/v1.17.4

Where to look

If you want to… Go to
Understand how the fork is structured Fork Architecture
See which upstream PRs removed PoW, and what purgeN means Upstream Purges & Sources
Browse every change by subsystem Code Changes
Check what's covered vs upstream (and what isn't) Coverage
Read about ETC-specific behavior ECIP-1017 · MESS · Forks & ECIPs
See where the fork hooks into upstream files Extension Points
Check test status Test Status

How the changes are organized

Every change is filed under one subsystem and tagged by nature:

  • 🔄 revived — code upstream deleted, transplanted back from just before the purge; the diff is against that pre-purge origin, so you can verify the transplant is faithful.
  • ✏️ in-place — an upstream file the fork edits directly; the diff is against the current upstream base.
  • 🆕 new — fork-only files with no upstream pedigree; the highest-scrutiny changes.

Start at Code Changes for the per-subsystem index, or Coverage to see every file touched vs upstream and whether it's documented. Version Comparison shows how the ETC patches evolved from the previous release (v1.17.3 → v1.17.4).

Summary

Metric Value
Commits 11
Files changed 185 (86 new, 99 modified)
Lines added +18873
Lines removed -25758
Functional code Δ +17157 -253
Modified upstream files +3101 -25758
Extension points 95

Functional code Δ counts only Go production + test code. The far larger Lines removed above is dominated by regenerated cmd/devp2p/internal/ethtest fixtures (~25k lines of testdata JSON for the PoW chain), not functional changes.

Commits

# Commit Description Files +/-
1 529a08190 params: add ETC chain config fields and network configs 7 +724 -1
2 550d38ac5 consensus,core,metrics,params: add ETC consensus engine 51 +6469 -44
3 4cd5b08ad core: restore total difficulty for the PoW chain 15 +829 -7
4 4d2db8492 eth/protocols/eth: add PoW eth/68 protocol stack 15 +1479 -7
5 b103205db eth/downloader: add PoW initial sync 10 +1412 -5
6 2350048fa eth,ethstats,miner,core: PoW handler/miner stack and live broadcast 54 +4340 -26
7 17dfcdcd2 core,eth,params: add MESS (ECBP-1100) artificial finality 13 +1223 -45
8 c858299d9 cmd: ETC CLI wiring and Mordor/Classic presets 8 +483 -13
9 e0152576e cmd/devp2p/internal/ethtest: regenerate testdata so eth/snap integration suites pass against PoW 15 +1390 -25439
10 8bf6ed7a3 core,eth: migrate core-geth chain config on first start 4 +159 -0
11 9c74762b5 all: prepare for publication as Go Ethereum Classic 13 +376 -182

Changes by subsystem

Each subsystem page lists its revived / in-place / new changes, with the coverage gap at the foot.

Subsystem 🔄 Revived ✏️ In-place 🆕 New
Consensus & Ethash 100 1 12
Total Difficulty (TD) 13 15 6
Core & EVM 0 12 3
Sync & Downloader 79 8 1
eth Protocol 36 9 6
Eth Service 9 8 2
Miner 19 2 3
MESS 4 0 4
RPC & API 12 9 1
CLI, Config & Genesis 21 6 11
Build & Meta 0 4 0