Виправлення розкладів нарахування

Клавіатура з інструментами

Команда xx labs просуває виправлення графіків надання права на 21 січня 2022 року

Огляд

Після введення в дію програми BetaNet Staking Rewards до більшості гаманців на xx network були додані нові графіки накладання. Команда xx labs виявила помилку, яка була допущена під час розрахунку цих нових графіків надання прав, і розробила виправлення, яке відновить правильні графіки.

У цій публікації ми розпочнемо з глибокого занурення в те, як працює передача прав на xx network.

Потім ми пояснимо, як була запроваджена програма BetaNet Staking Rewards, проблеми, які були виявлені після її введення в дію, і як ми виправляємо ці проблеми, які передбачають зміну неправильних графіків надання прав.

Нарешті, ми публікуємо всі переглянуті розклади надань за адресою https://vesting.xx.network для всіх власників монет у форматі даних JSON і супровідний файл PNG, що містить графіки набуття права. Ми також надаємо приклади різних сценаріїв, які вплинули на власників монет у результаті вищезгаданих проблем.

Ми внесемо ці виправлення 21 січня 2022 року.

Що таке розклади передачі

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

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

Графік передачі прав у xx network складається з трьох полів:

  • Сума, яка блокується шляхом накладання: locked
  • Сума, яка розблокує кожен блок: per_block
  • Блок, коли монети починають розблоковувати: початковий_блок


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

Приклади:

Графік нарахування монет, що надаються щомісячними траншами по 7000 для вузлів BetaNet, виглядають так:

  • locked:7000
  • per_block:7000
  • початковий_блок:1123200

У цьому прикладі встановлюється блокування 7000, яке починається з блоку 1123200 і розблокує 7000 на блок. Фактично це означає, що цей транш із 7000 монет заблоковано до блоку 1123200, і він повністю розблокується на блоці 1123201. Цей конкретний приклад стосується винагород BetaNet за січень 2021 року, оскільки 1123200 блоків дорівнює 1123200 годин (600 годин * блоків на годину) = 78 днів, що означає, що блокування закінчується 1 лютого 2022 року.

Графік розміщення монет, наданих для отримання винагород за стейкинг BetaNet, виглядає так:

  • locked:23812
  • per_block:0.009186728
  • початковий_блок:432000

У цьому прикладі розміщується блокування 23812, яке починається з блоку 432000 і розблокує 0,009186728 на блок. Це означає, що 23812 монет заблоковано до блоку 432000, а потім почнеться розблокування з 0,009186728 за блок. Ми можемо обчислити тривалість набуття правами, розділивши заблокований на per_block: 23812/0,009186728 ~= 2592000 блоків, що становить 2592000/(24*600) = 180 днів. Це означає, що значення повністю розблоковано через 6 місяців після початку передачі, 432000/(24*600) = 30 днів після запуску основної мережі.

Betanet Staking Rewards

У березні 2021 року команда оголосила про програму BetaNet Staking Rewards, яка поширюється на всіх власників монет з моменту запуску основної мережі. Програма має APY 50%, відсотки нараховуються щодня з 1 березня 2021 року до запуску основної мережі. На монети, отримані після 1 березня, нараховуються відсотки лише з дня їх вручення. Сума винагороди була розрахована для кожного власника монети та опублікована в електронній таблиці блоку genesis перед запуском основної мережі. У блоці genesis сума винагороди була налаштована для кожного власника монети в модулі претензій або безпосередньо в модулі BetaNet Staking Rewards.

Програма була розроблена з такими варіантами винагород:

  • Не надається права та 2% винагороди
  • 1 місяць передачі 100% основної суми плюс винагорода, надається 12% винагороди
  • 3 місяці передачі 90% основної суми плюс винагорода, надається 45% винагороди
  • 6 місяців передачі 80% основної суми плюс винагорода, надається загальна винагорода. Це параметр за замовчуванням, якщо вибір не зроблено
  • 9 місяців отримання 100% основної суми плюс винагорода, надається 120% винагороди


Модуль BetaNet Staking Rewards був розроблений для підтримки необхідних функцій програми. Цей модуль дозволив користувачам, які заявили свої монети на адресу xx network, вибрати потрібний варіант. Крім того, модуль був налаштований з блоком прийняття, який був встановлений на 30 днів після запуску основної мережі. Це було необхідно, щоб дати час для того, щоб громада проголосувала за прийняття програми. Програма була затверджена шляхом референдуму, на якому власники монет голосували протягом тижня.

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

