go-ethereum

module
v5.0.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2018 License: GPL-3.0

README ΒΆ

Linux Build Status MacOS Build Status Windows Build Status API Reference Gitter

Ethereum Go (Ethereum Classic Blockchain)

Official Go language implementation of the Ethereum protocol supporting the original chain. Ethereum Classic (ETC) offers a censorship-resistant and powerful application platform for developers in parallel to Ethereum (ETHF), while differentially rejecting the DAO bailout.

Install

πŸš€ From a release binary

The simplest way to get started running a node is to visit our Releases page and download a zipped executable binary (matching your operating system, of course), then moving the unzipped file geth to somewhere in your $PATH. Now you should be able to open a terminal and run $ geth help to make sure it's working. For additional installation instructions please check out the Installation Wiki.

🍻 Using Homebrew (OSX only)
$ brew install ethereumproject/classic/geth

πŸ”¨ Building the source

If your heart is set on the bleeding edge, install from source. However, please be advised that you may encounter some strange things, and we can't prioritize support beyond the release versions. Recommended for developers only.

Dependencies

Building geth requires both Go >=1.9 and a C compiler.

Get source and dependencies

$ go get -v github.com/ethereumproject/go-ethereum/...

Installing command executables

To install...

  • the full suite of utilities: $ go install github.com/ethereumproject/go-ethereum/cmd/...
  • just geth: $ go install github.com/ethereumproject/go-ethereum/cmd/geth

Executables built from source will, by default, be installed in $GOPATH/bin/.

Building specific release

All the above commands results with building binaries from HEAD. To use a specific release/tag, use the following:

$ go get -d github.com/ethereumproject/go-ethereum/...
$ cd $GOPATH/src/github.com/ethereumproject/go-ethereum
$ git checkout <TAG OR REVISION>
$ go install -ldflags "-X main.Version="`git describe --tags` ./cmd/...
Using release source code tarball

Because of strict Go directory structure, the tarball needs to be extracted into the proper subdirectory under $GOPATH. The following commands are an example of building the v4.1.1 release:

$ mkdir -p $GOPATH/src/github.com/ethereumproject
$ cd $GOPATH/src/github.com/ethereumproject
$ tar xzf /path/to/go-ethereum-4.1.1.tar.gz
$ mv go-ethereum-4.1.1 go-ethereum
$ cd go-ethereum
$ go install -ldflags "-X main.Version=v4.1.1" ./cmd/...
Building with SputnikVM

Have Rust (>= 1.21) and Golang (>= 1.9) installed.

For Linux and macOS:

cd $GOPATH/src/github.com/ethereumproject
git clone https://github.com/ethereumproject/sputnikvm-ffi
cd sputnikvm-ffi/c/ffi
cargo build --release
cp $GOPATH/src/github.com/ethereumproject/sputnikvm-ffi/c/ffi/target/release/libsputnikvm_ffi.a $GOPATH/src/github.com/ethereumproject/sputnikvm-ffi/c/libsputnikvm.a

And then build geth with CGO_LDFLAGS:

  • In Linux:
cd $GOPATH/src/github.com/ethereumproject/go-ethereum/cmd/geth
CGO_LDFLAGS="$GOPATH/src/github.com/ethereumproject/sputnikvm-ffi/c/libsputnikvm.a -ldl" go build -tags=sputnikvm .
  • In macOS:
cd $GOPATH/src/github.com/ethereumproject/go-ethereum/cmd/geth
CGO_LDFLAGS="$GOPATH/src/github.com/ethereumproject/sputnikvm-ffi/c/libsputnikvm.a -ldl -lresolv" go build -tags=sputnikvm .

For Windows:

cd %GOPATH%\src\github.com\ethereumproject
git clone https://github.com/ethereumproject/sputnikvm-ffi
cd sputnikvm-ffi\c\ffi
cargo build --release
copy %GOPATH%\src\github.com\ethereumproject\sputnikvm-ffi\c\ffi\target\release\sputnikvm.lib %GOPATH%\src\github.com\ethereumproject\sputnikvm-ffi\c\sputnikvm.lib

And then build geth with CGO_LDFLAGS:

