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 более высокого уровня.
- Комиссии: Использование этого баланса для покупок NFT облагается 20% комиссией, которая направляется в Пул ликвидности DA. Перевод его другому пользователю также облагается 20% комиссией, направляемой в Пул ликвидности DA. Любое движение Накопительного Баланса генерирует приток в Пул и создаёт основу для нового DA.
- 120-дневное перераспределение: Если пользователь не использует свой Накопительный Баланс в течение 120 дней, неиспользованный баланс перераспределяется. Распределение зависит от типа NFT пользователя:
- Держатели Regular NFT: 70% направляется в Пул ликвидности DA для минтинга новых токенов DA; 30% передаётся прямому вышестоящему спонсору пользователя.
- Держатели Gift NFT: 80% направляется в Пул ликвидности DA; 20% передаётся прямому вышестоящему спонсору (регулируется отдельным параметром
accumulativeClaimDistributeGift). - Каскадное правило (для обоих типов): Если лимит дохода спонсора исчерпан (равен нулю), доля спонсора передаётся выше следующему подходящему участнику в структуре. Если ни у одного участника в цепочке нет активного лимита дохода, вся сумма направляется в Пул ликвидности DA.
- Лимит (
limit): Представляет максимальный оставшийся доход, который может сгенерировать NFT.
Системные балансы
В дополнение к балансам пользователей смарт-контракт поддерживает три внутренних системных баланса:- Dev Balance (
devBalance): Накапливает платёжные комиссии и сборы для операционного финансирования. - Token Reserve Balance (
tokenReserveBalance): Пул ликвидности USDT, который на 100% обеспечивает токен DA. Каждый источник дохода в экосистеме поступает в этот пул. - Price Impact Balance (
priceImpactBalance): Специальный резерв, используемый для управления стабильностью цены токена DA в ходе определённых событий экосистемы.
Приоритет платежей
При совершении покупки смарт-контракт списывает средства в следующем порядке:Ваучеры (вручную)
Если пользователь явно применил ваучер при оформлении покупки, его стоимость списывается первой. Без ручного применения ваучер не используется автоматически.
Накопительный Баланс
Если пользователь выбрал использование Накопительного, он применяется со 100% покрытием (если хватает баланса) или комбинируется с Обычным Балансом. 20% комиссии направляются в Пул ликвидности DA.
Все транзакции в Binance Smart Chain требуют стандартных сетевых комиссий за газ, оплачиваемых в BNB. Пользователи должны держать небольшое количество BNB в кошельке для выполнения любых ончейн операций (покупки, выводы, переводы). Это отдельно от балансов USDT, используемых внутри экосистемы.

