Закріплення графіків наділення правами

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

Команда 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 складається з трьох полів:

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


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

Приклади:

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

  • Локкd:7000
  • за_блок:7000
  • стартовий_блок:1123200

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

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

  • Локкd:23812
  • за_блок: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

У березні 2021 року команда анонсувала програму BetaNet Staking Rewards, яка поширюється на всіх власників монет з моменту запуску основної мережі. Програма має APY 50%, відсотки нараховуються щодня, з 1 березня 2021 року до запуску основної мережі. На монети, отримані після 1 березня, відсотки нараховуються тільки з дня їх отримання. Сума винагороди була розрахована для кожного власника монет і розміщена в таблиці генезисного блоку до запуску мейннету. У генезисному блоці розмір винагороди налаштовувався для кожного власника монет в модулі претензій або безпосередньо в модулі 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. Залишкові вимоги - сума, що блокується, була розрахована після того, як до основної суми була додана винагорода, тобто lock = 0,8 * (основна сума + винагорода) + винагорода, а не lock = 0,8 * основна сума + винагорода. Це призвело до того, що в багатьох випадках сума блокування виявилася вищою, ніж очікувалося, за залишковими вимогами
  2. Обчислення наділення правами - сума, яка буде заблокована, обчислюється шляхом взяття необхідного блокування та віднімання поточної суми, яка вже заблокована в блоці введення в дію. Це було оптимальним рішенням, яке блокує необхідну суму від винагород, зберігаючи при цьому існуючі блокування, в результаті чого блокування прав завжди вище, ніж раніше. Однак у багатьох сценаріях це рішення може призвести до того, що заблоковані суми будуть нижчими, ніж передбачено програмою, що може створити несправедливі ситуації серед власників монет, які обрали різні варіанти. Більш того, в деяких випадках заблоковане значення спочатку вище, ніж потрібно, а потім падає до нижчого, ніж дозволено
  3. Неправильна виплата винагороди - розглянемо користувача, який має дві окремі вимоги, одна без графіку переходу прав (наприклад, від початкового продажу), а інша з графіком. Якщо обидві вимоги надіслані на одну адресу, зберігається лише вартість винагороди за другою вимогою. Це означає, що вартість винагороди за першою вимогою не була виплачена на момент набрання чинності. Ця проблема стосується лише 3 власників монет.

Вирішення проблемних питань

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

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

Нові графіки набуття права власності

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

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

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


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

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


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

Методологія

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

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

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

Залишок вимоги з оригінальними замками, що відображає як випуск 1, так і випуск 2

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

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

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

Кронштейн з оригінальними замками, але з правильним одяганням

Кронштейн без оригінальних замків, але з правильним одяганням

Футляр з оригінальними замками, з помилкою 1, у зв'язку з претензією після набрання чинності

Популярний