Diamond Pattern (EIP-2535)
Ядро системы RWANFTFI реализовано с использованием паттерна Diamond (EIP-2535). Этот архитектурный выбор позволяет протоколу обойти стандартный лимит размера смарт-контракта (24КБ), разделив функциональность на несколько независимых модулей, называемых «фасетами» (модули смарт-контрактов, доступные через единый прокси-контракт).Основные фасеты
AdminFacet
Параметры системы, роли, продажи бизнеса и минт специальных NFT.
MarketingFacet
Регистрация пользователей, покупки NFT и распределение маркетинговых вознаграждений.
FarmingFacet
Управление циклом майнинга NFTM и фарминга DA.
PaymentFacet
Депозиты, выводы, создание ваучеров и накопительные переводы.
TreeFacet
Логика 22-уровневого бинарного дерева и алгоритмы размещения пользователей.
ResolverFacet
Обработка просроченных стеков DA, сжигание ваучеров и разрешение замороженных аккаунтов.
ViewFacet
Запросы только для чтения пользовательских данных, балансов и структур дерева.
Матрица обновляемости
- Diamond Contract (EIP-2535): Обновляется через Facet cuts — позволяет добавлять, заменять или удалять отдельные модули без передеплоя всей системы.
- TokenReserve (DA): Обновляется через Transparent Proxy — обновления логики возможны без изменения адреса контракта.
- NFT (Regular, Gift, Ambassador), GovToken, AdminContract: Необновляемые — обеспечивают неизменность основных активов и правил управления.
Управление ролями
Система использует иерархическую структуру ролей (AccessControlEnumerable) для безопасного управления разрешениями:ADMIN_ROLE: Может выдавать/отзывать другие роли и изменять критически важные параметры системы.SERVICE_ROLE: Выполняется бэкенд-скриптами для автоматизированных задач (например, разрешение просроченных стеков, обработка кросс-чейн депозитов).SIGNER_ROLE: Используется для криптографической верификации подписей для авторизации определённых действий, таких как переводы ваучеров.MINTER_ROLE: Авторизована для минта определённых токенов или NFT.
Схема балансов и приоритет платежей
Для управления сложным потоком средств RWANFTFI использует многоуровневую схему балансов в смарт-контракте. Балансы пользователей:- Обычный Баланс (
balance): Основной кошелёк для доступного USDT. Средства здесь можно вывести в любое время, использовать для покупки NFT или генерации ваучеров. - Накопительный Баланс (
accumulativeBalance): Обязательный сберегательный счёт, куда 20% каждого маркетингового вознаграждения зачисляется сразу после начисления.- Использование: Может использоваться только для покупки NFT того же уровня или апгрейда до более высокого уровня.
- Комиссии: Использование этого баланса для покупок NFT облагается 20% комиссией. Перевод его другому пользователю также облагается 20% комиссией.
- 120-дневное перераспределение: Если пользователь не использует свой Накопительный Баланс в течение 120 дней, срабатывает следующий механизм:
- 70% неиспользованного баланса направляется в Пул ликвидности DA для минтинга новых токенов DA, усиливая ценовое обеспечение токена.
- 30% передаётся прямому вышестоящему спонсору пользователя.
- Если лимит дохода спонсора исчерпан (равен нулю), 30% передаются выше следующему подходящему участнику в структуре.
- Если ни у одного участника в цепочке нет активного лимита дохода, оставшиеся 30% также направляются в Пул ликвидности DA.
- Лимит (
limit): Представляет максимальный оставшийся доход, который может сгенерировать NFT.
Системные балансы
В дополнение к балансам пользователей смарт-контракт поддерживает три внутренних системных баланса:- Dev Balance (
devBalance): Накапливает платёжные комиссии и сборы для операционного финансирования. - Token Reserve Balance (
tokenReserveBalance): Пул ликвидности USDT, который на 100% обеспечивает токен DA. Каждый источник дохода в экосистеме поступает в этот пул. - Price Impact Balance (
priceImpactBalance): Специальный резерв, используемый для управления стабильностью цены токена DA в ходе определённых событий экосистемы.
Приоритет платежей
При совершении покупки смарт-контракт списывает средства в следующем порядке:Все транзакции в Binance Smart Chain требуют стандартных сетевых комиссий за газ, оплачиваемых в BNB. Пользователи должны держать небольшое количество BNB в кошельке для выполнения любых ончейн операций (покупки, выводы, переводы). Это отдельно от балансов USDT, используемых внутри экосистемы.

