Sui.

Допис

Діліться своїми знаннями.

290697tz.
Jul 22, 2025
Питання та відповіді експертів

Як функціонують епохи та набори валідаторів у механізмі PoS Sui?

Я намагаюся зрозуміти цей аспект мережі Sui, тому що я або будую, налагоджую або розгортаю щось, що стосується цієї області. Я хочу детальне пояснення того, як працює цей механізм або функція, разом із відповідним використанням CLI, структурою переміщення коду або архітектурними концепціями. Моя мета — отримати достатню ясність, щоб застосувати ці знання в реальному проекті — будь то спеціальний смарт-контракт, система NFT, інтеграція гаманця чи інструмент DeFi. Мережа Sui має унікальні особливості порівняно з мережами EVM, тому мене особливо цікавить, що її відрізняє та як це впливає на найкращі практики розробки. Це допомогло б мати зразок коду, приклади командного рядка або типові помилки, на які слід стежити, особливо під час використання Sui CLI, SDK або розгортання в localnet/testnet. Зрештою, я хочу уникнути поширених помилок, дотримуватися найкращих принципів безпеки та гарантувати, що функціональність, над якою я працюю, поводиться так, як очікувалося в реалістичних умовах.

  • Sui
  • Architecture
  • SDKs and Developer Tools
  • Transaction Processing
5
7
Поділитися
Коментарі
.

Відповіді

7
shamueely.
Jul 22 2025, 21:10

Механізм Proof-of-Stake (PoS) Sui інтегрує епохи та набори валідаторів для забезпечення безпеки мережі та консенсусу, значно відрізняючись від ланцюгів EVM. Ось детальне пояснення, адаптоване до ваших цілей розвитку:

Епохи в Суї

Sui працює в дискретних періодах часу, які називаються епохами, кожен триває приблизно 24 години (налаштовується, за замовчуванням 864 000 слотів зі швидкістю ~ 150 мс на слот). Епохи керують змінами набору валідаторів та параметрами консенсусу:

    • Структура*: Кожна епоха починається з параметрів налаштування системних транзакцій (наприклад, порогів ставок, винагород) і закінчується контрольною точкою, яка завершує зміни стану.
  • Перехід: Валідатори пропонують нову епоху за допомогою виклику переміщення системи, що вимагає угоди 2f+1 (де f - максимальна кількість несправних валідаторів). Це запускає час переконфігурації, коли мережа коротко зупиняється.
  • Призначення: Епохи дозволяють динамічне оновлення набору валідаторів, повторне делегування ставки та коригування параметрів, не зупиняючи ланцюжок.

Набори валідаторів та PoS

Sui використовує делеговану модель PoS, де валідатори вибираються на основі токенів SUI зі стейками:

  • Вибор: Валідатори повинні поставити мінімальну суму (наприклад, 30 SUI, регульована) та залучити делегування від користувачів. Найкращі N валідаторів (наприклад, 100) за загальною ставкою утворюють активний набір.
  • Консенсус: Sui використовує візантійський протокол Tolerance до помилок (BFT) (Narwhal/Bullshark) для спільних об'єктів, забезпечуючи 2f+1 чесні валідатори із загальної кількості 3f+1. Для простих транзакцій він використовує паралельну обробку без повного консенсусу.
  • Винагороди та скорочення: валідатори отримують винагороду від комісій за транзакції та перерозподілу фондів зберігання, пропорційно ставці. Неправильна поведінка (наприклад, подвійне підписання) призводить до скорочення, хоча специфіка визначається управлінням.
  • Ротація: Наприкінці епохи зміни ставки запускають новий набір валідаторів, при цьому неактивні валідатори виходять, а нові вводяться на основі рейтингу ставок.

Це контрастує з наборами статичних валідаторів EVM в ланцюгах PoS, таких як Ethereum, де зміни відбуваються за допомогою хард-форків або оновлень.

Архітектурні концепції

  • Об'єкт стану системи: Відстежує дані епохи (наприклад, час початку, набір валідатора) і оновлюється за допомогою системних переміщень.
  • Паралелізм: об'єктна модель Sui дозволяє транзакціям, що не перекриваються, обійти консенсус, зменшуючи вузькі місця, пов'язані з епохою, порівняно з послідовним виконанням EVM.
    • Час переконфігурації*: Коротка пауза (секунди) під час переходів епохи забезпечує узгодженість стану, унікальний компроміс для гнучкості.

Перемістити структуру коду

Системні ходи керують переходами епох, але розробники можуть взаємодіяти з даними епохи. Приклад:

рухатися модуль мой_модуль: :епох_трекер { використовувати sui: :епох_час: :епохЧас; використовувати sui: :tx_context: :txContext;

публічна структура epochData має ключ, store { ідентифікатор: UID, поточна епоха: u64, }

публічний запис для оновлення_епохи (дані: & mut epochData, епоха: u64, ctx: & mut txContext) { дати.поточна епоха = епоха; //Додаткова логіка на основі епохи }

публічний запис для create_epoch_tracker (ctx: & mut txContext) { нехай дані = епохДані { ідентифікатор: об'єкт: :новий (ctx), поточна_епоха: епоха_час:: поточна_епоха (ctx), }; передача: :передача (дані, tx_context: :відправник (ctx)); } }

  • Ключові точки: Використовуйте epoch_time: :current_epoch для доступу до поточної епохи. Системні переміщення (наприклад, sui_system: :request_add_validator) обмежуються управлінням.
    • Безпека*: Перевірте дані епохи, щоб запобігти маніпуляціям під час реконфігурації.

Використання CLI

Керуйте взаємодіями валідатора та даними епохи за допомогою Sui CLI:

  • Перевірка епохи: сильний удар особистий клієнт get-epoch-info

  • Вихід: Поточна епоха, час початку, набір валідатора.

  • Ставка SUI (як делегатор): сильний удар власна частка клієнта --сума 100 --валідатор --газ-бюджет 1000000

  • Слідкуйте за: Недостатнім балансом або недійсною адресою валідатора.

  • Додавання валідатора запиту (лише управління, модельоване на локальній мережі): сильний удар власний виклик клієнта --пакет -- модуль sui_system --функція запит_add_валідатор --args --gas-бюджет 1000000

  • Примітка: Потрібен ідентифікатор системного пакета та роль управління.

    • Налаштування локальної мережі*: сильний удар sui-тест-валідатор - з краном
  • Імітуйте переходи епох шляхом налаштування конфігурації (наприклад, скорочення тривалості епохи).

Кращі практики та принципи безпеки

  1. Логіка з урахуванням епох: розробляйте контракти для обробки пауз переконфігурації (наприклад, транзакції повторної спроби).
    • Моніторинг ставок: Використовуйте CLI або SDK для відстеження ставок валідатора, забезпечуючи делегування надійним вузлам.
    • Тестування*: Імітуйте переходи епох у локальній мережі за допомогою sui-test-валідатор --epoch-duration-ms 10000 для перевірки поведінки.
  • Поширена помилка: TransactionExpired під час переконфігурації—збільшити тайм-аут або повторити спробу.
  1. Безпека: Уникайте покладатися на специфічні для епохи дані без перевірки, оскільки реконфігурація може змінити стан.
  2. Реалістичні умови: Тест з різними розподілами ставок у testnet, щоб імітувати зміни набору валідаторів.

Відмінності від EVM та впливу на розвиток

    • Динамічні валідатори*: EVM PoS (наприклад, Ethereum) виправляє валідатори до оновлення, тоді як ротація на основі епохи Sui підтримує адаптивність, ідеально підходить для пулів ліквідності DeFi, які потребують частих коригувань.
  • Паралелізм: Паралелізм на рівні об'єктів Sui зменшує накладні витрати епохи, на відміну від лімітів на основі блоків EVM, що приносить користь карбування NFT або пакетним операціям гаманця.
  • Розробка: Обмеження переміщення системи Move вимагають взаємодії з управлінням, на відміну від розгортання відкритих контрактів EVM, що вимагає ретельного планування функцій, пов'язаних з валідатором.

Поширені помилки та виправлення

  • Ігнорування переконфігурації: Припускаючи, що безперервна робота не працює під час переходів. Виправлення: Реалізуйте логіку повторної спроби.
  • Недійсна частка: Ставка нижче мінімальних помилок тригерів. Виправлення: Перевірте get-epoch-info на пороги.
  • Невідповідність мережі: Використання CLI основної мережі в тестовій мережі не вдається. Виправлено: Вирівняти з цільовою мережею (наприклад, перемикач клієнта sui --env testnet).

Це стосується смарт-контрактів (логіка на основі епохи), NFT (залежна від валідатора карбування), гаманців (відстеження стейків) та DeFi (пули динамічної ліквідності). Широко протестуйте на локальній мережі/testnet, щоб забезпечити надійність через межі епохи.

4
Найкраща відповідь
Коментарі
.
MoonBags.
Jul 23 2025, 03:01

Суй працює за часовою системою, яка називається епохами. Кожна епоха триває близько 24 годин за замовчуванням, хоча це можна змінити. Ви можете уявити епохи, як ігрові раунди: на початку система встановлює правила, список валідаторів та параметри винагороди; в кінці вона блокує стан і готується до наступного раунду. При переході з однієї епохи в іншу виникає коротка пауза, яка називається часом реконфігурації, яка триває кілька секунд, коли мережа ненадовго зупиняється, щоб безпечно оновитися.

Тепер поговоримо про валідатори. Sui використовує делеговану систему Proof-of-Stake (PoS). Валідатори повинні поставити мінімальну кількість SUI (скажімо, 30 токенів) і залучити більше делегування від користувачів, щоб потрапити до верхнього списку N, який визначає, хто повинен бути в наборі активного валідатора для цієї епохи. Якщо ваш валідатор не потрапляє до вершини, він буде вигнаний під час наступного переходу епохи. Отже, суми ставок та делегування фактично визначають обертання валідатора автоматично - на відміну від Ethereum, де набори валідаторів майже фіксуються, якщо немає оновлення мережі або якоїсь пропозиції щодо управління.

8
Коментарі
.
Meaning.Sui.
Jul 23 2025, 03:07

У Sui система Proof-of-Stake (PoS) обертається навколо чогось, що називається епохами - думайте про них як про часові вікна, де набір валідаторів залишається заблокованим для запуску мережі. Кожна епоха триває близько 24 годин за замовчуванням, але її можна налаштувати. Коли починається епоха, система встановлює такі правила, як пороги ставок та хто знаходиться в наборі валідаторів. Коли він закінчується, система чисто загортає стан і готується до наступного.

Тепер ось де стає цікаво: під час перемикання між епохами мережа паузується на кілька секунд. Ця пауза називається часом реконфігурації, і вона дає системі простір для безпечного обертання валідаторів або зміни внутрішніх параметрів. Ваша програма повинна знати це, оскільки транзакції, надіслані протягом цього короткого вікна, можуть зазнати невдачі або закінчитися.

Вибір валідатора є динамічним. Якщо ви використовуєте валідатор, вам потрібно поставити деякі SUI та змусити інших делегувати вам. Мережа автоматично вибирає найкращих валідаторів за загальною ставкою та формує активний набір кожної епохи. Якщо хтось отримає більше ставки, ніж ви, вас можуть вигнати в наступному раунді. Делегатори також можуть переміщувати свою ставку кожну епоху, тому це плавно. На відміну від Ethereum, де зміни валідатора потребують оновлення протоколу, Sui просто обробляє це щодня.

Консенсус також працює по-різному. Sui використовує Narwhal і Bullshark для транзакцій спільних об'єктів, які потребують координації. Але якщо ваш додаток має справу з об'єктами, якими володіють, як-от особисті гаманці, він пропускає повний консенсус і обробляє речі паралельно. Це змінило гру, оскільки це означає, що ваші транзакції не чекають позаду непов'язаних між собою, як це роблять на Ethereum.

Всередині коду Move ви можете захопити поточну епоху за допомогою epoch_time:: current_epoch (ctx). Наприклад, якщо ви будуєте модуль, який реагує на зміни епохи, ви можете створити власний об'єкт для зберігання та оновлення значень епохи. Ось основний ескіз того, як це виглядає:

module my_module::epoch_tracker {
    use sui::epoch_time;
    use sui::tx_context::{Self, TxContext};
    use sui::object;
    use sui::transfer;

    struct EpochData has key, store {
        id: UID,
        current_epoch: u64,
    }

    public entry fun create(ctx: &mut TxContext) {
        let epoch = epoch_time::current_epoch(ctx);
        let data = EpochData { id: object::new(ctx), current_epoch: epoch };
        transfer::transfer(data, tx_context::sender(ctx));
    }

    public entry fun update(data: &mut EpochData, epoch: u64, ctx: &mut TxContext) {
        data.current_epoch = epoch;
    }
}
6
Коментарі
.
BigSneh.
Jul 29 2025, 22:39

У мережі Sui епохи та набори валідаторів є центральними компонентами її делегованої моделі консенсусу Proof-of-Stake (DPoS). Епоха в Sui - це вікно часу фіксованої тривалості (наприклад, 24 години), протягом якого певний набір валідаторів відповідає за обробку транзакцій та створення блоків. Кожна епоха починається з фази реконфігурації, де набір валідаторів може змінюватися на основі входів стейкінгу з попередньої епохи.

  1. Епохи та обертання валідатора

Кожна епоха має унікальний набір валідаторів, який визначається загальною ставкою, делегованою кожному валідатору.

Делегатори ставлять свої токени SUI валідаторам, впливаючи на те, хто приєднується до активного набору в наступній епосі.

Наприкінці епохи мережа коротко зупиняється, щоб переналаштувати, завершити контрольну точку епохи та перейти до наступного набору валідаторів.

  1. Структура набору валідаторів

Набір валідаторів зберігається в об'єкті Move, що підтримується системним модулем 0x3: :sui_system.

Кожен валідатор має метадані, включаючи відкритий ключ, суму ставки, комісію та мережеву адресу.

Валідатор структури { метадані: Метадані валідатора, голосова потужність: u64, ціна газу: u64, Коефіцієнт комісії: u64, ... }

  1. Стейкінг та делегування

Стейкери взаємодіють із системним модулем Sui через CLI або SDK, щоб делегувати ставку:

частка суми клієнта -- сума 1000000000 --валідатор <VALIDATOR_ADDRESS>

Токени зі стейками блокуються і впливають на загальну ставку валідатора на наступну епоху.

Винагороди розподіляються за межами епохи і можуть бути отримані за допомогою методу _awards.

  1. Переміщення взаємодії

Функція sui_system: :request_epoch_change викликається автоматично для обертання валідаторів.

Смарт-контракти не контролюють епохи безпосередньо, але можуть отримати доступ до інформації валідатора для управління або логіки стейкінгу за допомогою модуля sui_system.

  1. Використання CLI/SDK

Щоб запитати поточну епоху та валідатори:

власний виклик клієнта - пакет 0x3 - модуль sui_system - функція get_current_epocha власний виклик клієнта --пакет 0x3 --модуль sui_system --функція get_validator_set

З SDK:

const epochInfo = очікувати провайдер.getLatestsUISystemState (); console.log (Епохінфо.Епоха, Епохінфо.Активовідатори);

  1. Можливість управління в ланцюжку

Структура Sui дозволяє вдосконалити логіку стейкінгу або епохальні контракти, наприклад, логіку застави або ребалансування, яка викликається епохою.

  1. Поширені підводні камені

Використання застарілих адрес валідатора може призвести до невдачі стейкінгу.

Делегування занадто близько до кінця епохи може відкласти ефекти до наступного циклу.

Контракти не можуть безпосередньо отримати доступ до часу, але повинні використовувати системні дані годинника або епохи.

  1. Тестування та найкращі практики

У localnet можна імітувати переходи епохи, викликаючи:

власний генезис --епох-тривалість-мс 10000

Моніторинг переконфігурацій за допомогою події EpochChangeEvent.

  1. Безпека

Переконайтеся, що метадані валідатора перевірені (наприклад, немає встановленого валідатора sybil).

Контракти про винагороду повинні відстежувати епохи, щоб запобігти подвійній винагороді.

  1. Дизайн на винос

Модель PoS на основі епохи Sui забезпечує детермінізм, ізоляцію продуктивності та гнучкість делегування, які відрізняються від безперервного перемикання блок за блоком валідатора ланцюгів EVM. Розробники смарт-контрактів повинні розглядати переходи епох як межі зміни стану для логіки, яка залежить від часу, репутації валідатора або потоків стейкінгу.

Дайте мені знати, якщо вам потрібен шаблон контракту Move, який читає дані епохи або перевіряє умови на основі ставок.

2
Коментарі
.
0xduckmove.
Jul 23 2025, 03:04

У Суї час розщеплюється на шматки, які називаються епохами. Кожна епоха схожа на сеанс, який за замовчуванням триває близько 24 годин (це можна змінити). Протягом епохи валідатори обробляють транзакції, заробляють винагороди та підтримують мережу. Коли епоха закінчується, система завершує все і переходить до наступної. Цей перехід передбачає коротку паузу, яка називається часом реконфігурації, що дає мережі шанс безпечно оновити свій внутрішній стан - наче глибокий вдих перед початком наступного раунду.

Ці епохи мають вирішальне значення, оскільки саме в них можуть змінюватися набори валідаторів. Sui використовує делеговану модель PoS, тому валідатори вибираються виходячи з того, скільки SUI вони ставлять і скільки інші делегують їм. Щоб стати валідатором, вам потрібно відповідати мінімальній ставці (наприклад, 30 SUI), а щоб залишатися у верхньому наборі валідаторів, вам потрібно залучити достатню кількість делегованих ставок. Наприкінці кожної епохи система перевіряє ці рейтинги та автоматично коригує набір валідаторів - не потрібні жорсткі форки чи ручні оновлення.

Для обробки консенсусу Суй використовує протокол під назвою Narwhal і Bullshark для складних або спільних транзакцій. Це забезпечує безпеку, навіть якщо кілька валідаторів неправильно поводяться. Але для простих транзакцій, які не включають спільні об'єкти, Sui пропускає важкий консенсус і проводить їх паралельно, роблячи все швидше.

Валідатори отримують винагороду від комісій за транзакції та фонду зберігання. Якщо валідатор обманює (наприклад, підписує кілька суперечливих повідомлень), він може бути покараний (розсічений), але спосіб роботи визначається управлінням, а не жорстким кодом.

Під капотом система відстежує інформацію епохи в спеціальному он-ланцюговому об'єкті. Цей об'єкт зберігає деталі, як-от номер поточної епохи, коли він стартував, і які валідатори активні. Розробники не контролюють це безпосередньо, але ви можете прочитати поточну епоху у ваших смарт-контрактах Move за допомогою epoch_time: :current_epoch (ctx).

Якщо ви хочете писати контракти, які зберігають або реагують на зміни епохи, ви можете створити власний об'єкт для його відстеження. Існує зразок модуля «Переміщення», який показує, як це зробити, зокрема, як оновити або прочитати епоху в логіці вашого додатка.

Одна важлива річ, яку слід знати: лише управління має дозвіл викликати функції системного рівня, як-от додавання нового валідатора до набору. Як звичайний розробник, ви не можете запустити їх безпосередньо зі свого коду.

Для взаємодії з епохами і валідаторами можна використовувати Sui CLI. Ви можете перевірити поточну епоху, поставити свій SUI на валідатор або навіть імітувати поведінку валідатора в localnet. Якщо ви запускаєте тестову мережу локально, ви можете скоротити тривалість епохи (наприклад, до 10 секунд), щоб побачити, як ваша програма поводиться під час переходів.

З точки зору безпеки та тестування, переконайтеся, що ваш додаток може обробляти переходи епох. Це означає повторну спробу невдалих транзакцій, які потрапили під час переналаштування, і підтвердження того, що логіка вашого контракту все ще діє, коли епоха змінюється. Крім того, відстежуйте, до яких валідаторів ви ставите, і уникайте тих, у кого поганий час безперебійної роботи або поведінка.

Порівняно з Ethereum, який використовує переважно фіксований набір валідаторів до оновлення, набір валідаторів Sui є динамічним і коригується щодня. Ця гнучкість є потужною, особливо для таких випадків використання, як пули DeFi, які можуть потребувати частих змін у делегуванні, але це також означає, що вам потрібно розробити свою логіку навколо системи, яка завжди рухається.

Sui також підтримує паралельне виконання транзакцій, що не перекриваються, що дозволяє уникнути вузьких місць блок-поблокової системи Ethereum. Це велика виграш для великих обсягів додатків, таких як монети NFT або пакетування транзакцій гаманців.

Але оскільки Sui обмежує доступ до деяких системних функцій, на відміну від стилю EVM «розгортати що завгодно в будь-який час», вам потрібно буде планувати заздалегідь, якщо ваші функції залежать від валідаторів або епох.

1
Коментарі
.
SuiLover.
Jul 29 2025, 15:25

У Sui епохи та набори валідаторів є основними компонентами його моделі консенсусу делегованого доказу ставки (DPoS). Епоха - це фіксований період, протягом якого певний набір валідаторів відповідає за перевірку транзакцій та безпеку мережі. Наприкінці кожної епохи може бути сформований новий набір валідаторів на основі стейкінгової діяльності та рішень щодо управління. Валідатори вибираються відповідно до кількості токенів SUI, розміщених з ними, і делегатори можуть зробити ставку на свій SUI, щоб взяти участь у забезпеченні мережі та отриманні винагород. Голосова сила кожного валідатора пропорційна загальній сумі, що безпосередньо впливає на консенсус.

Механізм контрольної точки Sui допомагає завершити транзакції між валідаторами та забезпечує детермінований прогрес стану. Зміни валідатора, оновлення ставки та модифікації параметрів протоколу набувають чинності лише на початку нової епохи. Ця логіка переходу епохи закодована в модулі Move системи Sui і видима в пакеті sui-system. Розробники можуть перевіряти метадані епохи за допомогою Sui CLI за допомогою команд типу sui client call --function get_current_epoch.

На відміну від ланцюгів EVM, зміни набору валідаторів у Sui тісно пов'язані з об'єктно-центричною моделлю та суворими правилами доступу Move, що допомагає підтримувати послідовність та безпеку під час переходів. Щоб уникнути проблем з розгортанням, розробники повинні розробляти контракти, щоб уважно посилатися на інформацію про динамічний валідатор, особливо в таких програмах, як управління, інформаційні панелі стейкінгу або міжепохові робочі процеси.

1
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.