# Добавление нового токена

Пошаговая инструкция для добавления нового токена во все части проекта.

## Чек-лист

- [ ] 1. Backend: server.js
- [ ] 2. Frontend: TokenIcon.jsx
- [ ] 3. Frontend: остальные страницы
- [ ] 4. Telegram бот
- [ ] 5. Иконка
- [ ] 6. Деплой

## 1. Backend (server.js)

### 1.1. STAKING_CONFIG

Добавить в объект `STAKING_CONFIG`:

```javascript
NEWTOKEN: { minAmount: 1, lockPeriodDays: 4, apr: 10.0 },
```

### 1.2. Колонки БД

Добавить колонки в `wallets`. Это происходит автоматически при наличии токена в `STAKING_CONFIG` — server.js при старте проверяет и добавляет недостающие колонки через `ALTER TABLE`.

Формат: `{symbol_lower}_balance REAL DEFAULT 0.0`, `{symbol_lower}_staked REAL DEFAULT 0.0`

### 1.3. COINGECKO_IDS

Добавить маппинг для получения цены:

```javascript
COINGECKO_IDS['NEWTOKEN'] = 'coingecko-id-name';
```

Найти ID: `https://api.coingecko.com/api/v3/search?query=tokenname`

### 1.4. Сеть и адрес

В массиве `networks` (или `TOKEN_NETWORK_MAP`) указать к какой сети принадлежит токен. Если ERC-20 — адрес совпадает с ETH. Если другая сеть — нужна деривация.

В `generateAddressForTokenInfo` — добавить обработку если нужен нестандартный путь.

## 2. Frontend

### 2.1. TokenIcon.jsx — TOKEN_ICON_MAP

```javascript
NEWTOKEN: {
  mainColor: '#ЦВЕТ',
  networkColor: '#ЦВЕТ_СЕТИ',
  mainImage: '/coins/newtoken.png',
  networkImage: '/coins/network.png',
  mainSymbol: 'NEWTOKEN',
  networkSymbol: 'ETH',           // символ сети
  networkName: 'Ethereum',        // название сети
},
```

### 2.2. DashboardPage.jsx

Токен автоматически появится если есть в `TOKEN_ICON_MAP`.

### 2.3. ManageCryptoPage.jsx

Токен появится автоматически из списка поддерживаемых.

### 2.4. SwapPage.jsx

Добавить в список доступных для обмена (если нужно).

### 2.5. CurrencyPage.jsx

Автоматически работает по `:symbol`.

### 2.6. StakingPage.jsx

Автоматически работает если токен есть в `STAKING_CONFIG`.

### 2.7. EarnPage.jsx

Автоматически отображает если есть стейкинг-конфиг.

### 2.8. ReceivePage.jsx

Автоматически отображает с адресом.

### 2.9. SendModal.jsx

Автоматически работает.

## 3. Telegram бот

Бот автоматически поддерживает новые токены через `STAKING_CONFIG` — команды `/balance`, `/setbalance`, `/addbalance`, `/stake` и т.д. работают с любым токеном из конфига.

## 4. Иконка

1. Скачать PNG-иконку (размер: 128x128 или 64x64, прозрачный фон)
2. Положить в `frontend/src/` или загрузить на сервер в `/var/www/wallet-app-tr/dist/coins/newtoken.png`
3. Указать путь в `TOKEN_ICON_MAP`

## 5. Деплой

```bash
python deploy.py --code        # Обновить server.js
python deploy.py --frontend    # Пересобрать фронтенд
```

## Пример: добавление токена EXAMPLE

```javascript
// 1. server.js — STAKING_CONFIG
EXAMPLE: { minAmount: 1, lockPeriodDays: 4, apr: 12.5 },

// 2. server.js — COINGECKO_IDS
COINGECKO_IDS['EXAMPLE'] = 'example-token';

// 3. TokenIcon.jsx — TOKEN_ICON_MAP
EXAMPLE: {
  mainColor: '#FF6B00',
  networkColor: '#627EEA',
  mainImage: '/coins/example.png',
  networkImage: '/coins/eth.png',
  mainSymbol: 'EXAMPLE',
  networkSymbol: 'ETH',
  networkName: 'Ethereum',
},
```
