Marlin Protocol Incentivized Testnet - DropsEarn
Marlin Protocol Incentivized Testnet

Marlin Protocol Incentivized Testnet

    Join at Marlin and work on interesting problems like figuring out cryptoeconomics for incentivizing full nodes to propagate blocks and transactions, creating network topologies in a rapidly changing network and finding efficient rounting paths with multiple sources and multiple destinations.

    Reward pool
    Not set
    Expected profit
    Max participants
    DropsEarn score

  • Activity Type: Testing Testnet Nodes
  • Date: from 1 Nov 2020 12:00(UTC+3)
  • Registration: Open
  • Event status: You can participate (Event started, Registration open)
  • Links: Official Announcement
Go to event page



Marlin is an open collection of protocols and related libraries that provides high-performance network infrastructure for decentralized systems.

What does Marlin give you?


The Marlin Network is able to achieve global latencies of <150ms. This enables developers to build high-performance responsive distributed systems (including blockchains and dapps).


The Marlin Network can scale to a large number of nodes without compromising on performance. Developers are no longer limited by the fanout capabilities of a single node.

What can I build using Marlin?

Some examples:

  • A blockchain/sidechain with low block times
  • A validator network with much shorter rounds
  • An efficient and performant order relay system for DEXes
  • A performant live streaming service
  • A scalable IoT data marketplace
  • A push notification system for dapps
  • A responsive multiplayer game

How do I get involved?

Run a cluster and participate in testnet.

All at Marlin work on interesting problems like figuring out cryptoeconomics for incentivizing full nodes to propagate blocks and transactions, creating network topologies in a rapidly changing network and finding efficient rounting paths with multiple sources and multiple destinations. Join to contribute ideas or join research discussions at Marlin Research.

Kickstart your application on the Marlin Network by using Multicast SDK.


The current architecture has 4 types of nodes

  • Beacon
  • Monitoring
  • Relay
  • User (Producers + Consumers)

A cluster operator is responsible for running managing the beacon, monitoring and relay nodes. Users of the network need to simply run and manage a user node.



The beacon node is similar to seed nodes or bootstrap nodes in other networks. It is the initial touchpoint using which a user discovers the other nodes in the network. See Beacon for more details.


The monitoring node is used to monitor the network by aggregating logs and metrics from the other nodes. See Monitoring for more details.


The relay nodes form the core of the network and are responsible for propagating information from one user to the others. See Relay for more details.


The user nodes produce and receive messages propagating through the network. See User for more details.

Hardware Requirements


Node Type vCPU Memory Disk space
Beacon 0.5 1 GB < 1 GB
Monitoring 2 8 GB 50 GB
Relay * 1 1 < 1 GB
User * 1 1 < 1 GB

* In the case of relay and user nodes, a full/light node of a blockchain usually runs alongside it (as shown in the diagram above) which consumes signifiant resources depending on the blockchain. Hardware requirements need to be determined accordingly. For example, team recommend 2 vCPUs, 8GB Memory and 375 GB local SSD for Ethereum.

Devops scripts

Reference scripts for provisioning and deployment of a cluster on GCP using Pulumi+Ansible are provided here. While some tweaks might be needed to customize it based on your requirements and infrastructure, it should provide a good base for any customizations.


The Marlin Protocol incentivizes relayers to propagate blocks from producers to receivers. Relayers receive 2 types of rewards:

  • Fee Rewards
  • Network Rewards

Fee Rewards

Receivers pay a subscription fee to subscribe for blocks of an epoch. Subscription fee received from all the receivers is collected into a pot which is divided among the clusters who propagate the chunks in that epoch.

Relayers who deliver the chunk to receivers receive a receipt which is created as follows by the receiver

  • Receipt = Sig(RelayerAddress + blockHash + chunkIndex, ReceiverPrivKey)

Once the relayer who delivered the chunk receives the receipt, based on the receipt a peg relayer from the same cluster is selected as follows

  • PegRelayerIndex = Hash(Receipt) mod(N)  where N is number of relayers in the cluster

The delivery relayer sends the receipt to the peg relayer for relayer signature on the receipt. This signed receipt is sent back to the delivery relayer. The hash of the signed receipt is calculated to identify the ticket.

  • Ticket = Hash(Sig(Receipt, PegRelayerPrivKey))

The fee is paid probabilistically such that only some of the tickets received by the relayers which are part of the winning range can claim the fee. Winning range is adjusted to ensure that the number of winning tickets in each epoch are constant. So if the number of redemptions are higher, then the winning range decreases and vice versa.

A portion of the fee claimed by the cluster is paid back to the receiver to ensure that receiver has skin in the game, in case receiver falsely denies receiving a message.

Network Reward

The network reward is an incentive for relayers during the initial phase to participate in the network when the number of subscribers and messages in the network are not high enough to cover the infrastructure costs. These rewards are provided to bootstrap the network and the reward value decreases over time as the organic usage of the network increases and relayers recover increasing higher portion of the costs through fees instead.