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/ethtestfixtures (~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 |