Categorygithub.com/shudolab/core-geth
modulepackage
0.0.6
Repository: https://github.com/shudolab/core-geth.git
Documentation: pkg.go.dev

# README

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.

TickerConsensusNetworkcore-gethethereum/go-ethereum
ETC:zap:Ethereum Classic:heavy_check_mark:
ETH:zap:Ethereum (Foundation):heavy_check_mark::heavy_check_mark:
-:zap: :handshake:Private chains:heavy_check_mark::heavy_check_mark:
:zap:Mordor (Geth+Parity ETH PoW Testnet):heavy_check_mark:
:zap:Morden (Geth+Parity ETH PoW Testnet)
:zap:Ropsten (Geth+Parity ETH PoW Testnet):heavy_check_mark::heavy_check_mark:
:handshake:Rinkeby (Geth-only ETH PoA Testnet):heavy_check_mark::heavy_check_mark:
:handshake:Goerli (Geth+Parity ETH PoA Testnet):heavy_check_mark::heavy_check_mark:
:handshake:Kovan (Parity-only ETH PoA Testnet)
Tobalaba (EWF Testnet)
Ephemeral development PoA network:heavy_check_mark::heavy_check_mark:
MINTME:zap:MintMe.com Coin:heavy_check_mark:
  • :zap: = Proof of Work
  • :handshake: = 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.

# Packages

Package accounts implements high level Ethereum account management.
No description provided by the author
No description provided by the author
Package common contains various helper functions.
Package consensus implements different Ethereum consensus engines.
No description provided by the author
Package core implements the Ethereum consensus protocol.
No description provided by the author
Package eth implements the Ethereum protocol.
Package ethclient provides a client for the Ethereum RPC API.
Package ethdb defines the interfaces for an Ethereum data store.
Package ethstats implements the network stats reporting service.
Package event deals with subscriptions to real-time events.
Package graphql provides a GraphQL interface to Ethereum node data.
No description provided by the author
No description provided by the author
Go port of Coda Hale's Metrics library <https://github.com/rcrowley/go-metrics> Coda Hale's original work: <https://github.com/codahale/metrics>.
Package miner implements Ethereum block creation and mining.
Package node sets up multi-protocol Ethereum nodes.
Package p2p implements the Ethereum p2p network protocols.
Copyright 2019 The multi-geth Authors This file is part of the multi-geth library.
Package rlp implements the RLP serialization format.
Package rpc implements bi-directional JSON-RPC 2.0 on multiple transports.
No description provided by the author
Package tests implements execution of Ethereum JSON tests.
Package trie implements Merkle Patricia Tries.
No description provided by the author

# Variables

NotFound is returned by API methods if the requested item does not exist.

# Structs

CallMsg contains parameters for contract calls.
FeeHistory provides recent fee market data that consumers can use to determine a reasonable maxPriorityFeePerGas value.
FilterQuery contains options for contract log filtering.
SyncProgress gives progress indications when the node is synchronising with the Ethereum network.

# Interfaces

BlockNumberReader provides access to the current block number.
ChainIDReader provides access to the chain ID.
ChainReader provides access to the blockchain.
ChainStateReader wraps access to the state trie of the canonical blockchain.
ChainSyncReader wraps access to the node's current sync status.
A ContractCaller provides contract calls, essentially transactions that are executed by the EVM but not mined into the blockchain.
FeeHistoryReader provides access to the fee history oracle.
GasEstimator wraps EstimateGas, which tries to estimate the gas needed to execute a specific transaction based on the pending state.
GasPricer wraps the gas price oracle, which monitors the blockchain to determine the optimal gas price given current fee market conditions.
GasPricer1559 provides access to the EIP-1559 gas price oracle.
LogFilterer provides access to contract log events using a one-off query or continuous event subscription.
PendingContractCaller can be used to perform calls against the pending state.
A PendingStateEventer provides access to real time notifications about changes to the pending state.
A PendingStateReader provides access to the pending state, which is the result of all known executable transactions which have not yet been included in the blockchain.
Subscription represents an event subscription where events are delivered on a data channel.
TransactionReader provides access to past transactions and their receipts.
TransactionSender wraps transaction sending.