# Pubsub network

Drand is able to publish randomness on a libp2p (opens new window) pubsub network using the gossipsub protocol (opens new window), using what is known as a gossip relay.

# Public endpoints

The public League Of Entropy (opens new window) network provides the following 1st-tier gossip relays (all existing gossip relays will form a mesh to distribute randomness around):

  • /dnsaddr/api.drand.sh
  • /dnsaddr/api2.drand.sh
  • /dnsaddr/api3.drand.sh

The pubsub topic on which randomness is published is based to the drand's chain hash as follows:

/drand/pubsub/v0.0.0/<chain_hash>

for the public network being /drand/pubsub/v0.0.0/8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce.

# Usage

The published messages are encoded protobufs of type PublicRandResponse (opens new window).

In order to receive randomness using this method you will need to run an application that creates a libp2p host that can connect to a pubsub relay and subscribe to the pubsub topic. We recommend using drand's client libraries or the drand-client tool, which automatically perform verification for this task.

As a side note, IPFS can be used to subscribe to pubsub topics (running with ipfs daemon --enable-pubsub-experiment):

ipfs swarm connect /dnsaddr/api.drand.sh
ipfs pubsub sub /drand/pubsub/v0.0.0/8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce

(note that you will only see raw protobuf as the output though).