/core-geth

A highly configurable Go implementation of the Ethereum protocol.

Primary LanguageGoGNU Lesser General Public License v3.0LGPL-3.0

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) ✔️ ✔️
- ⚡ 🤝 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 ✔️ ✔️
MINTME MintMe.com Coin ✔️
  • ⚡ = 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!

Documentation

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.