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