Proof of Concept of an Achievement System for Rarity

Why create an Achievement System?

What does it do?

For the summoner

  • Track the total amount of achievement points earned by the summoner while playing the game
  • Track the list of achievements earned

For the other contracts

  • Enable a way to unlock achievements when the user interacts with a contract
  • Enable to unlock content if the user has reached a certain amount of achievements points

How does it work?

  • Achievements are bonded to the Summoner and not the Player
  • Summoner’s achievements are unique. You can’t unlock the same Achievement more than one time (at least for the moment).
  • Only whitelisted (approved by the Achievement System owner) contracts can add Achievements Metadata
  • Each contract can add a maximum of 10 achievements (this number needs to be defined better)
  • A contract can unlock a summoner’s achievement only if it’s the owner. For example, ContractA can unlock AchievementZ to summoner only if that specific achievement has been added by the ContractA itself. ContractA cannot ask the system to unlock an achievement owned by ContractB.

What does this enable for the ecosystem?

  • Players are more engaged to play the game to earn achievements
  • Contract with achievements will be used more
  • The overall longevity of the Rarity game is extended
  • Other contracts / dApp could enable some content only if the user has reached a minimum level of achievements points
  • Achievements points (that’s just an idea) could be “burned” to purchase specific item payable with achievements points instead of golds
  • More concepts to come

What needs to be done? How could you help?

What I don’t like of the current implementation

  • “centralized” way to whitelist contracts that can add and unlock summoner’s achievements
  • contracts needs to hold FTM in order to whitelist and unlock achievements because it costs gas
  • the current “flow” it’s not superfluid, each contract must be whitelisted by hand and they need to implement a method that calls the whitelistAchievements



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store