# 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