How the Mosaic protocol incentivizes reliable research, data, and information

Apr 11, 2018

Alpkaan Celik with Ben Fisch, Zafar Gilani, & Dr Garrick Hileman.

Misinformation and spam are common [1] and significant problems for content networks. Most networks solve these problems with a twofold approach: first, the order of content shown to users is determined by the users themselves (liking/sharing on Facebook, upvoting on Reddit, etc.), and second, if there is spam and/or bad information that is aggregated and shown to the users by the algorithms, an admin of the platform manually removes the undesirable content.

While this solution works in centralized systems, it is extremely difficult to implement in decentralized architectures. Since there is no “admin” in a decentralized blockchain-based system, someone cannot simply delete or censor a particular transaction on the network (e.g., posting a particular piece of content) if it is deemed to be spam unless they control a substantial share of the network’s computing power (e.g., > 50%) [2].

The Mosaic protocol and MZX staking mechanism

To solve this problem, we created the Mosaic token (MZX) staking system, which is the component of our protocol (MMIP) that is built to disincentivize spam and misinformation. The underlying mechanism is in fact quite simple: every time a user posts content on Mosaic, they are required to place in a smart contract escrow a certain amount of their MZX. The Mosaic smart contract holds these tokens in reserve for an amount of time. If a substantial number of people downvote the content during this time, the network keeps the tokens and places them into a predesignated pool to reward future contributors. If the content is not downvoted, then the MZX tokens are returned to their original owner.

This system encourages users not to post spam, misinformation or offensive comments. Moreover, as contributors are also compensated by the quality, accuracy, and popularity of their posts, they are also incentivized to only share reliable research, data and information. The staking mechanism performs in the following manner: every time a user posts content on the network, after the post receives 10 votes the following two functions are calculated:

  1. S(r) = 1 + r²
  2. Q(d,m) = tanh(2- d/m)


  • S is the amount of MZX tokens the user stakes for this post. Ranges from 1 to 10,001.
  • r is the reputation of the user, defined as the percentage of the user’s previous posts that are flagged as spam. Varies between 0 to 100. It’s automatically 0 for new users before their 3rd post.
  • Q is the quality of the user’s post, defined by the amount of downvotes the user receives and their seniority on the platform. Ranges from: -∞ to + ∞
  • d is the number of net downvotes received by this post, defined simply as (#Downvotes — #Upvotes). Varies from -∞ to +∞.
  • m is the amount of time the user has been a member of Mosaic, measured in days. Varies from 0 to + ∞

If Q ≥ 0 after the post receives 10 votes, then the system returns S back to the user and the post remains on the platform as it is added to the blockchain.

If Q < 0 after the post receives 10 votes, then the system flags the post as “unverified”, places the post at the bottom of the feed, and transfers S to a pool which is reserved to reward research contributions.

Since the hyperbolic tangent tanh(x) function’s output is greater than 0 when the input x is greater than 0, the consequence for this platform is:

  • 2 – d/m ≥ 0
  • 2 ≥ d/m
  • 2m ≥ d

This means that the number of net downvotes the community needs to give to mark a user’s post as unverified is twice the number of days the user has been on the platform, hence placing more trust on the more senior members of the network.

Let’s break this down with an example: suppose John is a user of Mosaic and he joined the platform 10 days ago. He writes a post on the platform that receives 3 net downvotes. He doesn’t have any previous posts that are marked as spam. So the values for this post are:

  • r = 0
  • S = 1 + 0², so John gives up 1 MZX for this post
  • d = 3
  • m = 10
  • Q = tanh(2 – 3/10) = tanh(1.7) ≈ 0.94, which is greater than 0. Therefore, this post is marked as “not spam” and 1 MZX is returned to John.

As Mosaic requires contributors to submit their real identities when joining [3] the network, this system incentivizes the honesty of the participants when they downvote content, as it directly impacts the utility they get from the system if they downvote content they actually liked. By aligning the incentives of the participants with those of the network, MMIP incentivizes the reliability of content posted on the Mosaic network.

About Mosaic:

About Mosaic

Mosaic is tackling two of the most pressing problems plaguing the cryptoasset space today: (1) unreliable and insufficient data and research; and (2) an overall painful user experience for market participants. Mosaic solves these problems by providing a database platform and decentralized market intelligence network with an intuitive user interface. By solving these two problems we believe Mosaic will become the main cryptoasset app — the gateway to the crypto world — where people get their data and research, discuss ideas with other members of the community, and manage their portfolios through the Mosaic meta-exchange. Please read our other materials here for more information about Mosaic’s strategy and product.

Follow us on our social media channels for more news on the Mosaic Network:

Twitter Facebook Telegram Linkedin Reddit


[1] How to deal with spam on Facebook:

[2] Contrary to widespread belief, so-called ‘51% attacks’ (e.g., double spending tokens or censoring transactions) can be attempted even if the attacker controls less than 50% of the network’s computing power. However, a successful attack is not guaranteed unless the attacker controls greater than 50% of the network’s mining hashrate.

[3] Real identities are enforced on the Mosaic network through identity verification (through a government issued ID document), address verification (through address details on a bank statement or a utility bill issued against the same name as on the submitted ID document), phone verification (through SMS or call), and enabling 2FA by default.