Ethereum Classic Community Call #55
Geth Classic
Key Points Discussed
- Diego introduced Geth Classic: a new ETC client built as a minimal proof-of-work fork of upstream go-ethereum, pitched as core-geth’s maintainable successor.
- It ships an auto-generated documentation wiki that traces every change back to the exact upstream PRs and diffs.
- A one-way core-geth to Geth Classic database migration is being tested, and the same fork pattern could be reused by other proof-of-work chains.
- Client diversity was called critical to network stability, citing the Spurious Dragon / Shanghai incident as a real save.
- Governance: each client under its own org, with no anointed “correct client” — list the forks and let users decide.
Full AI Summary and Transcript ↓
Preamble
Hello, and Welcome!
This community call is an open voice chat discussion about Ethereum Classic. Everyone is welcome.
The call will be published on YouTube. We kindly ask that discussion stays focused on ideas rather than individuals. Let’s keep it classy.
Find past episodes, transcripts, subscribe to calendar, and more at https://cc.ethereumclassic.org.
New this episode: a fresh video format with chapter markers and cleaned-up captions. If you are watching on YouTube, it should look a lot nicer.
Introductions
Quick round of introductions for everyone on the call, and if there’s anything you want to talk about.
AI Summary
This call was a deep, one-on-one technical session between Istora and Diego on Geth Classic, a new Ethereum Classic client, followed by a wider discussion of client diversity and governance. The planned agenda topics (value accrual, futarchy, the Fifthening, side events) were not reached and roll forward to a future call.
Building Geth Classic from Upstream go-ethereum
The call opened on the work Diego has been doing to derive an ETC client from a modern upstream Ethereum client.
- Details
- Diego: Geth Classic is not core-geth; it is a fresh fork of upstream go-ethereum with a deliberately small set of commits (around nine) layered on top of a chosen release
- Diego: The commits re-add proof-of-work support and ETC specifics, the monetary policy and all the hard-fork activation blocks, with core-geth used as the battle-tested source of truth to avoid diverging from known-correct behaviour
- Diego: The proof-of-work code that go-ethereum deleted after the Merge will not compile against the modern architecture, so it had to be revived and re-applied rather than copied verbatim
- Diego: ETC-specific concepts are kept in separate sibling files, touching the minimum of upstream code, so each new go-ethereum release can be rebased by re-applying the same small commit set (the latest base was 1.17.4)
- Diego: The aim is a maintainable, least-intrusive design that keeps the work auditable by an external participant
- Conclusion
- Geth Classic is positioned as a next-generation, easier-to-maintain successor to core-geth, structured so it tracks upstream releases with minimal ongoing effort
The Auto-Generated Documentation Wiki
A large part of the session was a walkthrough of the documentation system Diego built alongside the client.
- Details
- Diego: The wiki is generated deterministically from YAML descriptors tied to the codebase, so it cannot drift from the actual changes and removes human error from tracking what was modified
- Diego: It organises the work as recipes (“where to look if you want X”) and shows, per change, what comes from upstream versus the revived proof-of-work code, with an origin column linking back to the exact PRs and diffs
- Diego: As a worked example, removing then re-adding the eth/68 wire protocol traces back to the upstream PR (around 9 files modified, 5 new files added), with the reverted lines relocated into isolated files for maintainability
- Diego: The generated view gives traceability across releases, for example comparing 1.17.3 to 1.17.4, and he has spent roughly three months on the client and the wiki
- Istora: Noted the documentation is generated from the codebase itself, eliminating human error over which lines are included, and that the repo currently has a single star (his)
- Conclusion
- The wiki doubles as an audit trail and an onboarding reference, and is valuable in its own right for anyone trying to implement ETC support in another client
Database Migration and Reuse by Other Chains
The discussion turned to operator migration and whether the approach generalises.
- Details
- Diego: A core-geth to Geth Classic database migration is being tested and looks possible because the schemas are similar, but it is one-way (no downgrade) and experimental, so operators should back up first
- Diego: The benefit is that existing core-geth operators could download Geth Classic and keep running on top of the data they already have
- Diego: The upstream go-ethereum team does not maintain proof-of-work for other chains, but the fork pattern could be reused by other proof-of-work / EVM chains (he cited Binance’s go-ethereum fork as a project that lacks a scalable upgrade architecture)
- Diego: For a different-language client such as a Rust reth port, the specific code does not transfer, but the general strategy (minimal commits, generated docs, disciplined upstream tracking) does; the right techniques depend on the language’s extension points
- Conclusion
- Migration is plausible and low-friction in principle; the transferable asset is the methodology more than the code
Promoting Geth Classic and the Future of core-geth
Istora and Diego discussed where the new client goes next.
- Details
- Diego: He wants to move Geth Classic into its own GitHub organization, promote it, and grow testing, ideally including miners
- Diego: Over time core-geth could be sunset in favour of Geth Classic, citing faster updates, easier maintenance, and better performance
- Diego: Nethermind remains an excellent, proven client with a small, isolated ETC footprint that is worth maintaining and keeping up to date
- Diego: He would not force anyone to migrate; he would keep maintaining core-geth and let operators move when they see the value
- Istora: Raised whether ETC should intentionally stop maintaining the older client to push migration, and both agreed that would be reckless while operators still depend on it
- Conclusion
- The direction is to promote Geth Classic and let adoption happen organically, with core-geth maintained until migration is genuinely low-risk
Why Client Diversity Matters
Istora asked Diego to make the case for multiple clients on the network.
- Details
- Diego: A single majority client is a systemic risk, both for consensus bugs and for unspecified behaviours that exist only in one implementation
- Diego: With miners spread across multiple clients, a bug in one client does not stop the chain, because the others keep the network moving
- Istora: Cited the Spurious Dragon / Shanghai-era incident as a real precedent where only one client survived an issue and the network was saved because a minority ran different code
- Istora: Argued developers should proactively reach out to node operators to run minority clients, which is in the operators’ own selfish interest (resilience) as well as the network’s health
- Diego: More clients also reach more developer communities (including other language ecosystems), bringing different perspectives
- Conclusion
- Client diversity is treated as essential to network stability, and a second well-maintained Go client materially improves ETC’s resilience
Organizations, Sunsetting, and User Choice
The call closed on governance and who should decide which client people run.
- Details
- Diego: Each client should live under its own organization, the way Ethereum runs with Besu, Nethermind, and Geth each under their own orgs
- Istora: Today ETC Labs Core maintains core-geth and it happens to be the client everyone uses, but no central body should anoint “the correct client”, because that removes a choice users should be making themselves
- Diego: It is not a problem to have many clients, even forks of the same client; the user should decide which to use
- Both: The aim is to list as many reasonable forks as possible and let users and miners decide, which both framed as the long-standing ETC approach worth preserving
- Conclusion
- The shared position is maximal, transparent choice: surface the options, keep them under independent organizations, and let the community pick rather than having a maintainer pick for them
Action Items
- Diego: Move Geth Classic into its own GitHub organization and promote it for wider testing, including by miners
- Diego: Continue testing the core-geth to Geth Classic database migration and document the one-way, back-up-first caveats for operators
- Diego: Keep maintaining core-geth and the EIP-bundle branch for the next network upgrade, pending agreement on the shortlist
- Istora: Help promote the Geth Classic repo and its documentation wiki (currently one star)
- Community / node operators: Consider running a minority client for network resilience; developers to reach out to specific operators
- All: Next call is in two weeks; join the green room an hour early to beta-test Istora’s app, NourishMint, for on-chain rewards on ETC