An ethereum/go-ethereum downstream effort to make the Ethereum Protocol accessible and extensible for a diverse ecosystem.
Priority is given to reducing opinions around chain configuration, IP-based feature implementations, and API predictability. Upstream development from ethereum/go-ethereum is merged to this repository regularly, usually at every upstream tagged release. Every effort is made to maintain seamless compatibility with upstream source, including compatible RPC, JS, and CLI APIs, data storage locations and schemas, and, of course, interoperable node protocols. Applicable bug reports, bug fixes, features, and proposals should be made upstream whenever possible.
Networks supported by the respective go-ethereum packaged geth
program.
Ticker | Consensus | Network | core-geth | ethereum/go-ethereum |
---|---|---|---|---|
ETC | ⚡ | Ethereum Classic | ✔️ | |
ETH | ⚡ | Ethereum (Foundation) | ✔️ | ✔️ |
ETSC | ⚡ | Ethereum Social | ✔️ | |
ESN | ⚡ | EtherSocial | ✔️ | |
MIX | ⚡ | Mix | ✔️ | |
ELLA | ⚡ | Ellaism | 🚫1 | |
MUSIC | ⚡ | Musicoin | 📂2 | |
- | ⚡ 🤝 | Private chains | ✔️ | ✔️ |
⚡ | Mordor (Geth+Parity ETH PoW Testnet) | ✔️ | ||
⚡ | Morden (Geth+Parity ETH PoW Testnet) | |||
⚡ | Ropsten (Geth+Parity ETH PoW Testnet) | ✔️ | ✔️ | |
🤝 | Rinkeby (Geth-only ETH PoA Testnet) | ✔️ | ✔️ | |
🤝 | Goerli (Geth+Parity ETH PoA Testnet) | ✔️ | ✔️ | |
🤝 | Kotti (Geth+Parity ETC PoA Testnet) | ✔️ | ||
🤝 | Kovan (Parity-only ETH PoA Testnet) | |||
Tobalaba (EWF Testnet) | ||||
Ephemeral development PoA network | ✔️ | ✔️ |
- ⚡ = Proof of Work
- 🤝 = Proof of Authority
1: This is originally an Ellaism Project. However, A recent hard fork makes Ellaism not feasible to support with go-ethereum any more. Existing Ellaism users are asked to switch to Parity.
2: Network not supported by default, but network configuration is possible. Make a PR!
If you just want to download and run geth
or any of the other tools here, this is the quickest and simplest way.
Binary archives are published at https://github.com/etclabscore/core-geth/releases. Find the latest one for your OS, download it, (check the SHA sum), unarchive it, and run!
All runnable examples below are for images limited to geth
. For images including the full suite of
tools available from this source, use the Docker Hub tag prefix alltools.
, like etclabscore/core-geth:alltools.latest
, or the associated Docker file directly ./Dockerfile.alltools
.
One of the quickest ways to get Ethereum up and running on your machine is by using Docker:
$ docker run -d \
--name core-geth \
-v $LOCAL_DATADIR:/root \
-p 30303:30303 \
-p 8545:8545 \
etclabscore/core-geth \
--classic \
--rpc --rpcport 8545
This will start geth
in fast-sync mode with a DB memory allowance of 1GB just as the
above command does. It will also create a persistent volume in your $LOCAL_DATADIR
for
saving your blockchain, as well as map the default devp2p and JSON-RPC API ports.
Do not forget --http.addr 0.0.0.0
, if you want to access RPC from other containers
and/or hosts. By default, geth
binds to the local interface and RPC endpoints is not
accessible from the outside.
Docker images are automatically published on Docker Hub.
Image latest
is built automatically from the master
branch whenever it's updated.
$ docker pull etclabscore/core-geth:latest
Repository tags like v1.2.3
correspond to Docker tags like version-1.2.3
.
An example:
$ docker pull etclabscore/core-geth:version-1.11.1
You can build a local docker image directly from the source:
$ git clone https://github.com/etclabscore/core-geth.git
$ cd core-geth
$ docker build -t=core-geth .
Or with all tools:
$ docker build -t core-geth-alltools -f Dockerfile.alltools .
- Make sure your system has Go installed. Version 1.13+ is recommended. https://golang.org/doc/install
- Make sure your system has a C compiler installed. For example, with Linux Ubuntu:
$ sudo apt-get install -y build-essential
Once the dependencies have been installed, it's time to clone and build the source:
$ git clone https://github.com/etclabscore/core-geth.git
$ cd core-geth
$ make all
$ ./build/bin/geth --help
For further documentation resources, please visit ./docs.
Thank you for considering to help 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 core-geth, 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 gitter channel 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.
Please make sure your contributions adhere to our coding guidelines:
- Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
- Code must be documented adhering to the official Go commentary guidelines.
- Pull requests need to be based on and opened against the
master
branch. - Commit messages should be prefixed with the package(s) they modify.
- E.g. "eth, rpc: make trace configs optional"
Please see the Developers' Guide for more details on configuring your environment, managing project dependencies, and testing procedures.
The core-geth library (i.e. all code outside of the cmd
directory) is licensed under the
GNU Lesser General Public License v3.0,
also included in our repository in the COPYING.LESSER
file.
The core-geth binaries (i.e. all code inside of the cmd
directory) is licensed under the
GNU General Public License v3.0, also
included in our repository in the COPYING
file.