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.