prysm

module
v1.0.0-alpha Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2020 License: GPL-3.0

README

Prysm: An Ethereum 2.0 Client Written in Go

Build status ETH2.0_Spec_Version 0.11.1 Discord Gitter

This is the core repository for Prysm, a Golang implementation of the Ethereum 2.0 client specifications developed by Prysmatic Labs.

Getting Started

A detailed set of installation and usage instructions as well as breakdowns of each individual component are available in the official documentation portal. If you still have questions, feel free to stop by either our Discord or Gitter and a member of the team or our community will be happy to assist you.

Come join the testnet!

Participation is now open to the public for our Ethereum 2.0 phase 0 testnet release. Visit prylabs.net for more information on the project or to sign up as a validator on the network. You can visualize the nodes in the network on eth2stats.io, explore validator rewards/penalties via Bitfly's block explorer: beaconcha.in, and follow the latest blocks added to the chain on Etherscan.

Contributing

Want to get involved? Check out our Contribution Guide to learn more!

License

GNU General Public License v3.0

Directories

Path Synopsis
Package beacon-chain defines all the utilities needed for a beacon chain node.
Package beacon-chain defines all the utilities needed for a beacon chain node.
blockchain
Package blockchain defines the life-cycle and status of the beacon chain as well as the Ethereum Serenity beacon chain fork-choice rule based on Casper Proof of Stake finality.
Package blockchain defines the life-cycle and status of the beacon chain as well as the Ethereum Serenity beacon chain fork-choice rule based on Casper Proof of Stake finality.
core/blocks
Package blocks contains block processing libraries.
Package blocks contains block processing libraries.
core/epoch
Package epoch contains epoch processing libraries.
Package epoch contains epoch processing libraries.
core/helpers
Package helpers contains helper functions outlined in ETH2.0 spec beacon chain spec
Package helpers contains helper functions outlined in ETH2.0 spec beacon chain spec
core/state
Package state implements the whole state transition function which consists of per slot, per-epoch transitions.
Package state implements the whole state transition function which consists of per slot, per-epoch transitions.
core/validators
Package validators contains libraries to shuffle validators and retrieve active validator indices from a given slot or an attestation.
Package validators contains libraries to shuffle validators and retrieve active validator indices from a given slot or an attestation.
db
db/filters
Package filters specifies utilities for building a set of data attribute filters to be used when filtering data through database queries in practice.
Package filters specifies utilities for building a set of data attribute filters to be used when filtering data through database queries in practice.
db/iface
Package iface exists to prevent circular dependencies when implementing the database interface.
Package iface exists to prevent circular dependencies when implementing the database interface.
forkchoice
Package forkchoice implements the service to support fork choice for the eth2 beacon chain.
Package forkchoice implements the service to support fork choice for the eth2 beacon chain.
forkchoice/protoarray
Package protoarray implements proto array fork choice as outlined: https://github.com/protolambda/lmd-ghost#array-based-stateful-dag-proto_array This was motivated by the following light house implementation: https://github.com/sigp/lighthouse/pull/804
Package protoarray implements proto array fork choice as outlined: https://github.com/protolambda/lmd-ghost#array-based-stateful-dag-proto_array This was motivated by the following light house implementation: https://github.com/sigp/lighthouse/pull/804
node
Package node defines the services that a beacon chain node would perform.
Package node defines the services that a beacon chain node would perform.
operations/slashings
Package slashings defines the operations management of slashings.
Package slashings defines the operations management of slashings.
operations/voluntaryexits
Package voluntaryexits defines the operations management of voluntary exits.
Package voluntaryexits defines the operations management of voluntary exits.
p2p
Package p2p implements the Ethereum 2.0 networking specification.
Package p2p implements the Ethereum 2.0 networking specification.
p2p/connmgr
Package connmgr : This file is forked from github.com/libp2p/go-libp2p-core/connmgr/connmgr.go
Package connmgr : This file is forked from github.com/libp2p/go-libp2p-core/connmgr/connmgr.go
p2p/encoder
Package encoder allows for registering custom data encoders for information sent as raw bytes over the wire via p2p to other nodes.
Package encoder allows for registering custom data encoders for information sent as raw bytes over the wire via p2p to other nodes.
p2p/peers
Package peers provides information about peers at the Ethereum protocol level.
Package peers provides information about peers at the Ethereum protocol level.
powchain
Package powchain defines the services that interact with the ETH1.0 of Ethereum.
Package powchain defines the services that interact with the ETH1.0 of Ethereum.
rpc
Package rpc defines the services that the beacon-chain uses to communicate via gRPC.
Package rpc defines the services that the beacon-chain uses to communicate via gRPC.
rpc/testing
Package testing is a generated GoMock package.
Package testing is a generated GoMock package.
sync
Package sync TODO(3147): Add details on how sync works.
Package sync TODO(3147): Add details on how sync works.
contracts
endtoend
proto
bls
Package bls implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
Package bls implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
bytesutil
Package bytesutil defines helper methods for converting integers to byte slices.
Package bytesutil defines helper methods for converting integers to byte slices.
cmd
Package cmd defines the command line flags for the shared utlities.
Package cmd defines the command line flags for the shared utlities.
debug
Package debug defines useful profiling utils that came originally with go-ethereum.
Package debug defines useful profiling utils that came originally with go-ethereum.
featureconfig
Package featureconfig defines which features are enabled for runtime in order to selectively enable certain features to maintain a stable runtime.
Package featureconfig defines which features are enabled for runtime in order to selectively enable certain features to maintain a stable runtime.
logutil
Package logutil creates a Multi writer instance that write all logs that are written to stdout.
Package logutil creates a Multi writer instance that write all logs that are written to stdout.
mclockutil
Package mclockutil is a wrapper for a monotonic clock source
Package mclockutil is a wrapper for a monotonic clock source
mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
params
Package params defines important constants that are essential to the Ethereum 2.0 services.
Package params defines important constants that are essential to the Ethereum 2.0 services.
roughtime
Package roughtime is a wrapper for a roughtime clock source
Package roughtime is a wrapper for a roughtime clock source
sliceutil
Package sliceutil implements set operations for specified data type Currently types which are tested and supported are: []uint32 []int32 []string []float32 []uint64 []int64 []string []float64 Intersection, Union, Not , IsIn are the operations which are supported on slices
Package sliceutil implements set operations for specified data type Currently types which are tested and supported are: []uint32 []int32 []string []float32 []uint64 []int64 []string []float64 Intersection, Union, Not , IsIn are the operations which are supported on slices
testutil
Package testutil defines the testing utils such as asserting logs.
Package testutil defines the testing utils such as asserting logs.
This code was adapted from https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/usage.go
This code was adapted from https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/usage.go
beaconclient
Package beaconclient defines a service that interacts with a beacon node via a gRPC client to listen for streamed blocks, attestations, and to submit proposer/attester slashings to the node in case they are detected.
Package beaconclient defines a service that interacts with a beacon node via a gRPC client to listen for streamed blocks, attestations, and to submit proposer/attester slashings to the node in case they are detected.
db
detection
Package detection defines a service that reacts to incoming blocks/attestations by running slashing detection for double proposals, double votes, and surround votes according to the eth2 specification.
Package detection defines a service that reacts to incoming blocks/attestations by running slashing detection for double proposals, double votes, and surround votes according to the eth2 specification.
rpc
tools
analyzers/errcheck
Package errcheck implements an static analysis analyzer to ensure that errors are handled in go code.
Package errcheck implements an static analysis analyzer to ensure that errors are handled in go code.
blocktree
* * Block tree graph viz * * Given a DB, start slot and end slot.
* * Block tree graph viz * * Given a DB, start slot and end slot.
bootnode
* * Bootnode * * A node which implements the DiscoveryV5 protocol for peer * discovery.
* * Bootnode * * A node which implements the DiscoveryV5 protocol for peer * discovery.
bootnode-query
Bootstrap / DHT query tool Usage: bazel run //tools/boostrap-query -- $BOOTNODE_ADDRESS This tool queries the bootstrap / DHT node for peers then attempts to dial and ping each of them.
Bootstrap / DHT query tool Usage: bazel run //tools/boostrap-query -- $BOOTNODE_ADDRESS This tool queries the bootstrap / DHT node for peers then attempts to dial and ping each of them.
contract-addr
* * This tool exists to serve currently configured contract address in k8s.
* * This tool exists to serve currently configured contract address in k8s.
enr-calculator
This binary is a simple rest API endpoint to calculate the ENR value of a node given its private key,ip address and port.
This binary is a simple rest API endpoint to calculate the ENR value of a node given its private key,ip address and port.
eth1exporter
Prometheus exporter for Ethereum address balances.
Prometheus exporter for Ethereum address balances.
forkchecker
* * Fork choice checker * * A gRPC client that polls beacon node at every slot to log or compare nodes current head.
* * Fork choice checker * * A gRPC client that polls beacon node at every slot to log or compare nodes current head.
interop/convert-keys
Used for converting keys.yaml files from eth2.0-pm for interop testing.
Used for converting keys.yaml files from eth2.0-pm for interop testing.
relaynode
* * Relay node * * A simple libp2p relay node peers to connect inbound traffic behind a NAT or * other network restriction.
* * Relay node * * A simple libp2p relay node peers to connect inbound traffic behind a NAT or * other network restriction.
This code was adapted from https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/usage.go
This code was adapted from https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/usage.go
client
Package client represents the functionality to act as a validator.
Package client represents the functionality to act as a validator.
db
db/iface
Package iface exists to prevent circular dependencies when implementing the database interface.
Package iface exists to prevent circular dependencies when implementing the database interface.
internal
Package internal is a generated GoMock package.
Package internal is a generated GoMock package.
node
Package node defines a validator client which connects to a full beacon node as part of the Ethereum Serenity specification.
Package node defines a validator client which connects to a full beacon node as part of the Ethereum Serenity specification.

Jump to

Keyboard shortcuts

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