cd %GOPATH%\src\github.com\ethereumproject\go-ethereum\cmd\geth
set CGO_LDFLAGS=-Wl,--allow-multiple-definition %GOPATH%\src\github.com\ethereumproject\sputnikvm-ffi\c\sputnikvm.lib -lws2_32 -luserenv
go build -tags=sputnikvm .

Executables

This repository includes several wrappers/executables found in the cmd directory.

Command Description
geth The main Ethereum CLI client. It is the entry point into the Ethereum network (main-, test-, or private net), capable of running as a full node (default) archive node (retaining all historical state) or a light node (retrieving data live). It can be used by other processes as a gateway into the Ethereum network via JSON RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transports. Please see our Command Line Options wiki page for details.
abigen Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages. It operates on plain Ethereum contract ABIs with expanded functionality if the contract bytecode is also available. However it also accepts Solidity source files, making development much more streamlined. Please see our Native DApps wiki page for details.
bootnode Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks.
disasm Bytecode disassembler to convert EVM (Ethereum Virtual Machine) bytecode into more user friendly assembly-like opcodes (e.g. `echo "6001"
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 insolated, fine graned debugging of EVM opcodes (e.g. evm --code 60ff60ff --debug).
gethrpctest Developer utility tool to support our ethereum/rpc-test test suite which validates baseline conformity to the Ethereum JSON RPC specs. Please see the test suite's readme for details.
rlpdump Developer utility tool to convert binary RLP (Recursive Length Prefix) 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).

πŸ“— Geth: the basics

Data directory

By default, geth will store all node and blockchain data in a parent directory depending on your OS:

  • Linux: $HOME/.ethereum-classic/
  • Mac: $HOME/Library/EthereumClassic/
  • Windows: $HOME/AppData/Roaming/EthereumClassic/

You can specify this directory with --data-dir=$HOME/id/rather/put/it/here.

Within this parent directory, geth will use a /subdirectory to hold data for each network you run. The defaults are:

  • /mainnet for the Mainnet
  • /morden for the Morden Testnet

You can specify this subdirectory with --chain=mycustomnet.

Migrating: If you have existing data created prior to the 3.4 Release, geth will attempt to migrate your existing standard ETC data to this structure. To learn more about managing this migration please read our 3.4 release notes on our Releases page.

Full node on the main Ethereum network

$ geth

It's that easy! This will establish an ETC blockchain node and download ("sync") the full blocks for the entirety of the ETC blockchain. However, before you go ahead with plain ol' geth, we would encourage reviewing the following section...

🚀 --fast

The most common scenario is users wanting to simply interact with the Ethereum Classic network: create accounts; transfer funds; deploy and interact with contracts, and mine. For this particular use-case the user doesn't care about years-old historical data, so we can fast-sync to the current state of the network. To do so:

$ geth --fast

Using geth in fast sync mode causes it to download only block state data -- leaving out bulky transaction records -- which avoids a lot of CPU and memory intensive processing.

Fast sync will be automatically disabled (and full sync enabled) when:

  • your chain database contains any full blocks
  • your node has synced up to the current head of the network blockchain

In case of using --mine together with --fast, geth will operate as described; syncing in fast mode up to the head, and then begin mining once it has synced its first full block at the head of the chain.

Note: To further increase geth's performace, you can use a --cache=512 flag to bump the memory allowance of the database (e.g. 512MB) which can significantly improve sync times, especially for HDD users. This flag is optional and you can set it as high or as low as you'd like, though we'd recommend the 512MB - 2GB range.

Create or manage account(s)

Geth is able to create, import, update, unlock, and otherwise manage your private (encrypted) key files. Key files are in JSON format and, by default, stored in the respective chain folder's /keystore directory; you can specify a custom location with the --keystore flag.

$ geth account new

This command will create a new account and prompt you to enter a passphrase to protect your account.

Other account subcommands include:

SUBCOMMANDS:

        list    print account addresses
        new     create a new account
        update  update an existing account
        import  import a private key into a new account

Learn more at the Accounts Wiki Page. If you're interested in using geth to manage a lot (~100,000+) of accounts, please visit the Indexing Accounts Wiki page.

Interact with the Javascript console

$ geth console

This command will start up Geth's built-in interactive JavaScript console, through which you can invoke all official web3 methods as well as Geth's own management APIs. This too is optional and if you leave it out you can always attach to an already running Geth instance with geth attach.

Learn more at the Javascript Console Wiki page.

And so much more!

For a comprehensive list of command line options, please consult our CLI Wiki page.

πŸ“™ Geth: developing and advanced useage

Morden Testnet

If you'd like to play around with creating Ethereum contracts, you almost certainly would like to do that without any real money involved until you get the hang of the entire system. In other words, instead of attaching to the main network, you want to join the test network with your node, which is fully equivalent to the main network, but with play-Ether only.

$ geth --chain=morden --fast --cache=512 console

The --fast, --cache flags and console subcommand have the exact same meaning as above and they are equally useful on the testnet too. Please see above for their explanations if you've skipped to here.

Specifying the --chain=morden flag will reconfigure your Geth instance a bit:

  • As mentioned above, Geth will host its testnet data in a morden subfolder (~/.ethereum-classic/morden).
  • Instead of connecting the main Ethereum network, the client will connect to the test network, which uses different P2P bootnodes, different network IDs and genesis states.

You may also optionally use --testnet or --chain=testnet to enable this configuration.

Note: Although there are some internal protective measures to prevent transactions from crossing over between the main network and test network (different starting nonces), you should make sure to always use separate accounts for play-money and real-money. Unless you manually move accounts, Geth will by default correctly separate the two networks and will not make any accounts available between them.

Programatically interfacing Geth nodes

As a developer, sooner rather than later you'll want to start interacting with Geth and the Ethereum network via your own programs and not manually through the console. To aid this, Geth has built in support for a JSON-RPC based APIs (standard APIs and Geth specific APIs). These can be exposed via HTTP, WebSockets and IPC (unix sockets on unix based platroms, and named pipes on Windows).

The IPC interface is enabled by default and exposes all the APIs supported by Geth, whereas the HTTP and WS interfaces need to manually be enabled and only expose a subset of APIs due to security reasons. These can be turned on/off and configured as you'd expect.

HTTP based JSON-RPC API options:

  • --rpc Enable the HTTP-RPC server
  • --rpc-addr HTTP-RPC server listening interface (default: "localhost")
  • --rpc-port HTTP-RPC server listening port (default: 8545)
  • --rpc-api API's offered over the HTTP-RPC interface (default: "eth,net,web3")
  • --rpc-cors-domain Comma separated list of domains from which to accept cross origin requests (browser enforced)
  • --ws Enable the WS-RPC server
  • --ws-addr WS-RPC server listening interface (default: "localhost")
  • --ws-port WS-RPC server listening port (default: 8546)
  • --ws-api API's offered over the WS-RPC interface (default: "eth,net,web3")
  • --ws-origins Origins from which to accept websockets requests
  • --ipc-disable Disable the IPC-RPC server
  • --ipc-api API's offered over the IPC-RPC interface (default: "admin,debug,eth,miner,net,personal,shh,txpool,web3")
  • --ipc-path Filename for IPC socket/pipe within the datadir (explicit paths escape it)

You'll need to use your own programming environments' capabilities (libraries, tools, etc) to connect via HTTP, WS or IPC to a Geth node configured with the above flags and you'll need to speak JSON-RPC on all transports. You can reuse the same connection for multiple requests!

Note: Please understand the security implications of opening up an HTTP/WS based transport before doing so! Hackers on the internet are actively trying to subvert Ethereum nodes with exposed APIs! Further, all browser tabs can access locally running webservers, so malicious webpages could try to subvert locally available APIs!*

Operating a private/custom network

As of Geth 3.4 you are now able to configure a private chain by specifying an external chain configuration JSON file, which includes necessary genesis block data as well as feature configurations for protocol forks, bootnodes, and chainID.

Please find full example external configuration files representing the Mainnet and Morden Testnet specs in the /config subdirectory of this repo. You can use either of these files as a starting point for your own customizations.

It is important for a private network that all nodes use compatible chains. In the case of custom chain configuration, the chain configuration file (chain.json) should be equivalent for each node.

Define external chain configuration

Specifying an external chain configuration file will allow fine-grained control over a custom blockchain/network configuration, including the genesis state and extending through bootnodes and fork-based protocol upgrades.

$ geth --chain=morden dump-chain-config <datadir>/customnet/chain.json
$ sed s/mainnet/customnet/ <datadir>/customnet/chain.json
$ vi <datadir>/customnet/chain.json # make your custom edits
$ geth --chain=customnet [--flags] [command]

The external chain configuration file specifies valid settings for the following top-level fields:

JSON Key Notes
chainID Chain identity. Determines local /subdir for chain data, with required chain.json located in it. It is required, but must not be identical for each node. Please note that this is not the chainID validation introduced in EIP-155; that is configured as a protocal upgrade within forks.features.
name Optional. Human readable name, ie Ethereum Classic Mainnet, Morden Testnet.
state.startingNonce Optional. Initialize state db with a custom nonce.
network Determines Network ID to identify valid peers.
consensus Optional. Proof of work algorithm to use, either "ethash" or "ethast-test" (for development)
genesis Determines genesis state. If running the node for the first time, it will write the genesis block. If configuring an existing chain database with a different genesis block, it will overwrite it.
chainConfig Determines configuration for fork-based protocol upgrades, ie EIP-150, EIP-155, EIP-160, ECIP-1010, etc ;-). Subkeys are forks and badHashes.
bootstrap Optional. Determines bootstrap nodes in enode format.

Fields name, state.startingNonce, and consensus are optional. Geth will panic if any required field is missing, invalid, or in conflict with another flag. This renders --chain incompatible with --testnet. It remains compatible with --data-dir.

To learn more about external chain configuration, please visit the External Command Line Options Wiki page.

Create the rendezvous point

Once all participating nodes have been initialized to the desired genesis state, you'll need to start a bootstrap node that others can use to find each other in your network and/or over the internet. The clean way is to configure and run a dedicated bootnode:

$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key

With the bootnode online, it will display an enode URL that other nodes can use to connect to it and exchange peer information. Make sure to replace the displayed IP address information (most probably [::]) with your externally accessible IP to get the actual enode URL.

Note: You could also use a full fledged Geth node as a bootnode, but it's the less recommended way.

To learn more about enodes and enode format, visit the Enode Wiki page.

Starting up your member nodes

With the bootnode operational and externally reachable (you can try telnet <ip> <port> to ensure it's indeed reachable), start every subsequent Geth node pointed to the bootnode for peer discovery via the --bootnodes flag. It will probably be desirable to keep private network data separate from defaults; to do so, specify a custom --datadir and/or --chain flag.

$ geth --datadir=path/to/custom/data/folder \
       --chain=kittynet \
       --bootnodes=<bootnode-enode-url-from-above>

Note: Since your network will be completely cut off from the main and test networks, you'll also need to configure a miner to process transactions and create new blocks for you.

Running a private miner

Mining on the public Ethereum network is a complex task as it's only feasible using GPUs, requiring an OpenCL or CUDA enabled ethminer instance. For information on such a setup, please consult the EtherMining subreddit and the Genoil miner repository.

In a private network setting however, a single CPU miner instance is more than enough for practical purposes as it can produce a stable stream of blocks at the correct intervals without needing heavy resources (consider running on a single thread, no need for multiple ones either). To start a Geth instance for mining, run it with all your usual flags, extended by:

$ geth <usual-flags> --mine --minerthreads=1 --etherbase=0x0000000000000000000000000000000000000000

Which will start mining blocks and transactions on a single CPU thread, crediting all proceedings to the account specified by --etherbase. You can further tune the mining by changing the default gas limit blocks converge to (--targetgaslimit) and the price transactions are accepted at (--gasprice).

For more information about managing accounts, please see the Managing Accounts Wiki page.

Contribution

Thank you for considering to help out with the source code!

The core values of democratic engagement, transparency, and integrity run deep with us. We welcome contributions from everyone, and are grateful for even the smallest of fixes. πŸ‘

This project is migrated from the now hard-forked Ethereum (ETHF) Github project, and we will need to incrementally migrate pieces of the infrastructure required to maintain the project.

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, please check up with the core devs first on our Slack channel (#development) or our Discord channel (#development) 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 see the Wiki for more details on configuring your environment, managing project dependencies, and testing procedures.

License

The go-ethereum 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 go-ethereum 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.

Directories ΒΆ

Path Synopsis
_vendor-20171227092235
github.com/davecgh/go-spew/spew
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
github.com/golang/snappy
Package snappy implements the snappy block-based compression format.
Package snappy implements the snappy block-based compression format.
github.com/robertkrimen/otto
Package otto is a JavaScript parser and interpreter written natively in Go.
Package otto is a JavaScript parser and interpreter written natively in Go.
github.com/robertkrimen/otto/ast
Package ast declares types representing a JavaScript AST.
Package ast declares types representing a JavaScript AST.
github.com/robertkrimen/otto/dbg
Package dbg is a println/printf/log-debugging utility library.
Package dbg is a println/printf/log-debugging utility library.
github.com/robertkrimen/otto/file
Package file encapsulates the file abstractions used by the ast & parser.
Package file encapsulates the file abstractions used by the ast & parser.
github.com/robertkrimen/otto/parser
Package parser implements a parser for JavaScript.
Package parser implements a parser for JavaScript.
github.com/robertkrimen/otto/registry
Package registry is an expirmental package to facillitate altering the otto runtime via import.
Package registry is an expirmental package to facillitate altering the otto runtime via import.
github.com/robertkrimen/otto/token
Package token defines constants representing the lexical tokens of JavaScript (ECMA5).
Package token defines constants representing the lexical tokens of JavaScript (ECMA5).
github.com/syndtr/goleveldb/leveldb
Package leveldb provides implementation of LevelDB key/value database.
Package leveldb provides implementation of LevelDB key/value database.
github.com/syndtr/goleveldb/leveldb/cache
Package cache provides interface and implementation of a cache algorithms.
Package cache provides interface and implementation of a cache algorithms.
github.com/syndtr/goleveldb/leveldb/comparer
Package comparer provides interface and implementation for ordering sets of data.
Package comparer provides interface and implementation for ordering sets of data.
github.com/syndtr/goleveldb/leveldb/errors
Package errors provides common error types used throughout leveldb.
Package errors provides common error types used throughout leveldb.
github.com/syndtr/goleveldb/leveldb/filter
Package filter provides interface and implementation of probabilistic data structure.
Package filter provides interface and implementation of probabilistic data structure.
github.com/syndtr/goleveldb/leveldb/iterator
Package iterator provides interface and implementation to traverse over contents of a database.
Package iterator provides interface and implementation to traverse over contents of a database.
github.com/syndtr/goleveldb/leveldb/journal
Package journal reads and writes sequences of journals.
Package journal reads and writes sequences of journals.
github.com/syndtr/goleveldb/leveldb/memdb
Package memdb provides in-memory key/value database implementation.
Package memdb provides in-memory key/value database implementation.
github.com/syndtr/goleveldb/leveldb/opt
Package opt provides sets of options used by LevelDB.
Package opt provides sets of options used by LevelDB.
github.com/syndtr/goleveldb/leveldb/storage
Package storage provides storage abstraction for LevelDB.
Package storage provides storage abstraction for LevelDB.
github.com/syndtr/goleveldb/leveldb/table
Package table allows read and write sorted key/value.
Package table allows read and write sorted key/value.
github.com/syndtr/goleveldb/leveldb/util
Package util provides utilities used throughout leveldb.
Package util provides utilities used throughout leveldb.
golang.org/x/crypto/pbkdf2
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.
golang.org/x/crypto/ripemd160
Package ripemd160 implements the RIPEMD-160 hash algorithm.
Package ripemd160 implements the RIPEMD-160 hash algorithm.
golang.org/x/crypto/scrypt
Package scrypt implements the scrypt key derivation function as defined in Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard Functions" (http://www.tarsnap.com/scrypt/scrypt.pdf).
Package scrypt implements the scrypt key derivation function as defined in Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard Functions" (http://www.tarsnap.com/scrypt/scrypt.pdf).
golang.org/x/net/websocket
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
gopkg.in/check.v1
Package check is a rich testing extension for Go's testing package.
Package check is a rich testing extension for Go's testing package.
gopkg.in/fatih/set.v0
Package set provides both threadsafe and non-threadsafe implementations of a generic set data structure.
Package set provides both threadsafe and non-threadsafe implementations of a generic set data structure.
gopkg.in/karalabe/cookiejar.v2/collections/prque
Package prque implements a priority queue data structure supporting arbitrary value types and float priorities.
Package prque implements a priority queue data structure supporting arbitrary value types and float priorities.
gopkg.in/urfave/cli.v1
Package cli provides a minimal framework for creating and organizing command line Go applications.
Package cli provides a minimal framework for creating and organizing command line Go applications.
Package accounts implements encrypted storage of secp256k1 private keys.
Package accounts implements encrypted storage of secp256k1 private keys.
abi
Package abi implements the Ethereum ABI (Application Binary Interface).
Package abi implements the Ethereum ABI (Application Binary Interface).
abi/bind
Package bind generates Ethereum contract Go bindings.
Package bind generates Ethereum contract Go bindings.
cmd
bootnode
bootnode runs a bootstrap node for the Ethereum Discovery Protocol.
bootnode runs a bootstrap node for the Ethereum Discovery Protocol.
disasm
disasm is a pretty-printer for EVM bytecode.
disasm is a pretty-printer for EVM bytecode.
ethtest
ethtest executes Ethereum JSON tests.
ethtest executes Ethereum JSON tests.
evm
evm executes EVM code snippets.
evm executes EVM code snippets.
gethrpctest
gethrpctest is a command to run the external RPC tests.
gethrpctest is a command to run the external RPC tests.
rlpdump
rlpdump is a pretty-printer for RLP data.
rlpdump is a pretty-printer for RLP data.
Package common contains various helper functions.
Package common contains various helper functions.
Package core implements the Ethereum consensus protocol.
Package core implements the Ethereum consensus protocol.
assets
Package assets is generated by github.com/omeid/go-resources
Package assets is generated by github.com/omeid/go-resources
state
Package state provides a caching layer atop the Ethereum state trie.
Package state provides a caching layer atop the Ethereum state trie.
types
Package types contains data types related to Ethereum consensus.
Package types contains data types related to Ethereum consensus.
vm
Package vm implements the Ethereum Virtual Machine.
Package vm implements the Ethereum Virtual Machine.
vm/runtime
Package runtime provides a basic execution model for executing EVM code.
Package runtime provides a basic execution model for executing EVM code.
sha3
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
eth
Package eth implements the Ethereum protocol.
Package eth implements the Ethereum protocol.
downloader
Package downloader contains the manual full chain synchronisation.
Package downloader contains the manual full chain synchronisation.
fetcher
Package fetcher contains the block announcement based synchronisation.
Package fetcher contains the block announcement based synchronisation.
filters
package filters implements an ethereum filtering system for block, transactions and log events.
package filters implements an ethereum filtering system for block, transactions and log events.
Package event implements an event multiplexer.
Package event implements an event multiplexer.
filter
Package filter implements event filters.
Package filter implements event filters.
internal
jsre
Package jsre provides execution environment for JavaScript.
Package jsre provides execution environment for JavaScript.
web3ext
package web3ext contains geth specific web3.js extensions.
package web3ext contains geth specific web3.js extensions.
Package logger implements a multi-output leveled logger.
Package logger implements a multi-output leveled logger.
glog
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
Package metrics centralizes the registration.
Package metrics centralizes the registration.
Package miner implements Ethereum block creation and mining.
Package miner implements Ethereum block creation and mining.
Package node represents the Ethereum protocol stack container.
Package node represents the Ethereum protocol stack container.
p2p
Package p2p implements the Ethereum p2p network protocols.
Package p2p implements the Ethereum p2p network protocols.
discover
Package discover implements the Node Discovery Protocol.
Package discover implements the Node Discovery Protocol.
nat
Package nat provides access to common network port mapping protocols.
Package nat provides access to common network port mapping protocols.
Package rlp implements the RLP serialization format.
Package rlp implements the RLP serialization format.
Package rpc provides access to the exported methods of an object across a network or other I/O connection.
Package rpc provides access to the exported methods of an object across a network or other I/O connection.
Package tests implements execution of Ethereum JSON tests.
Package tests implements execution of Ethereum JSON tests.
Package trie implements Merkle Patricia Tries.
Package trie implements Merkle Patricia Tries.
Package whisper implements the Whisper PoC-1.
Package whisper implements the Whisper PoC-1.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL