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 в ходе определённых событий экосистемы.
Приоритет платежей
При совершении покупки смарт-контракт списывает средства в следующем порядке:1
Ваучеры (вручную)
Если пользователь явно применил ваучер при оформлении покупки, его стоимость списывается первой. Без ручного применения ваучер не используется автоматически.
2
Накопительный Баланс
Если пользователь выбрал использование Накопительного, он применяется со 100% покрытием (если хватает баланса) или комбинируется с Обычным Балансом. 20% комиссии направляются в Пул ликвидности DA.
3
Обычный Баланс
Любая оставшаяся сумма списывается с Обычного Баланса.
Все транзакции в Binance Smart Chain требуют стандартных сетевых комиссий за газ, оплачиваемых в BNB. Пользователи должны держать небольшое количество BNB в кошельке для выполнения любых ончейн операций (покупки, выводы, переводы). Это отдельно от балансов USDT, используемых внутри экосистемы.

