Quest Protocol
  • Quest Protocol
    • Introduction to Quest Protocol
    • Mission & Principles
    • Ecosystem Challenges & Solutions
    • How it Works
  • Deploying Quests on Quest Terminal
    • Choosing an Action
    • Choosing Quest Participants
      • Allowlists
      • Our Philosophy on Sybil Resistance
    • Scheduling a Quest
    • Choosing a Reward
    • Deploying a Quest & Quest Fees
    • Monitoring a Quest
    • Withdrawing Tokens
    • FAQ
  • Protocol Rewards
    • Protocol Rewards Overview
    • Quest Referrals
  • RabbitHole
    • Completing Quests
    • Power Score
  • For Developers
    • Quest Protocol Contracts
    • How Contracts Work
    • Submitting Actions
    • Submitting Plugins
    • Submitting Tokens
    • Public API
    • Codearena Audit
Powered by GitBook
On this page

Was this helpful?

  1. For Developers

Submitting Plugins

Plugins are the future of actions

PreviousSubmitting ActionsNextSubmitting Tokens

Last updated 1 year ago

Was this helpful?

Quest Plugins are how we translate transaction data into actions. It’s how our platform can take information from smart contracts deployed for any EVM native protocol and quickly parse it into a standardized format. Using this standardized action information we determine if a given user has transactions that meet the specific criteria for a given quest.

For example, writing a plugin for Uniswap that translates a swap action allows users to create, and complete Quests to on Uniswap . The plugin is used by our Indexing service to parse transaction data into specific information about that allowing quests to target certain amounts, certain recipients, or even certain tokens.

Plugins live in our and can be developed from our templates with a few simple steps. Some protocol integrations are more difficult than others.

Plugin implementation is relatively simple, although it requires a strong understanding of the project you're integrating with. Oftentimes we rely on a projects API to get fresh and consistent information on the project we're integrating with. Each plugin has a user defined pluginID that needs to be and should be descriptive of the project you're integrating. We also require functions to return the [ getSupportedChainIds ], and [ getSupportedTokenAddresses ] for each supported chain. The supported chains and tokens are often where a project specific API can come in handy. The most complex aspect of plugin implementation is the bridge mint and swap functions which are used to return a TransactionFilter. For our backend, we store this filter in the quests actionSpec which we later read when applying filters in our indexer. The generally provides a way of finding or filtering out transactions that fulfill the requirements of a quest’s action property.

At this time we only support plugins for swap, mint, and bridge but we’re constantly adding new actions (stake forthcoming). If there’s a specific action you’d like supported please reach out.

If you'd like to build a plugin and get support for your protocol on RabbiteHole all you need to do is submit a PR with the finished plugin. When in doubt please for assistance building a plugin.

QuestDK-Plugin Repo
added to the plugin registry
list of all supported chains
the list of supported tokens
join our discord