Receiver

Receivers subscribe to the Marlin relay network and want to receive blocks as soon as it is produced by miners. They can be other miners or full nodes run by other parties like exchanges, wallets, etc.

Receivers enter the network by paying a subscription fee and subscribing to epochs. They can subscribe to a required number of chunks based on their redundancy requirements by paying a higher or lower subscription fee as applicable.

Once subscribed, a receiver is allowed to join the network by connecting to the relayers. They connect to all the clusters by initially selecting a random relayer in each cluster and choosing better relayer as they discover more of them.

Receivers receive the erasure coded chunks from the clusters. They verify if the erasure coded chunk was supposed to be propagated by the cluster based on the deterministic function and if chunk is valid. Messages which the cluster doesn't sign aren't accepted by the receiver. In case the cluster propagates invalid messages, that can be used as a proof to slash the cluster which ensures that clusters doesn't send random messages and spam the network. Receivers also rate limit the number of messages that a cluster can send in a given time period as a spam prevention mechanism.