Техническая оценка и безопасность смарт-контракта J1USD
Комплексный архитектурный анализ и отчет о верификации токен-системы J1USD на BNB Smart Chain. Внутренний технический обзор безопасности обновлений, неизменяемого контроля доступа, инвариантов предложения и сегрегации ликвидности.
Ноль критических уязвимостей
0 Critical
0 высоких / 0 критических уязвимостей в основных контрактах токена.
Фиксированный лимит эмиссии
1,000,000,000
Неизменяемый потолок в 1 000 000 000 J1USD зафиксирован в байткоде.
Разделение ролей
RBAC Partitioned
Отдельные адреса для администратора, обновления, эмиссии, сжигания и паузы.
Слоты хранения UUPS
__gap[42]
Зарезервированный зазор в 42 слота (__gap[42]) исключает конфликты памяти при обновлениях.
ПРОВЕРЕННЫЕ РАЗВЕРТЫВАНИЯ В СЕТИ
Канонические адреса контрактов и верификация
J1USD работает на основе модульного прокси-шаблона OpenZeppelin ERC-1967 UUPS. Ниже представлены проверенные исходные контракты в основной сети BNB Smart Chain.
J1USDProxy.sol
Канонический адрес токена BEP-20 для взаимодействия с пользователями. Все балансы, разрешения и состояние хранятся здесь. Совместим с Grey Wallet, MetaMask, Trust Wallet и всеми DEX на BNB Chain.
J1USDTokenUpgradeable.sol
Логика контракта содержит скомпилированные бизнес-правила, проверки соответствия, ограничения эмиссии и модификаторы ролей. Прямая инициализация заблокирована при развертывании защитой конструктора.
0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.ОЦЕНКА СООТВЕТСТВИЯ И ПОЛИТИКИ
Черные списки, заморозка счетов и правоприменение
Оценка механизмов соответствия токена. J1USD — открытый токен BEP-20, работающий по модели активных черных списков и заморозки (без белых списков), что обеспечивает максимальную открытую интероперабельность при возможности исполнения судебных предписаний.
Без белых списков (Свободные переводы без разрешений)
У J1USD НЕТ белого списка для переводов. Любой стандартный кошелек Web3 в BNB Smart Chain может свободно получать, хранить, отправлять и торговать J1USD на DEX без KYC и предварительной регистрации.
Явный функционал черного списка (Противодействие угрозам)
Специальная роль BLACKLISTER_ROLE может ограничивать вредоносные адреса, связанные с взломами, санкциями или кражами, блокируя списание и зачисление средств.
Высокоточная частичная и полная заморозка
Контракт поддерживает как freezeAccount(), так и freezeBalance(amount). При коммерческих спорах блокируется только оспариваемая сумма, сохраняя ликвидность остатка средств.
Сертифицированная правовая конфискация (Wipe)
WIPER_ROLE может уничтожать замороженные балансы только на основании вступивших в силу судебных актов. Произвольное уничтожение активов пользователей структурно исключено.
Проверка хуков байткода: _update(), _approve() и transferFrom()
Байткод выполняет строгую проверку условий списания и зачисления внутри _update(from, to, amount):
Отправитель НЕ должен быть в черном списке (!isBlacklisted), счет НЕ должен быть полностью заморожен (!isAccountFrozen), а сумма не может превышать availableBalanceOf.
Получатель НЕ должен быть в черном списке или заморожен. Исключает отмывание средств через подсанкционные кастодиальные кошельки.
Владелец и оператор токенов не должны иметь ограничений. Ограниченные субъекты не могут делегировать права или выполнять переводы третьих лиц.
АРХИТЕКТУРА СМАРТ-КОНТРАКТОВ
Механизмы безопасности и анализ инвариантов
Глубокая оценка ключевых компонентов J1USD: безопасность обновлений прокси, криптографическая дедупликация, разделение ответственности и аварийные протоколы.
Безопасность обновлений UUPS
Построено на стандарте UUPS OpenZeppelin. Переменные состояния и балансы хранятся строго в слотах прокси. Конструктор реализации вызывает _disableInitializers(), гарантируя, что базовая логика не может быть инициализирована независимо.
Инвариант жесткого лимита эмиссии
В отличие от стейблкоинов с бесконечной эмиссией, J1USD фиксирует supplyCeiling в коде. Каждый mint() проверяет condition totalSupply() + amount <= supplyCeiling. Администратор не может опустить лимит ниже текущей эмиссии.
Идемпотентная дедупликация событий
Операции выпуска и сжигания требуют уникального хэша ссылки bytes32 (issuanceReference / burnReference). Повторная попытка использовать ссылку немедленно отклоняется с ReferenceAlreadyUsed.
Таймлок при передаче прав администратора
Использует AccessControlDefaultAdminRulesUpgradeable. Передача роли администратора невозможна за один блок; требуется обязательная временная задержка (defaultAdminDelay), защищающая от перехвата ключей.
Высокоточная частичная заморозка
Вместо тотальной блокировки всего кошелька J1USD применяет freezeBalance. Спорная сумма блокируется точечно, а availableBalanceOf позволяет свободно использовать оставшиеся средства.
Защищенные системные адреса
Ключевые адреса протокола (пулы PancakeSwap, казначейство и операционная инфраструктура) имеют статус protectedSystemAddress, исключающий их заморозку или блокировку.
МАТРИЦА АВТОРИЗАЦИИ
Контроль доступа на основе ролей (RBAC)
Проверка привилегий администраторов, эмитентов, сжигателей, комплаенс- и аварийных операторов. Все функции требуют явных криптографических подписей, соответствующих назначенным ролям.
| Идентификатор роли | Привилегированные функции | Меры безопасности и инварианты |
|---|---|---|
| DEFAULT_ADMIN_ROLE0x00 (Admin Root) | Назначает роли, обновляет потолок эмиссии и регистрирует защищенные системные адреса. | Регулируется OpenZeppelin AccessControlDefaultAdminRules с обязательным таймлоком. |
| UPGRADER_ROLEkeccak256('UPGRADER_ROLE') | Авторизует обновление логики UUPS в _authorizeUpgrade(). | Строго ограничено мультисиг-управлением протокола; не может изменить состояние без развернутого кода. |
| MINTER_ROLEkeccak256('MINTER_ROLE') | Выпускает новые токены J1USD под подтвержденное обеспечение или потребности расчетов. | Строго ограничено неизменяемым supplyCeiling и уникальным issuanceReference. |
| BURNER_ROLEkeccak256('BURNER_ROLE') | Сокращает объем токенов при выкупе или погашении обязательств протокола. | Требует уникальный burnReference. Позволяет сжигать с ограниченных счетов для сохранения платежеспособности. |
| PAUSER_ROLEkeccak256('PAUSER_ROLE') | Активирует или отключает аварийную приостановку стандартных переводов. | Защитный механизм на случай непредвиденных кризисных событий или сбоев мостов. |
| BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE') | Добавляет или удаляет адреса из глобального черного списка. | Не может блокировать адреса protectedSystemAddress. Требует хэш комплаенс-отслеживания. |
| FREEZER_ROLEkeccak256('FREEZER_ROLE') | Замораживает счета целиком или частично (freezeBalance, freezeAllCurrentBalance). | Позволяет изолировать спорные суммы при сохранении ликвидности остатка. Системные адреса иммунны. |
| WIPER_ROLEkeccak256('WIPER_ROLE') | Уничтожает замороженные средства на основании судебного или регуляторного решения. | Применимо только к уже замороженным адресам; не может превышать замороженный остаток. |
| RESCUE_ROLEkeccak256('RESCUE_ROLE') | Возвращает ошибочно отправленные на контракт сторонние токены BEP-20. | Категорически запрещено взаимодействие с балансами самого токена J1USD (RescueProhibitedToken). |
ИНФРАСТРУКТУРА ЛИКВИДНОСТИ И ОЦЕНКА ПУЛОВ
Ончейн-ликвидность DEX vs Централизованные вторичные пулы
J1USD балансирует между некастодиальными децентрализованными рынками AMM на BNB Smart Chain и централизованными офчейн-книгами заявок. Ниже приведены адреса пулов, ссылки на торги и границы безопасности.
Пулы автоматических маркет-мейкеров (AMM)
Некастодиальные пулы ликвидности на смарт-контрактах, работающие на BNB Smart Chain через PancakeSwap. Нулевой риск удержания третьими лицами; сделки исполняются peer-to-contract через неизменяемый байткод.
Пул концентрированной ликвидности, обеспечивающий жесткую привязку J1USD к 1,00 USD Coin. Защищенный системный адрес с иммунитетом к заморозкам.
Децентрализованный мост AMM, связывающий утилитарный токен AirJIT (JIT) и расчетный актив (J1USD).
Внутренние пулы книги заявок
AirJIT котирует вторичные рынки по основным парам обеспечения офчейн без отдельных адресов смарт-контрактов. Сведение ордеров происходит через высокопроизводительные движки мэтчинга.
Офчейн-серверы не имеют закрытых ключей, позволяющих выпускать или сжигать токены J1USD в сети BNB Smart Chain.
Внутренние балансы счетов офчейн строго ограничены подтвержденными депозитами в ончейн-прокси-контракте.
Активные офчейн-торговые пары (Книга заявок):
РЕЗУЛЬТАТЫ ОЦЕНКИ И МОДЕЛЬ УГРОЗ
Анализ векторов атак и формальная защита
Исчерпывающий обзор экономических, математических и криптографических векторов атак, исследованных в ходе технической проверки.
Атаки повторного входа (Reentrancy)
Токен строго наследует обновления состояния ERC-20 от OpenZeppelin (_update) без внешних вызовов до фиксации балансов. Полное соответствие шаблону Checks-Effects-Interactions.
Манипуляция оракулами и спотовыми ценами
Реестр токена J1USD не обращается к внешним оракулам цен. Балансовая арифметика на 100% внутренняя, что делает атаки через мгновенные займы (flash loans) невозможными.
Захват логики реализации
Конструктор реализации выполняет _disableInitializers() при развертывании. Базовый контракт логики не может быть инициализирован или захвачен злоумышленником.
Враждебный захват управления
Переназначение ролей администратора подчиняется обязательному таймлоку (defaultAdminDelay). Компрометация единичного ключа не позволяет захватить контроль мгновенно.
ИНВАРИАНТЫ БЕЗОПАСНОСТИ
Формально проверенные инварианты безопасности
Сводка проверок на уровне байткода, гарантирующих целостность системы во всех граничных сценариях.
Соблюдение потолка эмиссии
Эмиссия отклоняется с ошибкой SupplyCeilingExceeded, если totalSupply() + amount превышает лимит. Администратору запрещено снижать потолок ниже текущей эмиссии.
Проверка supplyCeiling в функции mint()Защита от повторов при выпуске и сжигании
Каждая операция требует уникальный идентификатор bytes32. Повторное использование ссылки отклоняется с ReferenceAlreadyUsed, исключая двойное исполнение.
Таблицы _usedIssuanceReferences и _usedBurnReferencesЗащита логики реализации от захвата
Контракт реализации блокирует инициализаторы в конструкторе. Злоумышленники не могут самостоятельно завладеть контрактом логики.
Вызов _disableInitializers() в конструктореЗащита раскладки слотов памяти
Хранилище прокси соответствует ERC-1967. Резервный зазор в 42 слова гарантирует, что будущие обновления не перезапишут существующие переменные.
Стандартные слоты ERC-1967 + uint256[42] зазорЗащита от внезапного захвата прав администратора
Передача DEFAULT_ADMIN_ROLE не происходит мгновенно. Двухэтапный процесс с задержкой защищает от последствий компрометации единичного ключа.
AccessControlDefaultAdminRules с defaultAdminDelayИммунитет критической инфраструктуры
Зарегистрированные системные адреса (DEX-пулы, казначейство, контракты) нельзя заморозить или внести в черный список, что исключает DoS публичных торгов.
Проверка _requireNotProtected() в комплаенс-функцияхБлокировка самовывода при спасении токенов
Функция rescueERC20 позволяет спасти ошибочно отправленные сторонние токены, но блокирует любые попытки вывести сами токены J1USD.
Проверка RescueProhibitedToken в rescueERC20()Аварийный выключатель системы
Роль PAUSER_ROLE может мгновенно остановить переводы при кризисе, сохраняя при этом выполнение законных требований по изъятию активов.
Модификатор whenNotPaused на transfer/mint/approveТочечная заморозка спорного баланса
Позволяет заморозить спорную сумму без блокировки всего кошелька, сохраняя полную ликвидность оставшихся законных средств.
Арифметическая изоляция в availableBalanceOf()ОТВЕТСТВЕННОЕ РАСКРЫТИЕ УЯЗВИМОСТЕЙ
Сообщить об уязвимости
AirJIT поддерживает проактивную программу раскрытия уязвимостей. Если вы обнаружили дефект безопасности в прокси J1USD, реализации или смарт-контрактах, сообщите об этом ответственно.
По возможности шифруйте конфиденциальные отчеты с помощью PGP. Мы подтверждаем получение всех обращений в течение 24 часов.