Code organization
Top level packages
chain
- Code for generating the sequence of beacons (implementation of which is in chain/beacon
) after setup.
boltdb
- BoltDB storage backend. errors
- common errors for the chain package. memdb
- in-memory storage backend. postgresdb
- PostgreSQL storage backend.
client
- The drand client library - composition utilities for fail-over and reliable abstraction.
client/grpc
- The concrete gRPC client implementation. client/http
- The concrete HTTP client implementation. client/test
- Mock client implementations for testing.
cmd
- Binary entry points.
cmd/client
- A client for fetching randomness. cmd/client/lib
- A common library for creating a client shared by cmd/client
and cmd/relay
. cmd/drand-cli
- The main drand group member binary. cmd/relay
- A relay that pulls randomness from a drand group member and exposes an HTTP server interface. cmd/relay-gossip
- A relay that pulls randomness from a group member and publishes it over a libp2p gossipsub topic.
crypto
- Holds the schemes supported by drand. core
- The primary Service interface of drand comamands.
core/migration
- A library for migrating drand files from single-beacon to multi-beacon version.
demo
- A framework for integration testing. deploy
- Records of previous drand deployments. docker
- Helpers for docker image packaging. docs
- Here. entropy
- A common abstraction for ingesting randomness. fs
- Utilities for durable state storage. hooks
- Docker helper entrypoint. http
- The publicly exposed HTTP server for exposing randomness. key
- Validation of signatures. log
- Common logging library. lp2p
- Utilities for constructing a libp2p (opens new window) host.
lp2p/client
- The concrete gossip client implementation.
metrics
- The prometheus metrics server. net
- gRPC service handlers for inter-node communication. protobuf/drand
- Definitions for the wire format interface of inter-node communication. test
- Testing helper utilities.
test/docker
- Files and related scripts for testing drand networks on docker.