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

11 KiB
Raw Blame History

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

Адреса в контракте (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.agClaim.


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