Skip to content

README.md — Version Comparison

v1.16.8 v1.17.3
Branch etc/v1.16.8-full-node etc/v1.17.3-full-node
Delta +57 -25 +65 -25
ETC delta on v1.16.8 (+57 -25)
diff --git a/README.md b/README.md
index 639286ba9..d0a8ee7fd 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,23 @@
-## Go Ethereum
+## Go Ethereum Classic

-Golang execution layer implementation of the Ethereum protocol.
+Golang execution layer implementation supporting Ethereum and Ethereum Classic networks.

-[![API Reference](
-https://pkg.go.dev/badge/github.com/ethereum/go-ethereum
-)](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc)
-[![Go Report Card](https://goreportcard.com/badge/github.com/ethereum/go-ethereum)](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
-[![Travis](https://app.travis-ci.com/ethereum/go-ethereum.svg?branch=master)](https://app.travis-ci.com/github/ethereum/go-ethereum)
-[![Discord](https://img.shields.io/badge/discord-join%20chat-blue.svg)](https://discord.gg/nthXNEv)
-[![Twitter](https://img.shields.io/twitter/follow/go_ethereum)](https://x.com/go_ethereum)
+> **Fork Notice:** This is a fork of [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)
+> with native support for Ethereum Classic (ETC) mainnet and Mordor testnet.

-Automated builds are available for stable releases and the unstable master branch. Binary
-archives are published at https://geth.ethereum.org/downloads/.
+[![CI](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml/badge.svg)](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml)
+[![Release](https://img.shields.io/github/v/release/diega/go-ethereum-classic)](https://github.com/diega/go-ethereum-classic/releases)
+[![Go Report Card](https://goreportcard.com/badge/github.com/diega/go-ethereum-classic)](https://goreportcard.com/report/github.com/diega/go-ethereum-classic)
+
+## Supported Networks
+
+| Network | Chain ID | Flag | Status |
+|---------|----------|------|--------|
+| Ethereum Mainnet | 1 | `--mainnet` | PoS (post-merge) |
+| **Ethereum Classic** | 61 | `--classic` | PoW |
+| **Mordor Testnet** | 63 | `--mordor` | PoW (ETC testnet) |
+| Sepolia | 11155111 | `--sepolia` | PoS testnet |
+| Holesky | 17000 | `--holesky` | PoS testnet |

 ## Building the source

@@ -44,6 +50,41 @@ directory.
 |   `evm`    | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug run`).                                                                                                                                                                                                                                               |
 | `rlpdump`  | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user-friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`).                                                                                                                                                                                |

+## Ethereum Classic Features
+
+This fork implements the following ETC-specific ECIPs:
+
+| ECIP | Name | Description |
+|------|------|-------------|
+| ECIP-1017 | Monetary Policy | 5M block eras with 20% emission reduction |
+| ECIP-1041 | Difficulty Bomb Disposal | Removes difficulty bomb permanently |
+| ECIP-1099 | Etchash | Modified DAG algorithm (60k epochs) |
+
+### Running Ethereum Classic
+
+```shell
+# ETC Mainnet
+geth --classic console
+
+# Mordor Testnet
+geth --mordor console
+```
+
+### Database Incompatibility with core-geth
+
+Databases created by [core-geth](https://github.com/etclabscore/core-geth) **cannot** be used directly with this client. There are two key schema differences:
+
+1. **Freezer (ancient DB) compression**: The `diffs` table uses snappy compression in this fork (`noSnappy: false`) but stores data uncompressed in core-geth (`noSnappy: true`). This produces incompatible index files (`.cidx` vs `.ridx`).
+
+2. **Chain config JSON tags**: ETC-specific fields use different JSON keys:
+
+   | Field | go-ethereum-classic | core-geth |
+   |-------|-------------------|-----------|
+   | ECIP-1017 block | `ecip1017Block` | `ecip1017FBlock` |
+   | ECIP-1099 block | `ecip1099Block` | `ecip1099FBlock` |
+
+If you are migrating from core-geth, you must resync from scratch.
+
 ## Running `geth`

 Going through all the possible command line flags is out of scope here (please consult our
@@ -218,12 +259,8 @@ There are three different solutions depending on your use case:
 Thank you for considering helping out with the source code! We welcome contributions
 from anyone on the internet, and are grateful for even the smallest of fixes!

-If you'd like to contribute to go-ethereum, please fork, fix, commit and send a pull request
-for the maintainers to review and merge into the main code base. If you wish to submit
-more complex changes though, please check up with the core devs first on [our Discord Server](https://discord.gg/invite/nthXNEv)
-to ensure those changes are in line with the general philosophy of the project and/or get
-some early feedback which can make both your efforts much lighter as well as our review
-and merge procedures quick and simple.
+If you'd like to contribute to go-ethereum-classic, please fork, fix, commit and send a pull request
+for the maintainers to review and merge into the main code base.

 Please make sure your contributions adhere to our coding guidelines:

@@ -235,15 +272,10 @@ Please make sure your contributions adhere to our coding guidelines:
  * Commit messages should be prefixed with the package(s) they modify.
    * E.g. "eth, rpc: make trace configs optional"

-Please see the [Developers' Guide](https://geth.ethereum.org/docs/developers/geth-developer/dev-guide)
-for more details on configuring your environment, managing project dependencies, and
-testing procedures.
-
-### Contributing to geth.ethereum.org
+### Syncing with upstream

-For contributions to the [go-ethereum website](https://geth.ethereum.org), please checkout and raise pull requests against the `website` branch.
-For more detailed instructions please see the `website` branch [README](https://github.com/ethereum/go-ethereum/tree/website#readme) or the 
-[contributing](https://geth.ethereum.org/docs/developers/geth-developer/contributing) page of the website.
+This fork is periodically synced with [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum).
+ETC-specific changes are maintained in separate commits for easy rebasing.

 ## License
ETC delta on v1.17.3 (+65 -25)
diff --git a/README.md b/README.md
index 639286ba9..64d91b4d4 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,23 @@
-## Go Ethereum
+## Go Ethereum Classic

-Golang execution layer implementation of the Ethereum protocol.
+Golang execution layer implementation supporting Ethereum and Ethereum Classic networks.

-[![API Reference](
-https://pkg.go.dev/badge/github.com/ethereum/go-ethereum
-)](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc)
-[![Go Report Card](https://goreportcard.com/badge/github.com/ethereum/go-ethereum)](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
-[![Travis](https://app.travis-ci.com/ethereum/go-ethereum.svg?branch=master)](https://app.travis-ci.com/github/ethereum/go-ethereum)
-[![Discord](https://img.shields.io/badge/discord-join%20chat-blue.svg)](https://discord.gg/nthXNEv)
-[![Twitter](https://img.shields.io/twitter/follow/go_ethereum)](https://x.com/go_ethereum)
+> **Fork Notice:** This is a fork of [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)
+> with native support for Ethereum Classic (ETC) mainnet and Mordor testnet.

-Automated builds are available for stable releases and the unstable master branch. Binary
-archives are published at https://geth.ethereum.org/downloads/.
+[![CI](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml/badge.svg)](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml)
+[![Release](https://img.shields.io/github/v/release/diega/go-ethereum-classic)](https://github.com/diega/go-ethereum-classic/releases)
+[![Go Report Card](https://goreportcard.com/badge/github.com/diega/go-ethereum-classic)](https://goreportcard.com/report/github.com/diega/go-ethereum-classic)
+
+## Supported Networks
+
+| Network | Chain ID | Flag | Status |
+|---------|----------|------|--------|
+| Ethereum Mainnet | 1 | `--mainnet` | PoS (post-merge) |
+| **Ethereum Classic** | 61 | `--classic` | PoW |
+| **Mordor Testnet** | 63 | `--mordor` | PoW (ETC testnet) |
+| Sepolia | 11155111 | `--sepolia` | PoS testnet |
+| Holesky | 17000 | `--holesky` | PoS testnet |

 ## Building the source

@@ -44,6 +50,49 @@ directory.
 |   `evm`    | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug run`).                                                                                                                                                                                                                                               |
 | `rlpdump`  | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user-friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`).                                                                                                                                                                                |

+## Ethereum Classic Features
+
+This fork implements the following ETC-specific ECIPs:
+
+| ECIP | Name | Description |
+|------|------|-------------|
+| ECIP-1017 | Monetary Policy | 5M block eras with 20% emission reduction |
+| ECIP-1041 | Difficulty Bomb Disposal | Removes difficulty bomb permanently |
+| ECIP-1099 | Etchash | Modified DAG algorithm (60k epochs) |
+
+### Running Ethereum Classic
+
+```shell
+# ETC Mainnet
+geth --classic console
+
+# Mordor Testnet
+geth --mordor console
+```
+
+### Migrating from core-geth
+
+A datadir created by [core-geth](https://github.com/etclabscore/core-geth) with its **default
+settings can be adopted directly — no resync required**:
+
+- **Freezer (ancient DB)**: identical layout. Every chain freezer table uses the same
+  compression as core-geth, including the `diffs` (total-difficulty) table
+  (`noSnappy: true`, uncompressed).
+- **Chain config**: core-geth serializes the ETC fork fields under different JSON keys
+  (`ecip1017FBlock` vs `ecip1017Block`, `ecip1099FBlock` vs `ecip1099Block`, …). This client
+  runs a one-shot, on-disk migration on first startup that rewrites the stored config into
+  its own format (see `core/coregeth_migration.go`), so no manual conversion is needed.
+- **State**: core-geth defaults to the hash-based scheme (`hashdb`), which this client reads
+  natively — the on-disk state scheme is detected and reused automatically.
+
+**Caveat — path-based state:** if the core-geth datadir was created with `--state.scheme=path`
+(not core-geth's default), its `pathdb` format predates this client's and is **not
+compatible**; that case requires a resync. Default `hashdb` datadirs are adopted as-is.
+
+Run a Classic node with `--classic`. ETC and ETH share the same genesis hash, so opening a
+Classic datadir without it could otherwise be misread as Ethereum mainnet; as a safety net for
+embedded use, a stored Classic config is honoured over that shared hash.
+
 ## Running `geth`

 Going through all the possible command line flags is out of scope here (please consult our
@@ -218,12 +267,8 @@ There are three different solutions depending on your use case:
 Thank you for considering helping out with the source code! We welcome contributions
 from anyone on the internet, and are grateful for even the smallest of fixes!

-If you'd like to contribute to go-ethereum, please fork, fix, commit and send a pull request
-for the maintainers to review and merge into the main code base. If you wish to submit
-more complex changes though, please check up with the core devs first on [our Discord Server](https://discord.gg/invite/nthXNEv)
-to ensure those changes are in line with the general philosophy of the project and/or get
-some early feedback which can make both your efforts much lighter as well as our review
-and merge procedures quick and simple.
+If you'd like to contribute to go-ethereum-classic, please fork, fix, commit and send a pull request
+for the maintainers to review and merge into the main code base.

 Please make sure your contributions adhere to our coding guidelines:

@@ -235,15 +280,10 @@ Please make sure your contributions adhere to our coding guidelines:
  * Commit messages should be prefixed with the package(s) they modify.
    * E.g. "eth, rpc: make trace configs optional"

-Please see the [Developers' Guide](https://geth.ethereum.org/docs/developers/geth-developer/dev-guide)
-for more details on configuring your environment, managing project dependencies, and
-testing procedures.
-
-### Contributing to geth.ethereum.org
+### Syncing with upstream

-For contributions to the [go-ethereum website](https://geth.ethereum.org), please checkout and raise pull requests against the `website` branch.
-For more detailed instructions please see the `website` branch [README](https://github.com/ethereum/go-ethereum/tree/website#readme) or the 
-[contributing](https://geth.ethereum.org/docs/developers/geth-developer/contributing) page of the website.
+This fork is periodically synced with [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum).
+ETC-specific changes are maintained in separate commits for easy rebasing.

 ## License

← Back to Version Comparison