114 lines
3.9 KiB
Markdown
114 lines
3.9 KiB
Markdown
# Solana — Настройка комиссии через Jupiter Referral Program
|
||
|
||
На Solana **НЕ нужен** смарт-контракт. Jupiter Aggregator нативно поддерживает платформенную комиссию.
|
||
|
||
## Как работает
|
||
|
||
```
|
||
User → Jupiter Swap → 99.3% пользователю + 0.7% на Referral Fee Account
|
||
```
|
||
|
||
Jupiter сам:
|
||
1. Считает 0.7% от суммы свапа
|
||
2. Отправляет комиссию на твой fee token account
|
||
3. Остальные 99.3% идут пользователю
|
||
|
||
Комиссия накапливается на token fee accounts. Забирать (клеймить) можно через https://referral.jup.ag → **Claim**.
|
||
|
||
---
|
||
|
||
## Настройка (одноразовая)
|
||
|
||
### Шаг 1: Создай Referral Account
|
||
|
||
1. Зайди на https://referral.jup.ag
|
||
2. Подключи кошелёк `Co43MKwqMRMCvhscVVrtQWvma87NEV7ba4cfo8cksgzJ` (fee wallet для SOL)
|
||
3. Нажми **Create Referral Account**
|
||
4. Подтверди транзакцию (~0.003 SOL)
|
||
5. Скопируй **Referral Account Public Key**
|
||
|
||
### Шаг 2: Создай Token Fee Accounts
|
||
|
||
Для каждого токена нужен отдельный fee token account:
|
||
|
||
1. На https://referral.jup.ag → **Claim Token Accounts**
|
||
2. Нажми **Create Token Account** для каждого:
|
||
- **SOL** (wrapped): `So11111111111111111111111111111111111111112`
|
||
- **USDT**: `Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB`
|
||
- **USDC**: `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`
|
||
3. Подтверди каждую транзакцию (~0.002 SOL каждая)
|
||
|
||
### Шаг 3: Добавь в .env
|
||
|
||
```env
|
||
JUPITER_REFERRAL_ACCOUNT=...твой_referral_account_pubkey...
|
||
JUPITER_FEE_BPS=70
|
||
```
|
||
|
||
---
|
||
|
||
## Как поменять комиссию
|
||
|
||
Комиссия задаётся **одной переменной** в `.env`:
|
||
|
||
```env
|
||
JUPITER_FEE_BPS=70 # 0.7% (текущая)
|
||
```
|
||
|
||
Примеры значений:
|
||
|
||
| JUPITER_FEE_BPS | Комиссия |
|
||
|-----------------|----------|
|
||
| 10 | 0.1% |
|
||
| 25 | 0.25% |
|
||
| 50 | 0.5% |
|
||
| **70** | **0.7%** |
|
||
| 100 | 1.0% |
|
||
| 200 | 2.0% |
|
||
|
||
**Чтобы поменять**: просто измени `JUPITER_FEE_BPS` в `.env` и перезапусти сервер. Передеплой не нужен.
|
||
|
||
**Максимум**: Jupiter позволяет до 255 BPS (2.55%).
|
||
|
||
---
|
||
|
||
## Где это в коде
|
||
|
||
Файл: `apps/api/src/routes/sol-swap-proxy.routes.ts`
|
||
|
||
**Quote** — передаёт `platformFeeBps` в Jupiter API:
|
||
```
|
||
GET /quote?...&platformFeeBps=70
|
||
```
|
||
Jupiter возвращает quote уже с учётом комиссии — пользователь видит реальный выход.
|
||
|
||
**Build** — передаёт `feeAccount` (Referral Account) в Jupiter Swap API:
|
||
```json
|
||
{
|
||
"quoteResponse": {...},
|
||
"userPublicKey": "...",
|
||
"feeAccount": "...referral_account_pubkey..."
|
||
}
|
||
```
|
||
Jupiter встраивает инструкцию перевода комиссии прямо в транзакцию свапа.
|
||
|
||
---
|
||
|
||
## Отличие от ETH/BSC/TRX
|
||
|
||
| | ETH / BSC / TRX | Solana |
|
||
|---|---|---|
|
||
| Контракт | Свой FeeSwapRouter | Не нужен |
|
||
| Комиссия | Захардкожена в контракте | Настраивается через env |
|
||
| Изменение % | Нужен передеплой контракта | Поменять env + перезапуск |
|
||
| Где копится fee | На fee wallet напрямую | На Jupiter fee token accounts |
|
||
| Как забрать fee | Уже на кошельке | Claim через referral.jup.ag |
|
||
|
||
---
|
||
|
||
## Стоимость
|
||
|
||
- Создание Referral Account: ~0.003 SOL (~$0.50)
|
||
- Каждый Token Fee Account: ~0.002 SOL (~$0.30)
|
||
- Итого на 3 токена (SOL, USDT, USDC): ~0.009 SOL (~$1.50)
|