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.3-full-node · Commit c8238c0c8 · Base go-ethereum/v1.17.3

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.16.8 → v1.17.3).

Summary

Metric Value
Commits 11
Files changed 167 (70 new, 97 modified)
Lines added +17192
Lines removed -25723
Functional code Δ +15482 -223
Modified upstream files +3043 -25723
Extension points 90

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 fd3790219 params: add ETC chain config fields and network configs 6 +593 -1
2 459e3f3ac consensus,core,params: add ETC consensus engine 42 +6258 -43
3 aea7e64fe core: restore total difficulty for the PoW chain 14 +811 -11
4 e775ae14f eth/protocols/eth: add PoW eth/68 protocol stack 11 +645 -7
5 4d2df2d70 eth/downloader: add PoW initial sync 10 +1412 -5
6 23283304a eth,miner,core: PoW handler/miner stack and live broadcast 50 +3943 -31
7 c0442ef68 core,eth,params: add MESS (ECBP-1100) artificial finality 10 +1149 -28
8 8427af39b cmd: ETC CLI wiring and Mordor/Classic presets 9 +472 -21
9 787f3301a cmd/devp2p/internal/ethtest: regenerate testdata so eth/snap integration suites pass against PoW 15 +1389 -25409
10 f25c837d4 core,eth: migrate core-geth chain config on first start 4 +159 -0
11 c8238c0c8 all: prepare for publication as Go Ethereum Classic 13 +371 -177

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 99 1 9
Total Difficulty (TD) 13 14 4
Core & EVM 0 12 3
Sync & Downloader 79 7 1
eth Protocol 26 9 5
Eth Service 7 7 0
Miner 19 2 3
MESS 4 0 4
RPC & API 11 9 0
CLI, Config & Genesis 11 7 8
Build & Meta 0 4 0