127 lines
2.3 KiB
Markdown
127 lines
2.3 KiB
Markdown
# Hyperliquid Wallet PnL Tracker
|
|
|
|
Automatically track wallet addresses from Hyperliquid trades and sort them by highest PnL.
|
|
|
|
## Features
|
|
|
|
- 🔄 **Automatic Trade Tracking**: Real-time monitoring of trades on Hyperliquid
|
|
- 💾 **MySQL Database Storage**: Persistent storage of tracked wallets
|
|
- 📊 **PnL Sorting**: Automatically sorts wallets by highest profit/loss
|
|
- 🚀 **REST API**: Query tracked wallets and their PnL data
|
|
- 📈 **Historical Tracking**: Optional PnL snapshot history
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js >= 20.16.0
|
|
- MySQL 5.7+ or MariaDB 10.3+
|
|
- npm or yarn
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository and install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Set up MySQL database:
|
|
```bash
|
|
# Create database
|
|
mysql -u root -p < database/schema.sql
|
|
|
|
# Or manually:
|
|
# CREATE DATABASE hyperliquid_tracker;
|
|
# USE hyperliquid_tracker;
|
|
# source database/schema.sql;
|
|
```
|
|
|
|
3. Configure environment variables:
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your database credentials
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Create a `.env` file in the root directory:
|
|
|
|
```env
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=root
|
|
DB_PASSWORD=your_password
|
|
DB_NAME=hyperliquid_tracker
|
|
PORT=3000
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Development
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### Production
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Get Tracked Wallets Sorted by PnL
|
|
```bash
|
|
GET /api/wallets/tracked
|
|
```
|
|
|
|
Returns all automatically tracked wallets sorted by PnL (highest first).
|
|
|
|
### Get List of Tracked Wallets
|
|
```bash
|
|
GET /api/wallets/list
|
|
```
|
|
|
|
Returns list of all tracked wallet addresses.
|
|
|
|
### Manually Add Wallets
|
|
```bash
|
|
POST /api/wallets/track
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"wallets": ["0x123...", "0x456..."]
|
|
}
|
|
```
|
|
|
|
### Query Specific Wallets PnL
|
|
```bash
|
|
GET /api/wallets/pnl?wallets=0x123...,0x456...
|
|
```
|
|
|
|
Or POST:
|
|
```bash
|
|
POST /api/wallets/pnl
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"wallets": ["0x123...", "0x456..."]
|
|
}
|
|
```
|
|
|
|
## Database Schema
|
|
|
|
The application creates two main tables:
|
|
|
|
- **wallets**: Stores tracked wallet addresses with metadata
|
|
- **wallet_pnl_snapshots**: Optional historical PnL snapshots
|
|
|
|
See `database/schema.sql` for full schema details.
|
|
|
|
## Migration from JSON
|
|
|
|
If you have an existing `wallets.json` file, the application will automatically migrate wallets to the database on first run. The original file will be backed up to `wallets.json.backup`.
|
|
|
|
## License
|
|
|
|
ISC
|
|
|