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.
-[](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc)
-[](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
-[](https://app.travis-ci.com/github/ethereum/go-ethereum)
-[](https://discord.gg/nthXNEv)
-[](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/.
+[](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml)
+[](https://github.com/diega/go-ethereum-classic/releases)
+[](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.
-[](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc)
-[](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
-[](https://app.travis-ci.com/github/ethereum/go-ethereum)
-[](https://discord.gg/nthXNEv)
-[](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/.
+[](https://github.com/diega/go-ethereum-classic/actions/workflows/ci.yml)
+[](https://github.com/diega/go-ethereum-classic/releases)
+[](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