Files
cryptowallet/contracts/DEPLOY.md
ZOMBIIIIIII a81e29807c add project
2026-04-08 14:11:27 +03:00

241 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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