add project

This commit is contained in:
ZOMBIIIIIII
2026-04-08 14:11:27 +03:00
parent bfa95223a0
commit a81e29807c
115 changed files with 18413 additions and 0 deletions

240
contracts/DEPLOY.md Normal file
View File

@@ -0,0 +1,240 @@
# FeeSwapRouter — Инструкция по деплою
## Четыре сети — четыре подхода
| Сеть | Метод | DEX | Fee wallet | Комиссия | Нужен на газ |
|------|-------|-----|------------|----------|-------------|
| **Ethereum** (chainId 1) | Solidity контракт (Remix) | Uniswap Universal Router | `0xeDEb157eF86A4ecd1242762f339c2Bd5a0822718` | ~~1%~~**0.7%** | ETH (~$5-20) |
| **BSC** (chainId 56) | Solidity контракт (Remix) | PancakeSwap V3 Smart Router | `0xeDEb157eF86A4ecd1242762f339c2Bd5a0822718` | **0.7%** | BNB (~$0.50-1.00) |
| **TRON** | Solidity контракт (TronIDE) | SunSwap V2 Smart Router | `TYTfrem65362TFyQSARTheeYza1GQA37Ug` | **0.7%** | TRX (~50-150 TRX) |
| **Solana** | Jupiter Referral Program | Jupiter Aggregator | `Co43MKwqMRMCvhscVVrtQWvma87NEV7ba4cfo8cksgzJ` | **0.7%** | SOL (~0.01 SOL) |
Все адреса и проценты захардкожены — никаких параметров при деплое вводить НЕ НУЖНО.
**Важно**: ETH контракт уже задеплоен с 1% комиссией. Если нужно 0.7%, нужно задеплоить новый контракт.
---
## 1. Деплой FeeSwapRouter_ETH.sol (Ethereum)
**Статус: ✅ Задеплоен (1%) — `0xbdC4A97C2814E496160638d87e1F1b14154e30b6`**
**⚠️ Нужен передеплой с 0.7% если хочешь 0.7% on-chain**
### Что нужно
- MetaMask с ETH на балансе (на газ уйдёт ~$5-20)
- В MetaMask выбрана сеть **Ethereum Mainnet**
### Шаги
1. Открой https://remix.ethereum.org
2. Слева в File Explorer нажми **+** → создай файл `FeeSwapRouter_ETH.sol`
3. Вставь **ВЕСЬ** код из файла `contracts/FeeSwapRouter_ETH.sol`
4. Слева выбери вкладку **Solidity Compiler** (иконка с буквой S)
- Compiler: **0.8.20**
- **Enable optimization**: включи, runs: **200**
- Нажми **Compile FeeSwapRouter_ETH.sol**
- Должна появиться зелёная галочка (без ошибок)
5. Слева выбери вкладку **Deploy & Run Transactions** (иконка со стрелкой)
- Environment: **Injected Provider - MetaMask**
- Убедись что MetaMask на сети **Ethereum Mainnet**
- В выпадающем списке контрактов выбери **FeeSwapRouter_ETH**
- Нажми **Deploy**
- Подтверди транзакцию в MetaMask
6. После подтверждения — скопируй адрес контракта из консоли Remix
7. Сохрани адрес в `.env`:
```
FEE_SWAP_ROUTER_ETH=0x...твой_адрес...
```
### Верификация на Etherscan
- Зайди на https://etherscan.io/verifyContract
- Адрес контракта: вставь адрес из шага 6
- Compiler: Solidity 0.8.20
- Optimization: Yes, 200 runs
- License: MIT
- Код: в Remix правой кнопкой на файл → **Flatten**, вставь результат
---
## 2. Деплой FeeSwapRouter_BSC.sol (BSC)
### Что нужно
- MetaMask с BNB на балансе (на газ уйдёт ~$0.50-1.00)
- В MetaMask добавлена сеть **BNB Smart Chain**:
- RPC: `https://bsc-dataseed.binance.org`
- Chain ID: `56`
- Symbol: `BNB`
- Explorer: `https://bscscan.com`
### Шаги
1. Открой https://remix.ethereum.org
2. Создай файл `FeeSwapRouter_BSC.sol`
3. Вставь **ВЕСЬ** код из файла `contracts/FeeSwapRouter_BSC.sol`
4. Compiler → **0.8.20**, optimization ON (200 runs), Compile
5. Deploy → Injected Provider → MetaMask на сети **BNB Smart Chain**
6. Выбери контракт **FeeSwapRouter_BSC**, нажми **Deploy**, подтверди в MetaMask
7. Скопируй адрес, сохрани в `.env`:
```
FEE_SWAP_ROUTER_BSC=0x...твой_адрес...
```
### Верификация на BscScan
- Зайди на https://bscscan.com/verifyContract
- Compiler: Solidity 0.8.20
- Optimization: Yes, 200 runs
- License: MIT
- Код: в Remix → Flatten → вставь результат
---
## 3. Деплой FeeSwapRouter_TRX.sol (TRON)
**Статус: ✅ Задеплоен — `TX8E6X7X1FWYRYuYR2LTvS7zm1KchcVs5E`**
### Что нужно
- **TronLink** кошелёк (расширение для Chrome, аналог MetaMask для TRON)
- TRX на балансе (~50-150 TRX на газ)
- В TronLink выбрана сеть **TRON Mainnet**
### Шаги
1. Открой https://www.tronide.io (это Remix для TRON)
2. Слева в File Explorer нажми **+** → создай файл `FeeSwapRouter_TRX.sol`
3. Вставь **ВЕСЬ** код из файла `contracts/FeeSwapRouter_TRX.sol`
4. Compiler → **0.8.20**, optimization ON (200 runs), Compile
- ⚠️ TronIDE может не поддерживать OpenZeppelin импорты — но этот контракт
НЕ использует OpenZeppelin (ReentrancyGuard и Ownable реализованы вручную)
5. Deploy → Injected Provider → **TronLink** (должен быть установлен)
- Убедись что TronLink на сети **TRON Mainnet**
- В выпадающем списке выбери **FeeSwapRouter_TRX**
- Нажми **Deploy**, подтверди в TronLink
6. Скопируй адрес контракта (будет в формате T...)
7. Сохрани в `.env`:
```
FEE_SWAP_ROUTER_TRX=TX8E6X7X1FWYRYuYR2LTvS7zm1KchcVs5E
```
### Верификация на TronScan
- Зайди на https://tronscan.org/#/contracts/verify
- Вставь адрес контракта (T...)
- Compiler: 0.8.20
- Optimization: ON
- Код: скопируй весь контракт
### Адреса в контракте (TRON base58 → hex)
| Контракт | TRON адрес | Hex (в Solidity) |
|----------|-----------|-----------------|
| SunSwap V2 Router | `TKzxdSv2FZKQrEqkKVgp5DcwEXBEKMg2Ax` | `0x6e0617948fE030a7e4970f8389D4AD295F249b7e` |
| USDT (TRC-20) | `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` | `0xa614f803b6fd780986a42c78ec9c7f77e6ded13c` |
| WTRX | `TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR` | `0x891cdb91d149f23b1a45d9c5ca78a88d0cb44c18` |
---
## 4. Настройка комиссии на Solana (Jupiter Referral)
На Solana НЕ нужен смарт-контракт. Jupiter Aggregator **нативно поддерживает** платформенную комиссию через Referral Program.
### Что нужно
- Кошелёк Solana с ~0.01 SOL (на ренту и газ)
- Fee wallet: `Co43MKwqMRMCvhscVVrtQWvma87NEV7ba4cfo8cksgzJ`
### Шаги
#### Шаг 1: Создай Referral Account
1. Зайди на https://referral.jup.ag
2. Подключи кошелёк `Co43MKwqMRMCvhscVVrtQWvma87NEV7ba4cfo8cksgzJ`
3. Нажми **Create Referral Account**
4. Подтверди транзакцию (~0.003 SOL)
5. Скопируй **Referral Account Public Key** — это будет `JUPITER_REFERRAL_ACCOUNT`
#### Шаг 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`
```
JUPITER_REFERRAL_ACCOUNT=...твой_referral_account_pubkey...
JUPITER_FEE_BPS=70
```
#### Как это работает
Jupiter сам:
1. Считает 0.7% от суммы свапа
2. Отправляет комиссию на fee token account
3. Остальные 99.3% идут пользователю
Комиссия накапливается на token fee accounts. Можно клеймить (забирать) через https://referral.jup.ag → **Claim**.
---
## 5. Bridge комиссия (0.7%)
Комиссия на бридж работает **off-chain** — перед мостом отправляется отдельная транзакция:
| Сеть | Как берётся fee | Fee wallet |
|------|----------------|------------|
| ETH → * | Отдельный ETH/ERC20 transfer перед бриджем | `0xeDEb157eF86A4ecd1242762f339c2Bd5a0822718` |
| SOL → * | Отдельный SOL transfer перед бриджем | `Co43MKwqMRMCvhscVVrtQWvma87NEV7ba4cfo8cksgzJ` |
| TRX → * | Отдельный TRC20 transfer перед бриджем | `TYTfrem65362TFyQSARTheeYza1GQA37Ug` |
Контракт **НЕ нужен** для bridge fee — логика встроена в код кошелька (`apps/web/src/lib/bridge/execute.ts`).
---
## После деплоя — интеграция с кошельком
После получения адресов контрактов:
1. Добавить адреса в `.env`:
```
FEE_SWAP_ROUTER_ETH=0xbdC4A97C2814E496160638d87e1F1b14154e30b6
FEE_SWAP_ROUTER_BSC=0xbdC4A97C2814E496160638d87e1F1b14154e30b6
FEE_SWAP_ROUTER_TRX=TX8E6X7X1FWYRYuYR2LTvS7zm1KchcVs5E
JUPITER_REFERRAL_ACCOUNT=...referral_pubkey...
JUPITER_FEE_BPS=70
```
2. ✅ BSC swap proxy — вызывает FeeSwapRouter_BSC
3. ✅ TRX swap proxy — вызывает FeeSwapRouter_TRX
4. Обновить SOL swap proxy — добавить `platformFeeBps=70` в Jupiter запросы
5. Approve токены должны идти на адрес FeeSwapRouter (не на DEX роутер)
---
## Админ-функции (ETH, BSC, TRX контракты)
Кошелёк, с которого задеплоил — это **owner**. Доступные функции:
| Функция | Что делает |
|---------|-----------|
| `pause()` | Экстренная остановка всех свапов |
| `unpause()` | Возобновить свапы |
| `emergencyWithdrawNative()` | Вывести застрявший ETH/BNB/TRX |
| `emergencyWithdrawToken(address)` | Вывести застрявшие токены |
Вызывать через:
- **ETH**: Etherscan → Write Contract
- **BSC**: BscScan → Write Contract
- **TRX**: TronScan → Write Contract
**Важно**: комиссия (0.7%) и fee wallet захардкожены — их нельзя изменить. Это сделано специально для безопасности.
---
## Порядок деплоя (рекомендуемый)
1. ✅ ETH контракт (уже задеплоен, но с 1% — передеплоить если нужно 0.7%)
2. BSC контракт → через Remix + MetaMask
3. TRX контракт → через TronIDE + TronLink
4. SOL referral → через https://referral.jup.ag