Dragon’s key design feature is its modular architecture. Each token analysis is packaged as a bite-sized data module that evaluates one specific dimension of a token project such as liquidity flow, smart money inflow, team wallet behavior, or developer history.
Dragon launches with four prototype modules, but the goal is an open platform for community-development where anyone can propose and submit a module sourcing on- or off-chain data.
This bounty is to develop the prototype module for:
4. Cluster Analysis
- This module produces an overview of all the holder wallets that have transferred the token freely between themselves, instead of buying directly from an exchange. Our defintion of cluster at this stage includes three types of token transfers between holder wallets:
A) SOL
,B) The token held
, ORC) SOL and/or the token held
(more details in the example below). The specific data to be retrieved includes total % held in active clusters, # of wallets per cluster, and more. You can learn more about clusters in this video from Bubblemaps. We understand that our definition of a cluster is on a smaller scale than theirs.
This module currently gathers data by web-scraping Bubblemaps. The task is to build a pipeline that connects it to a Solana RPC (eg. Helius) and replace all scrapes if possible. If any data can not be retrieved from RPC, the developer can use whatever means necessary given the goals stated in the Module Details below.
If the data retrieved is as close to real-time as possible, Dragon becomes an unbeatable DYOR companion in the trenches.
dragon-data-modules/
├── package.json # Project metadata and node dependencies
├── README.md # This file
├── src
│ ├── api
│ │ └── server.js # Express API server for data storage and retrieval which connects to the endpoints
│ ├── config
│ │ └── config.js # Configuration file (ports, API keys, RPC endpoint)
│ ├── modules
│ │ ├── bundleAnalysis.js # Module for Bundle Analysis
│ │ ├── clusterAnalysis.js # Module for Cluster Analysis
│ │ ├── tokenInfo.js # Module for Token Info
│ │ └── sniperAnalysis.js # Module for Sniper Analysis
│ ├── telegram
│ │ └── telegramClient.js # Telegram API integration & message processing which is used for tokenInfo.js and sniperAnalysis.js
│ └── utils
│ ├── apiUtils.js # Utility functions for API communication
│ └── telegramUtils.js # Utility functions for parsing Telegram messages
│
└── frontend # Frontend code for the developer to test the backend
├── node_modules
├── public # Contains static assets like images and stylesheets
│ ├── css
│ │ └── styles.css
│ ├── images
│ └── js
│ ├── chart2.js
│ ├── charts.js # Contains the frontend logic and connection requests to the backend
│ └── sidepanel.js
├── lib
│ ├── fontawesome
│ ├── chart.js
│ └── vis-network.min.js
├── index.html # The main entry point of the frontend, to all scripts and server
├── package-lock.json
├── package.json # Manage dependencies and configurations for frontend
└── server.js # A backend entry point or middleware for API interaction
-
Clone the repository.
git clone https://github.com/alpha-dragon-dev/dragon-module4-clusterAnalysis.git cd dragon-module4-clusterAnalysis
-
Install dependencies.
Install all required Node.js packages by running:
npm install
-
Configure the application.
Open
src/config/config.js
and update the following parameters as needed:API_SERVER_PORT
andTELEGRAM_SERVER_PORT
: Set the ports for the API and Telegram servers.TELEGRAM_API_ID
andTELEGRAM_API_HASH
: Replace with your Telegram API credentials.HELIUS_RPC_URL
: Update with your Helius RPC endpoint and API key, or replace with another RPC service's of your choice. This endpoint is used for blockchain data queries.
-
Run the servers.
Start the API server in one terminal:
npm start
And then start the Telegram client (which also includes a small Express server) in another terminal:
npm run telegram
-
View results in the testing environment.
Start the API server to fetch data from backend:
cd frontend npm install npm start
View results on:
http://localhost:8080/
- Module Name: Cluster Analysis
- Bounty: 0.10% of $DRAGON supply
- Goals: Retrieve all data below in real-time and with extremely high accuracy.
A cluster is any group of wallets that interact in 1 of 3 ways: SOL transfer
, Token transfer
, OR Combo
. A Combo
cluster could be when Wallet A sends SOL to Wallet B and then sends the token of interest to Wallet C. We would aggregate the % of token held between the 3 of these wallets, and call them one cluster.
-
Total % in active clusters:
The total amount of token supply actively held, in wallets that transferred the token or SOL between themselves.
Example Output:14.7
-
Total # of active clusters
The total number of clusters that are still holding token supply.
Example Output:3
-
Metadata for each active cluster
-
% active in cluster
The amount of token supply actively held within the cluster, as defined [above](###cluster example). There may be multiple values to fetch, depending on the total # of active clusters.
Example Output:3.5
-
# of wallets in cluster
The number of distinct wallets within the cluster. There may be multiple values to fetch, depending on the total # of active clusters.
Example Output:4
-
-
Total # of inactive clusters
The total number of clusters that are no logner holding token supply, ie. all have sold to 0%.
Example Output:12
-
Metadata for each inactive cluster
- # of wallets in cluster
The number of distinct wallets within the cluster. There may be multiple values to fetch, depending on the total # of inactive clusters.
Example Output:4
- # of wallets in cluster
We have included a testing environment where you can see your code displayed live in the module. The test module will be interactive, meaning you can hover to reveal the metadata per cluster. Note: The module output will only display active clusters.
We will select a recipient for this bounty based on the following criteria, in order of evaluation:
- A fully complete retrieval of the data outlined in Module Details
- Closest to 100% accuracy for all data retrieved
- Closest to immediate for data retrieval, and updated in real-time
- Most comprehensive documentation of the work in accompanying readme file
If there is more than one developer to satisfy the above criteria, the first pull request will receive the bounty.
Please make sure to include your Solana wallet address when you submit your documentation. This is the address where we will send the token bounty if your submission is selected.
Helius is an example of an RPC service that enables quick and direct access to on-chain data on Solana. By integrating RPCs into Dragon's data-modules, we can replace slow web-scraping techniques and increase data accuracy.
How to update the code (with Helius)
- Modify the stub functions: In files like
src/modules/tokenInfo.js
andsrc/api/server.js
, update the stub implementations to call the appropriate Helius RPC endpoints. - Leverage the configured endpoints: Use the
HELIUS_RPC_URL
fromsrc/config/config.js
to ensure that your RPC calls are directed to the correct endpoint with your API key. - Improve performance: Integrate batching of RPC calls if necessary to further improve response time.
Note: If any data can not be retrieved from RPC, or if data can be faster retrieved via another method such as data streams, the developer can implement the alternative method with a brief explanation for their choice.
-
Fork the repository.
-
Create a feature branch.
git checkout -b feature/updated-module
-
Replace
server.js
,tokenInfo.js
,apiUtils.js
, andtelegramUtils.js
with your stub functions. -
Commit your changes.
git commit -am 'Add updated module for XYZ'
-
Push the branch.
git push origin feature/updated-module
-
Open a pull request describing your changes and the code you have contributed.
Dragon’s vision is for everyday traders to discover alpha as composable data sourced by open intelligence. If you have an idea for a token analysis to contribute, please consider proposing it to the community in the discussion here.
If it receives significant support, we'll create a bounty to develop it!
Please report any bugs with this module through the issues tab here.
This project is open source and available under the MIT License.
Website | Telegram | X | Discussion