prysm

module
Version: v1.4.4 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2021 License: GPL-3.0

README

Prysm: An Ethereum Consensus Implementation Written in Go

Build status Go Report Card ETH2.0_Spec_Version 1.0.0 Discord

This is the core repository for Prysm, a Golang implementation of the Ethereum Consensus specification, developed by Prysmatic Labs. See the Changelog for details of the latest releases and upcoming breaking changes.

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 our Discord.

Staking on Mainnet

To participate in staking, you can join the official eth2 launchpad. The launchpad is the only recommended way to become a validator on mainnet. You can explore validator rewards/penalties via Bitfly's block explorer: beaconcha.in, and follow the latest blocks added to the chain on beaconscan.

Contributing

Branches

Prysm maintains two permanent branches:

  • master: This points to the latest stable release. It is ideal for most users.
  • develop: This is used for development, it contains the latest PRs. Developers should base their PRs on this branch.
Guide

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

License

GNU General Public License v3.0

Terms of Use

Directories

Path Synopsis
beacon-chain
blockchain
Package blockchain defines the life-cycle of the blockchain at the core of Ethereum, including processing of new blocks and attestations using proof of stake.
Package blockchain defines the life-cycle of the blockchain at the core of Ethereum, including processing of new blocks and attestations using proof of stake.
blockchain/testing
Package testing includes useful mocks for writing unit tests which depend on logic from the blockchain package.
Package testing includes useful mocks for writing unit tests which depend on logic from the blockchain package.
cache
Package cache includes all important caches for the runtime of an Ethereum Beacon Node, ensuring the node does not spend resources computing duplicate operations such as committee calculations for validators during the same epoch, etc.
Package cache includes all important caches for the runtime of an Ethereum Beacon Node, ensuring the node does not spend resources computing duplicate operations such as committee calculations for validators during the same epoch, etc.
cache/depositcache
Package depositcache is the source of validator deposits maintained in-memory by the beacon node – deposits processed from the eth1 powchain are then stored in this cache to be accessed by any other service during a beacon node's runtime.
Package depositcache is the source of validator deposits maintained in-memory by the beacon node – deposits processed from the eth1 powchain are then stored in this cache to be accessed by any other service during a beacon node's runtime.
core/blocks
Package blocks contains block processing libraries according to the Ethereum beacon chain spec.
Package blocks contains block processing libraries according to the Ethereum beacon chain spec.
core/epoch
Package epoch contains epoch processing libraries according to spec, able to process new balance for validators, justify and finalize new check points, and shuffle validators to different slots and shards.
Package epoch contains epoch processing libraries according to spec, able to process new balance for validators, justify and finalize new check points, and shuffle validators to different slots and shards.
core/epoch/precompute
Package precompute provides gathering of nicely-structured data important to feed into epoch processing, such as attesting records and balances, for faster computation.
Package precompute provides gathering of nicely-structured data important to feed into epoch processing, such as attesting records and balances, for faster computation.
core/feed
Package feed defines event feed types for inter-service communication during a beacon node's runtime.
Package feed defines event feed types for inter-service communication during a beacon node's runtime.
core/feed/block
Package block contains types for block-specific events fired during the runtime of a beacon node.
Package block contains types for block-specific events fired during the runtime of a beacon node.
core/feed/operation
Package operation contains types for block operation-specific events fired during the runtime of a beacon node such as attestations, voluntary exits, and slashings.
Package operation contains types for block operation-specific events fired during the runtime of a beacon node such as attestations, voluntary exits, and slashings.
core/feed/state
Package state contains types for state operation-specific events fired during the runtime of a beacon node such state initialization, state updates, and chain start.
Package state contains types for state operation-specific events fired during the runtime of a beacon node such state initialization, state updates, and chain start.
core/helpers
Package helpers contains helper functions outlined in the Ethereum Beacon Chain spec, such as computing committees, randao, rewards/penalties, and more.
Package helpers contains helper functions outlined in the Ethereum Beacon Chain spec, such as computing committees, randao, rewards/penalties, and more.
core/state
Package state implements the whole state transition function which consists of per slot, per-epoch transitions, and bootstrapping the genesis state according to the Ethereum Beacon chain spec.
Package state implements the whole state transition function which consists of per slot, per-epoch transitions, and bootstrapping the genesis state according to the Ethereum Beacon chain spec.
core/state/interop
Package interop contains useful utilities for persisting ssz-encoded states and blocks to disk during each state transition for development purposes.
Package interop contains useful utilities for persisting ssz-encoded states and blocks to disk during each state transition for development purposes.
core/state/stateutils
Package stateutils contains useful tools for faster computation of state transitions using maps to represent validators instead of slices.
Package stateutils contains useful tools for faster computation of state transitions using maps to represent validators instead of slices.
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
Package db defines the ability to create a new database for an Ethereum Beacon Node.
Package db defines the ability to create a new database for an Ethereum Beacon Node.
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 defines the actual database interface used by a Prysm beacon node, also containing useful, scoped interfaces such as a ReadOnlyDatabase.
Package iface defines the actual database interface used by a Prysm beacon node, also containing useful, scoped interfaces such as a ReadOnlyDatabase.
db/kafka
Package kafka defines an implementation of Database interface which exports streaming data using Kafka for data analysis.
Package kafka defines an implementation of Database interface which exports streaming data using Kafka for data analysis.
db/kv
Package kv defines a bolt-db, key-value store implementation of the Database interface defined by a Prysm beacon node.
Package kv defines a bolt-db, key-value store implementation of the Database interface defined by a Prysm beacon node.
db/slasherkv
Package slasherkv defines a bolt-db, key-value store implementation of the slasher database interface for Prysm.
Package slasherkv defines a bolt-db, key-value store implementation of the slasher database interface for Prysm.
db/testing
Package testing allows for spinning up a real bolt-db instance for unit tests throughout the Prysm repo.
Package testing allows for spinning up a real bolt-db instance for unit tests throughout the Prysm repo.
forkchoice
Package forkchoice implements the service to support fork choice for the Ethereum beacon chain.
Package forkchoice implements the service to support fork choice for the Ethereum 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 the original implementation by Sigma Prime here: 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 the original implementation by Sigma Prime here: https://github.com/sigp/lighthouse/pull/804
interop-cold-start
Package interopcoldstart allows for spinning up a deterministic local chain without the need for eth1 deposits useful for local client development and interoperability testing.
Package interopcoldstart allows for spinning up a deterministic local chain without the need for eth1 deposits useful for local client development and interoperability testing.
node
Package node is the main service which launches a beacon node and manages the lifecycle of all its associated services at runtime, such as p2p, RPC, sync, gracefully closing them if the process ends.
Package node is the main service which launches a beacon node and manages the lifecycle of all its associated services at runtime, such as p2p, RPC, sync, gracefully closing them if the process ends.
operations/attestations
Package attestations defines an attestation pool service implementation which is used to manage the lifecycle of aggregated, unaggregated, and fork-choice attestations.
Package attestations defines an attestation pool service implementation which is used to manage the lifecycle of aggregated, unaggregated, and fork-choice attestations.
operations/attestations/kv
Package kv includes a key-value store implementation of an attestation cache used to satisfy important use-cases such as aggregation in a beacon node runtime.
Package kv includes a key-value store implementation of an attestation cache used to satisfy important use-cases such as aggregation in a beacon node runtime.
operations/slashings
Package slashings defines an in-memory pool of received slashing events by the beacon node, handling their lifecycle and performing integrity checks before serving them as objects for validators to include in blocks.
Package slashings defines an in-memory pool of received slashing events by the beacon node, handling their lifecycle and performing integrity checks before serving them as objects for validators to include in blocks.
operations/voluntaryexits
Package voluntaryexits defines an in-memory pool of received voluntary exit events by the beacon node, handling their lifecycle and performing integrity checks before serving them as objects for validators to include in blocks.
Package voluntaryexits defines an in-memory pool of received voluntary exit events by the beacon node, handling their lifecycle and performing integrity checks before serving them as objects for validators to include in blocks.
p2p
Package p2p implements the Ethereum consensus networking specification.
Package p2p implements the Ethereum consensus networking specification.
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 consensus protocol level.
Package peers provides information about peers at the Ethereum consensus protocol level.
p2p/testing
Package testing includes useful utilities for mocking a beacon node's p2p service for unit tests.
Package testing includes useful utilities for mocking a beacon node's p2p service for unit tests.
p2p/types
Package types contains all the respective p2p types that are required for sync but cannot be represented as a protobuf schema.
Package types contains all the respective p2p types that are required for sync but cannot be represented as a protobuf schema.
powchain
Package powchain defines a runtime service which is tasked with communicating with an eth1 endpoint, processing logs from a deposit contract, and the latest eth1 data headers for usage in the beacon node.
Package powchain defines a runtime service which is tasked with communicating with an eth1 endpoint, processing logs from a deposit contract, and the latest eth1 data headers for usage in the beacon node.
powchain/testing
Package testing provides useful mocks for an eth1 powchain service as needed by unit tests for the beacon node.
Package testing provides useful mocks for an eth1 powchain service as needed by unit tests for the beacon node.
rpc
Package rpc defines a gRPC server implementing the Ethereum consensus API as needed by validator clients and consumers of chain data.
Package rpc defines a gRPC server implementing the Ethereum consensus API as needed by validator clients and consumers of chain data.
rpc/eth/v1/beacon
Package beaconv1 defines a gRPC beacon service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
Package beaconv1 defines a gRPC beacon service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
rpc/eth/v1/debug
Package debugv1 defines a gRPC beacon service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
Package debugv1 defines a gRPC beacon service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
rpc/eth/v1/events
Package eventsv1 defines a gRPC events service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
Package eventsv1 defines a gRPC events service implementation, following the official API standards https://ethereum.github.io/eth2.0-APIs/#/.
rpc/eth/v1/node
Package nodev1 defines a gRPC node service implementation, providing useful endpoints for checking a node's sync status, peer info, genesis data, and version information.
Package nodev1 defines a gRPC node service implementation, providing useful endpoints for checking a node's sync status, peer info, genesis data, and version information.
rpc/prysm/v1alpha1/beacon
Package beacon defines a gRPC beacon service implementation, providing useful endpoints for checking fetching chain-specific data such as blocks, committees, validators, assignments, and more.
Package beacon defines a gRPC beacon service implementation, providing useful endpoints for checking fetching chain-specific data such as blocks, committees, validators, assignments, and more.
rpc/prysm/v1alpha1/debug
Package debug defines a gRPC server implementation of a debugging service which allows for helpful endpoints to debug a beacon node at runtime, this server is gated behind the feature flag --enable-debug-rpc-endpoints.
Package debug defines a gRPC server implementation of a debugging service which allows for helpful endpoints to debug a beacon node at runtime, this server is gated behind the feature flag --enable-debug-rpc-endpoints.
rpc/prysm/v1alpha1/node
Package node defines a gRPC node service implementation, providing useful endpoints for checking a node's sync status, peer info, genesis data, and version information.
Package node defines a gRPC node service implementation, providing useful endpoints for checking a node's sync status, peer info, genesis data, and version information.
rpc/prysm/v1alpha1/validator
Package validator defines a gRPC validator service implementation, providing critical endpoints for validator clients to submit blocks/attestations to the beacon node, receive assignments, and more.
Package validator defines a gRPC validator service implementation, providing critical endpoints for validator clients to submit blocks/attestations to the beacon node, receive assignments, and more.
server
Package main allows for creation of an HTTP-JSON to gRPC gateway as a binary go process.
Package main allows for creation of an HTTP-JSON to gRPC gateway as a binary go process.
state/interface
Package iface defines the actual beacon state interface used by a Prysm beacon node, also containing useful, scoped interfaces such as a ReadOnlyState and WriteOnlyBeaconState.
Package iface defines the actual beacon state interface used by a Prysm beacon node, also containing useful, scoped interfaces such as a ReadOnlyState and WriteOnlyBeaconState.
state/stategen
Package stategen defines functions to regenerate beacon chain states by replaying blocks from a stored state checkpoint, useful for optimization and reducing a beacon node's resource consumption.
Package stategen defines functions to regenerate beacon chain states by replaying blocks from a stored state checkpoint, useful for optimization and reducing a beacon node's resource consumption.
state/v1
Package v1 defines how the beacon chain state for Ethereum functions in the running beacon node, using an advanced, immutable implementation of the state data structure.
Package v1 defines how the beacon chain state for Ethereum functions in the running beacon node, using an advanced, immutable implementation of the state data structure.
sync
Package sync TODO(3147): Add details on how sync works.
Package sync TODO(3147): Add details on how sync works.
sync/initial-sync
Package initialsync includes all initial block download and processing logic for the beacon node, using a round robin strategy and a finite-state-machine to handle edge-cases in a beacon node's sync status.
Package initialsync includes all initial block download and processing logic for the beacon node, using a round robin strategy and a finite-state-machine to handle edge-cases in a beacon node's sync status.
sync/initial-sync/testing
Package testing includes useful mocks for testing initial sync status in unit tests.
Package testing includes useful mocks for testing initial sync status in unit tests.
cmd
beacon-chain
Package beacon-chain defines the entire runtime of an Ethereum beacon node.
Package beacon-chain defines the entire runtime of an Ethereum beacon node.
beacon-chain/flags
Package flags defines beacon-node specific runtime flags for setting important values such as ports, eth1 endpoints, and more.
Package flags defines beacon-node specific runtime flags for setting important values such as ports, eth1 endpoints, and more.
client-stats
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-stats/flags
Package flags contains all configuration runtime flags for the client-stats daemon.
Package flags contains all configuration runtime flags for the client-stats daemon.
slasher
Package main defines slasher server implementation for Ethereum.
Package main defines slasher server implementation for Ethereum.
slasher/flags
Package flags contains all configuration runtime flags for the slasher service.
Package flags contains all configuration runtime flags for the slasher service.
validator
Package main defines a validator client, a critical actor in Ethereum which manages a keystore of private keys, connects to a beacon node to receive assignments, and submits blocks/attestations as needed.
Package main defines a validator client, a critical actor in Ethereum which manages a keystore of private keys, connects to a beacon node to receive assignments, and submits blocks/attestations as needed.
validator/flags
Package flags contains all configuration runtime flags for the validator service.
Package flags contains all configuration runtime flags for the validator service.
contracts
components
Package components defines utilities to spin up actual beacon node and validator processes as needed by end to end tests.
Package components defines utilities to spin up actual beacon node and validator processes as needed by end to end tests.
evaluators
Package evaluators defines functions which can peer into end to end tests to determine if a chain is running as required.
Package evaluators defines functions which can peer into end to end tests to determine if a chain is running as required.
helpers
Package helpers defines helper functions to peer into end to end processes and kill processes as needed.
Package helpers defines helper functions to peer into end to end processes and kill processes as needed.
params
Package params defines all custom parameter configurations for running end to end tests.
Package params defines all custom parameter configurations for running end to end tests.
types
Package types includes important structs used by end to end tests, such as a configuration type, an evaluator type, and more.
Package types includes important structs used by end to end tests, such as a configuration type, an evaluator type, and more.
Code generated by fastssz.
Code generated by fastssz.
proto
beacon/p2p/v1
Code generated by fastssz.
Code generated by fastssz.
beacon/rpc/v1
Package ethereum_beacon_rpc_v1 is a reverse proxy.
Package ethereum_beacon_rpc_v1 is a reverse proxy.
eth/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
eth/v1alpha1
Package eth is a reverse proxy.
Package eth is a reverse proxy.
prysm/v2
Code generated by fastssz.
Code generated by fastssz.
validator/accounts/v2
Package ethereum_validator_accounts_v2 is a reverse proxy.
Package ethereum_validator_accounts_v2 is a reverse proxy.
Package shared includes useful utilities globally accessible in the Prysm monorepo.
Package shared includes useful utilities globally accessible in the Prysm monorepo.
abool
Package abool provides atomic Boolean type for cleaner code and better performance.
Package abool provides atomic Boolean type for cleaner code and better performance.
aggregation
Package aggregation contains implementations of bitlist aggregation algorithms and heuristics.
Package aggregation contains implementations of bitlist aggregation algorithms and heuristics.
attestationutil
Package attestationutil contains useful helpers for converting attestations into indexed form.
Package attestationutil contains useful helpers for converting attestations into indexed form.
benchutil
Package benchutil contains useful helpers for pregenerating filled data structures such as blocks/states for benchmarks.
Package benchutil contains useful helpers for pregenerating filled data structures such as blocks/states for benchmarks.
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.
bls/blst
Package blst implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
Package blst implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
bls/common
Package common provides the BLS interfaces that are implemented by the various BLS wrappers.
Package common provides the BLS interfaces that are implemented by the various BLS wrappers.
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.
depositutil
Package depositutil contains useful functions for dealing with Ethereum deposit inputs.
Package depositutil contains useful functions for dealing with Ethereum deposit inputs.
event
Package event contains an event feed implementation for process communication.
Package event contains an event feed implementation for process communication.
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.
gateway
Package gateway defines a grpc-gateway server that serves HTTP-JSON traffic and acts a proxy between HTTP and gRPC.
Package gateway defines a grpc-gateway server that serves HTTP-JSON traffic and acts a proxy between HTTP and gRPC.
hashutil
Package hashutil includes all hash-function related helpers for Prysm.
Package hashutil includes all hash-function related helpers for Prysm.
htrutils
Package htrutils defines HashTreeRoot utility functions.
Package htrutils defines HashTreeRoot utility functions.
interop
Package interop contains deterministic utilities for generating genesis states and keys.
Package interop contains deterministic utilities for generating genesis states and keys.
iputils
Package iputils contains useful functions for ip address formatting.
Package iputils contains useful functions for ip address formatting.
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.
mathutil
Package mathutil includes important helpers for Ethereum such as fast integer square roots.
Package mathutil includes important helpers for Ethereum such as fast integer square roots.
maxprocs
Package maxprocs automatically sets GOMAXPROCS to match the Linux container CPU quota, if any.
Package maxprocs automatically sets GOMAXPROCS to match the Linux container CPU quota, if any.
mclockutil
Package mclockutil is a wrapper for a monotonic clock source.
Package mclockutil is a wrapper for a monotonic clock source.
messagehandler
Package messagehandler contains useful helpers for recovering from panic conditions at runtime and logging their trace.
Package messagehandler contains useful helpers for recovering from panic conditions at runtime and logging their trace.
mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
p2putils
Package p2putils contains useful helpers for Ethereum consensus fork-related functionality.
Package p2putils contains useful helpers for Ethereum consensus fork-related functionality.
pagination
Package pagination contains useful pagination-related helpers.
Package pagination contains useful pagination-related helpers.
params
Package params defines important constants that are essential to Prysm services.
Package params defines important constants that are essential to Prysm services.
prometheus
Package prometheus defines a service which is used for metrics collection and health of a node in Prysm.
Package prometheus defines a service which is used for metrics collection and health of a node in Prysm.
queue
Package queue provides Vault plugins with a Priority Queue.
Package queue provides Vault plugins with a Priority Queue.
rand
Package rand defines methods of obtaining cryptographically secure random number generators.
Package rand defines methods of obtaining cryptographically secure random number generators.
runutil
Package runutil includes helpers for scheduling runnable, periodic functions.
Package runutil includes helpers for scheduling runnable, periodic functions.
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
slotutil
Package slotutil includes ticker and timer-related functions for Ethereum consensus.
Package slotutil includes ticker and timer-related functions for Ethereum consensus.
slotutil/testing
Package testing includes useful mocks for slot tickers in unit tests.
Package testing includes useful mocks for slot tickers in unit tests.
timeutils
Package timeutils is a wrapper around the go standard time library.
Package timeutils is a wrapper around the go standard time library.
tos
traceutil
Package traceutil includes useful functions for opentracing annotations.
Package traceutil includes useful functions for opentracing annotations.
tracing
Package tracing sets up jaeger as an opentracing tool for services in Prysm.
Package tracing sets up jaeger as an opentracing tool for services in Prysm.
trieutil
Package trieutil defines utilities for sparse merkle tries for Ethereum consensus.
Package trieutil defines utilities for sparse merkle tries for Ethereum consensus.
version
Package version executes and returns the version string for the currently running process.
Package version executes and returns the version string for the currently running process.
slasher
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.
cache
Package cache contains critical caches necessary for the runtime of the slasher service, such as a cache for maintaining validator history on a per epoch basis
Package cache contains critical caches necessary for the runtime of the slasher service, such as a cache for maintaining validator history on a per epoch basis
db
Package db defines a persistent backend for the slasher service.
Package db defines a persistent backend for the slasher service.
db/iface
Package iface defines an interface for the slasher database, providing more advanced interfaces such as a ReadOnlyDatabase.
Package iface defines an interface for the slasher database, providing more advanced interfaces such as a ReadOnlyDatabase.
db/kv
Package kv defines a bolt-db, key-value store implementation of the slasher database interface.
Package kv defines a bolt-db, key-value store implementation of the slasher database interface.
db/testing
Package testing defines useful helper functions for unit tests with the slasher database.
Package testing defines useful helper functions for unit tests with the slasher database.
db/types
Package types includes important database-related types for slasher-specific logic.
Package types includes important database-related types for slasher-specific logic.
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 Ethereum Beacon Chain 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 Ethereum Beacon Chain specification.
detection/attestations
Package attestations defines an implementation of a slashable attestation detector using min-max surround vote checking.
Package attestations defines an implementation of a slashable attestation detector using min-max surround vote checking.
detection/attestations/iface
Package iface defines an interface for a slashable attestation detector struct.
Package iface defines an interface for a slashable attestation detector struct.
detection/attestations/types
Package types includes important type definitions for slashable objects detected by slasher.
Package types includes important type definitions for slashable objects detected by slasher.
detection/proposals
Package proposals defines an implementation of a double-propose detector in the slasher runtime.
Package proposals defines an implementation of a double-propose detector in the slasher runtime.
detection/proposals/iface
Package iface defines an interface for a double-proposal detector struct.
Package iface defines an interface for a double-proposal detector struct.
detection/testing
Package testing includes useful helpers for slasher-related unit tests.
Package testing includes useful helpers for slasher-related unit tests.
node
Package node is the main process which handles the lifecycle of the runtime services in a slasher process, gracefully shutting everything down upon close.
Package node is the main process which handles the lifecycle of the runtime services in a slasher process, gracefully shutting everything down upon close.
rpc
Package rpc defines an implementation of a gRPC slasher service, providing endpoints for determining whether or not a block/attestation is slashable based on slasher's evidence.
Package rpc defines an implementation of a gRPC slasher service, providing endpoints for determining whether or not a block/attestation is slashable based on slasher's evidence.
spectest
general/phase0/bls
Package bls includes tests to ensure conformity with the Ethereum BLS cryptography specification.
Package bls includes tests to ensure conformity with the Ethereum BLS cryptography specification.
shared/phase0/shuffling/core/shuffle
Package shuffle contains all conformity specification tests for validator shuffling logic according to the Ethereum Beacon Node spec.
Package shuffle contains all conformity specification tests for validator shuffling logic according to the Ethereum Beacon Node spec.
utils
Package utils allows for easy switching of chain configuration parameters in spec conformity unit tests.
Package utils allows for easy switching of chain configuration parameters in spec conformity unit tests.
tools
analyzers/comparesame
Package comparesame implements a static analyzer to ensure that code does not contain comparisons of identical expressions.
Package comparesame implements a static analyzer to ensure that code does not contain comparisons of identical expressions.
analyzers/cryptorand
Package cryptorand implements a static analyzer to ensure that the crypto/rand package is used for randomness throughout the codebase.
Package cryptorand implements a static analyzer to ensure that the crypto/rand package is used for randomness throughout the codebase.
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.
analyzers/featureconfig
Package featureconfig implements a static analyzer to prevent leaking globals in tests.
Package featureconfig implements a static analyzer to prevent leaking globals in tests.
analyzers/ineffassign
Package ineffassign implements a static analyzer to ensure that there are no ineffectual assignments in source code.
Package ineffassign implements a static analyzer to ensure that there are no ineffectual assignments in source code.
analyzers/interfacechecker
Package interfacechecker implements a static analyzer to prevent incorrect conditional checks on select interfaces.
Package interfacechecker implements a static analyzer to prevent incorrect conditional checks on select interfaces.
analyzers/maligned
Package maligned implements a static analyzer to ensure that Go structs take up the least possible memory.
Package maligned implements a static analyzer to ensure that Go structs take up the least possible memory.
analyzers/nop
Package nop implements a static analyzer to ensure that code does not contain no-op instructions.
Package nop implements a static analyzer to ensure that code does not contain no-op instructions.
analyzers/properpermissions
Package properpermissions implements a static analyzer to ensure that Prysm does not use ioutil.MkdirAll or os.WriteFile as they are unsafe when it comes to guaranteeing file permissions and not overriding existing permissions.
Package properpermissions implements a static analyzer to ensure that Prysm does not use ioutil.MkdirAll or os.WriteFile as they are unsafe when it comes to guaranteeing file permissions and not overriding existing permissions.
analyzers/shadowpredecl
Package shadowpredecl implements a static analyzer which disallows declaring constructs that shadow predeclared Go identifiers by having the same name.
Package shadowpredecl implements a static analyzer which disallows declaring constructs that shadow predeclared Go identifiers by having the same name.
analyzers/slicedirect
Package slicedirect implements a static analyzer to ensure that code does not contain applications of [:] on expressions which are already slices.
Package slicedirect implements a static analyzer to ensure that code does not contain applications of [:] on expressions which are already slices.
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.
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.
gocovmerge
gocovmerge takes the results from multiple `go test -coverprofile` runs and merges them into one profile Copied, with minor changes, from https://github.com/wadey/gocovmerge under BSD-2-Clause License
gocovmerge takes the results from multiple `go test -coverprofile` runs and merges them into one profile Copied, with minor changes, from https://github.com/wadey/gocovmerge under BSD-2-Clause License
http-request-sink
Package main implements a simple, http-request-sink which writes incoming http request bodies to an append-only text file at a specified directory.
Package main implements a simple, http-request-sink which writes incoming http request bodies to an append-only text file at a specified directory.
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.
interop/split-keys
Package main provides a tool named split-keys which allows for generating any number of Ethereum validator keys from a list of BIP39 mnemonics and spreading them across any number of Prysm wallets.
Package main provides a tool named split-keys which allows for generating any number of Ethereum validator keys from a list of BIP39 mnemonics and spreading them across any number of Prysm wallets.
keystores
This tool allows for simple encrypting and decrypting of EIP-2335 compliant, BLS12-381 keystore.json files which as password protected.
This tool allows for simple encrypting and decrypting of EIP-2335 compliant, BLS12-381 keystore.json files which as password protected.
validator
accounts
Package accounts defines a new model for accounts management in Prysm, using best practices for user security, UX, and extensibility via different wallet types including HD wallets, imported (non-HD) wallets, and remote-signing capable configurations.
Package accounts defines a new model for accounts management in Prysm, using best practices for user security, UX, and extensibility via different wallet types including HD wallets, imported (non-HD) wallets, and remote-signing capable configurations.
client
Package client represents a gRPC polling-based implementation of an Ethereum validator client.
Package client represents a gRPC polling-based implementation of an Ethereum validator client.
db
db/iface
Package iface defines an interface for the validator database.
Package iface defines an interface for the validator database.
db/kv
Package kv defines a persistent backend for the validator service.
Package kv defines a persistent backend for the validator service.
keymanager/imported
Package imported defines an implementation of an on-disk, EIP-2335 keystore.json approach towards defining validator accounts in Prysm.
Package imported defines an implementation of an on-disk, EIP-2335 keystore.json approach towards defining validator accounts in Prysm.
keymanager/remote
Package remote defines an implementation of an on-disk, EIP-2335 keystore.json approach towards defining validator accounts in Prysm.
Package remote defines an implementation of an on-disk, EIP-2335 keystore.json approach towards defining validator accounts in Prysm.
node
Package node is the main process which handles the lifecycle of the runtime services in a validator client process, gracefully shutting everything down upon close.
Package node is the main process which handles the lifecycle of the runtime services in a validator client process, gracefully shutting everything down upon close.
rpc
slashing-protection/local/standard-protection-format/format
Package format defines methods to parse, import, and export slashing protection data from a standard JSON file according to EIP-3076 https://eips.ethereum.org/EIPS/eip-3076.
Package format defines methods to parse, import, and export slashing protection data from a standard JSON file according to EIP-3076 https://eips.ethereum.org/EIPS/eip-3076.
web
Package web is the service to serve the Prysm web UI.
Package web is the service to serve the Prysm web UI.

Jump to

Keyboard shortcuts

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