Skip to content

CommerciumBlockchain/core-geth

 
 

Repository files navigation

CoreGeth: An Ethereum Protocol Provider

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.

OpenRPC API Reference Go Report Card Travis Gitter

Network/provider comparison

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!

Install

Pre-built executable

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!

With Docker

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.

docker run

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 pull

Docker images are automatically published on Docker Hub.

Image: latest

Image latest is built automatically from the master branch whenever it's updated.

$ docker pull etclabscore/core-geth:latest
Image: <tag>

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

docker build

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 .

Build from source

Dependencies

  • 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

Source

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

Documentation

For further documentation resources, please visit ./docs.

Contribution

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.

License

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.

About

A highly configurable Go implementation of the Ethereum protocol.

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 86.3%
  • C 5.9%
  • JavaScript 3.5%
  • C++ 1.5%
  • Assembly 0.7%
  • CMake 0.5%
  • Other 1.6%