Прямое взаимодействие со Smart Cycle 2
Оба режима циклов используют единый контракт SC2. Инструкции SC1 с вызовом lockup к этому адресу не применяются.
| Контракт | 0x7E7BeDfcea906A1feF682ecb4e316F6bD87587E3 |
| USDT · BEP-20 | 0x55d398326f99059ff775485246999027b3197955 |
| BNB Smart Chain | Chain ID 56 |
| LP-NFT | 7682306 |
Просмотр данных
Чтение данных не требует подписи кошельком. Вызовы, меняющие состояние, требуют подписи и BNB для оплаты газа.
getCycle(uint256) | owner · tariffId · principal · openedAt · paid · claimedPeriods |
pendingClaim(uint256) | amount · fromPeriod · toPeriod |
cycleCount() | uint256 |
isSponsorRegistered(address) | bool |
sponsorOf(address) | address |
effectiveLimits() | Limits |
quote(uint256) | uint256 · uint256 · uint256 |
- Откройте адрес SC2 в BscScan и раздел Contract → Read Contract. Если обозреватель не показывает ABI этого развёртывания, не используйте ABI старых Flow-контрактов.
- Найдите номер своего цикла в транзакции создания или личном кабинете.
cycleCount()показывает общий счётчик, а не список ваших циклов. - В
getCycle(id)проверьте владельца и параметры цикла:owner,tariffId,principal,openedAt,paid,claimedPeriods. Номер цикла SC1 не является номером цикла SC2. pendingClaim(id)возвращает расчётную сумму и границы периодов. Это расчёт по циклу, а не отдельное подтверждение ликвидности для выплаты.
Подготовка транзакции
Используйте опубликованный ABI именно этого развёрнутого контракта. Перед отправкой проверьте метод, порядок параметров, номер тарифа, единицы токена и подключённый кошелёк. Обычный перевод токенов не создаёт цикл.
| USDT | approve(address spender, uint256 amount) |
| SC2 | create(uint8 tariffId, uint256 gross, address sponsor) |
| SC2 | claim(uint256 id) |
Создание цикла. В approve получатель разрешения spender — адрес SC2 из таблицы, не кошелёк компании и не Position Manager. Проверьте decimals() токена; для указанного USDT используются 18 знаков. Например, 100 USDT = 100000000000000000000 минимальных единиц. Убедитесь в разрешении через allowance(owner, spender).
create(tariffId, gross, sponsor): tariffId берётся из таблицы ниже; gross — полная входящая сумма до комиссий, в минимальных единицах USDT. Для Test сумма ровно 10 USDT, один Test на кошелёк; для остальных тарифов минимум 10 USDT, в пределах действующих лимитов. Идентификатор 1 не используется. Доступность тарифа проверяется по effectiveLimits().tariffMask; наличие тарифа в таблице не означает, что он уже открыт.
sponsor: новый участник указывает адрес уже зарегистрированного пригласившего. Нулевой адрес выбирает SYSTEM_SPONSOR. Для уже зарегистрированного участника нулевой адрес сохраняет прежнюю привязку, а ненулевой должен совпадать с sponsorOf. Первая успешная операция create закрепляет привязку; при откате транзакции новая привязка тоже откатывается.
Получение выплаты. После проверки владельца и pendingClaim вызов claim(id) выполняется из кошелька владельца цикла. У этого метода нет параметра суммы. Проверяйте статус и события транзакции; при ошибке сначала выясните причину, а не повторяйте отправку.
Источник: предоставленные финальные исходники SmartCycle2 и SmartCycle2Final.abi.json. ABI совпадает с результатом компиляции этих исходников; методы и адреса дополнительно проверены чтением сети. Байткод воспроизведён с предоставленными настройками solc 0.8.20 и совпал с развёрнутым контрактом после подстановки подтверждённого адреса manager. Это не заключение независимого аудитора.
| tariffId | Smart Cycle 2 | duration (s) | totalBps |
| 0 | Contract Test | 300 | 10000 |
| 2 | Momentum | 432000 | 10200 |
| 3 | Confident | 864000 | 10500 |
| 4 | Trust | 1728000 | 11200 |
| 5 | Premiere | 2592000 | 12100 |
| 6 | President | 3456000 | 13200 |
| 7 | Imperium | 4320000 | 14500 |
| 8 | Marshal | 5184000 | 16000 |
| 9 | Daily Flow Core | 17280000 | 24000 |
totalBps — вся выплата по тарифу, включая первоначальную сумму: 10000 = 100%. Для Daily Flow Core 24000 = 240% за 200 дней.
SYSTEM_SPONSOR: 0x28498D22Ff08fc0309d0a82335E8960336003C6b