Building Your Plugin

A step-by-step guide to building your first plugin

Before you start to build your plugin, make sure you first have a solid understanding of the core concepts like ABI Decoding and how to use the built-in Operators.

Installation

Requirements:

  • Node v20.11.0 LTS

  • PNPM v.8.14.0 or higher

Quick Start:

Clone the repository and install dependencies

terminal
git clone https://github.com/rabbitholegg/questdk-plugins.git
cd questdk-plugins
pnpm install
pnpm build

If you are planning to submit your plugin for review, please read our contribution guidelines.

pageContribution Guidelines

Plugin Builder CLI tool

To quickly get you started building your plugin, you can use the CLI plugin creation tool. It will ask you a series of questions based on the action type you want to use and it will automatically setup the project and test files for you. To get the best results, please have some transaction hashes for the transactions you wish to recognize with your plugin, as well as some of the transaction details like token addresses and amounts if applicable.

To start the plugin builder run this command from the root of questdk-plugins:

terminal
pnpm run create

Q. What is the name of the project you are creating a plugin for?

Enter a name for your plugin project. Please use PascalCase or camelCase with no spaces, numbers or special characters (myProject, MyProject).

Q. What blockchains are the project on? (multi-select)

Select the action type that you wish to cover in your plugin. (note: our plugin builder only supports using one action type at a time)

Q. Do you want to make this package public?

Select "Yes" if you want your plugin to be published to NPM, otherwise "No".

Q. Provide a transaction hash: (Optional)

Optionally enter a transaction hash. If a transaction is found, it will continue to ask you more questions about the transaction based on what action type you have chosen. Repeat these steps for each transaction you wish to cover in your plugin.

Q. If mint is ERC-1155, please enter the tokenId

Optionally provide the tokenId if the mint is an ERC-1155 token. Skip this question if the mint is for an ERC-721 token.

Q. What is the project url? (Optional)

Optionally enter a link to your projects homepage. This info will go into the plugin-details.yml file and will be used to link to your project on Boost Protocol frontends.

Q. What is the project icon url? (Optional)

Optionally enter a url for the projects image. This logo will be shown on Boost Protocol frontends along with your boosts.

Q. What is the action specific url

Optionally enter an action specific url. This is the webpage that you would like users to start their boost from. For example, if you are making a plugin for a swap action, you may want to link to https://myproject.xyz/swap

After answering all the questions the build process will begin. Once complete you will see your newly created project in the packages/plugins directory.

Once the builder is finished, please run the following commands:

terminal
pnpm install
pnpm build
pnpm format

Once your project is setup and built, you can start implementing the transaction filter in your newly created project folder, but first lets walkthrough some of the created files we will be interacting with.

  • src/[Project].ts: The main file where we will need to implement the logic for filtering transactions.

  • src/[Project].test.ts: The projects test file. This file brings in test cases from test-transactions.ts. No changes are required unless you want to add some custom testing logic.

  • src/test-transactions.ts: This file contains the test cases that are used to test the logic and functionality of the plugin. If you provided a transaction hash and some transaction details in the CLI builder, there should be some test cases already generated for you, otherwise there will be a template you can use to make your own test cases. Please see the Testing page for more info on how to setup tests manually.

  • plugin-details.yml: Contains metadata about your plugin. This metadata includes the projects url, and an icon that will be used for display purposes on frontends like Boost Inbox.

Last updated