Marlin Relay is a blockchain-agnostic permissionless relay network with built-in incentivization. Thus, unlike several other relay networks which are geared towards a specific blockchain, Marlin Relay is generic and can be integrated with multiple blockchains simultaneously. Furthermore, an incentive structure ensures that trustless nodes can contribute resources to the network without adversely affecting its security guarantees.
The Marlin Relay network consists of 4 entities:
- Producers: Producers introduce blocks into the network. Producers are generally miners who wish to gets their blocks propagated to other miners in the network in the shortest time to ensure that the block is not orphaned. However, any user with an incentive to propagate the block fast enough can be a producer as well. Producers are responsible for the validity of the propagated block and spam prevention mechanisms ensure that producers who introduce invalid blocks are slashed appropriately.
- Receivers: Receivers subscribe to and receive blocks from the network. Receivers can be miners, exchanges, block explorers or any other full node which can benefit from receiving the blocks as soon as possible. Receivers pay a subscription fee to the protocol to join the receiver set.
- Relayers: Relayers are the nodes which relay the block from producers to receivers with low latency. Relayers are incentivized to propagate blocks quickly as receivers only pay the subset of relayers who participate in the fastest propagation of the block to them.
- Cluster: Cluster is a collection of relayers who are collectively responsible for propagating blocks from producers to all the receivers. Clusters compete with each other to deliver the messages fastest to its receivers. Clusters are expected to be distributed across the internet such that the propagation to receivers is efficient.
Producers divide the block into multiple chunks using erasure coding, such that a subset of the chunks are sufficient to reconstruct the block. These chunks are propagated deterministically to specific clusters. Once a relayer in a cluster receives chunks from the producer, they check for invalid blocks and then propagate the block to the other relayers within the cluster. In turn, these relayers propagate the block to every receiver in the network. At the receiving end, receivers can reconstruct the block once enough chunks are received.
Every time a relayer that belongs to a cluster propagates a chunk to the receiver, the relayer receives a receipt. In every epoch(a fixed number of blocks), the subscription fees paid by the receivers is distributed among the clusters by probabilistically selecting a subset of receipts. The mechanism allows flexibility to clusters in deciding how the cluster divides the fee among the member relayers. The cluster which propagates the chunks to a large number of receivers is rewarded higher as the cluster receives a higher number of tickets and thus has higher probability of receiving rewards.
Please go through FAQs if there are any unanswered questions. In case you have any unanswered question, feel free to reach us on discord.