Існуючі проблеми

Команда визначила 3 проблеми, які вплинули на запровадження програми BetaNet Staking Rewards:

  1. Залишок претензій – сума, яка підлягає блокуванню, була розрахована після того, як винагорода була додана до основної суми, тобто блокування = 0,8 * (основна сума + винагорода) + винагорода, замість блокування = 0,8 * основна сума + винагорода. Це призводить до більшої заблокованої суми, ніж очікувалося в багатьох залишених претензіях
  2. Розрахунок нарахування – сума, яку потрібно заблокувати, була обчислена шляхом прийняття необхідного блокування та віднімання поточної суми, яка вже була заблокована в блоці прийняття. Це було найкраще рішення, яке блокує необхідну суму від винагород, зберігаючи при цьому існуючі блокування, в результаті чого блокування завжди вищі, ніж раніше. Однак у багатьох сценаріях це рішення може призвести до заблокованих значень нижче, ніж вимагає програма, що може створити несправедливі ситуації серед власників монет, які вибрали різні варіанти. Більше того, в деяких випадках заблоковане значення починається вище, ніж потрібно, а потім падає до нижчого, ніж дозволене
  3. Неправильна виплата винагороди – розглянемо користувача, у якого є дві окремі претензії, одна без графіків передачі прав (наприклад, з початкового продажу), а інша з. Якщо обидва заявлені на ту саму адресу, зберігається лише вартість винагороди з другої. Це означає, що вартість винагороди з першої вимоги не була виплачена в блоці прийняття. Ця конкретна проблема стосується лише 3 власників монет.

Вирішення проблем

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

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

Нові розклади передачі

Інформацію про програму Vesting та BetaNet Staking Rewards для всіх власників монет можна знайти за адресою https://vesting.xx.network.

Для кожного власника монет є файл JSON, що містить таку інформацію:

  • основний: кількість монет, наявних на момент генезису
  • винагорода: винагорода, що надається, коригується відповідно до обраного варіанту
  • параметр: вибраний варіант програми BetaNet Staking Rewards
  • накладання: вся інформація щодо набуття права
    • Оригінал: графіки набуття права, наявні на момент виникнення
    • betanet_rewards: графік накладання, необхідний для нагород за ставку бетанет
    • on_chain: графіки передачі, які зараз діють у ланцюжку
    • розраховано: фіксовані графіки надання права
  • incorrect_on_chain: прапор, який потрібно вказати в наданні прав на ланцюг, неправильний


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

  • Оригінальне набуття права (ліворуч): цей графік показує оригінальні розклади набуття права (синій) разом із тим, який вимагає BetaNet Staking Rewards (оранжевий). Після введення в дію програми заблокована сума завжди має бути найбільш обмеженою, тобто max(original, betanet_rewards)
  • Передача прав у ланцюжку (в середині): цей графік показує ту ж інформацію, що й попередній, але з накладеними графіками передачі прав у мережі (зеленим кольором). Тут власники монет можуть відразу побачити, чи поточна передача недійсна, і якщо вона блокує більше, менше (або обидва) монет
  • Нове отримання прав (праворуч): цей графік показує ту саму інформацію, що й перший, але з накладенням нових (фіксованих) графіків (зеленим). Тут власники монет можуть переглядати графіки надання винагород, які буде встановлено командою, щоб виправити виявлені проблеми, які, як можна помітити, завжди відповідають максимальним значенням між оригінальним і betanet винагородами. Якщо цей графік такий самий, як і середній, це означає, що ланцюжкова передача вже правильна.


Ім’ям файлу для кожного файлу JSON і PNG є адреса xx network власника монети або адреса ETH, якщо монети не були заявлені станом на блок 870000. Ми радимо всім членам спільноти знайти відповідну інформацію та зв’язатися з командою, якщо вони знайдуть якісь проблеми.

Методологія

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

Приклади різних ситуацій

Залишок претензії без оригінальних замків, показує випуск 1

Залишок претензії з оригінальними замками, що показують обидві проблеми 1 і 2

Залишки претензії з оригінальними замками, але правильними

Тримач з оригінальними замками, показує проблему 2, яка спричиняє вищі замки, ніж очікувалося

Тримач із оригінальними замками, показує проблему 2, яка спричиняє спочатку вищі замки, а потім нижчі, ніж очікувалося

Тримач з оригінальними замками, але правильна обшивка

Тримач без оригінальних замків, але правильна обшивка

Тримач з оригінальними замками, показує помилку 1, через заявку після введення в дію

Популярний