Stale Rate — це частка результатів або зваженої роботи, позначених як застарілі. У майнінгу Bitcoin через пул зазвичай ідеться про shares: часткові підтвердження обчислень, які вже не відповідають поточному завданню. Точне визначення та вплив на винагороду залежать від системи, яку вимірюють.
Пул — це сервіс, що розподіляє роботу між майнерами. Коли мережа знаходить новий блок, зазвичай потрібно почати будувати наступний на його основі. Результат попереднього завдання вже не підходить для нової роботи. Stratum V2, протокол зв’язку майнінгових пристроїв, обробляє це повідомленням SetNewPrevHash: пристрій починає шукати блок, який продовжить ланцюжок після щойно вказаного блоку. З раніше підготовлених завдань чинним лишається тільки позначене ідентифікатором завдання job_id. Тому Петра перевіряє актуальність завдання, а не тільки час надсилання результату. [1]
У простому прикладі Петра надсилає 100 результатів однакової складності. Пул приймає 98, відхиляє 1 як stale і 1 з іншої причини. Відхилені stale-результати становлять 1%, а всі відхилення разом — 2%. F2Pool називає rejection rate частку всіх відхилених подань серед усіх надісланих. У нашому прикладі stale є лише частиною цього показника. Числа пояснюють розрахунок, а не прийнятну межу роботи; інший поділ на категорії може змінити зміст показника. [2]
Складність share визначає, наскільки вимогливим має бути поданий результат. Braiins обліковує результат зі складністю d як d базових одиниць роботи. Уявімо одну stale share зі складністю 1 та одну прийняту зі складністю 9. За кількістю подань вийде 50%, а за вагою роботи — 10%. Жоден розрахунок сам по собі не хибний, але вони відповідають на різні запитання. Тож Петра використовує однакову одиницю в чисельнику й знаменнику та перевіряє однаковість способу визначення складності. [3]
У документації F2Pool розрізняє категорію Staled, що приносить винагороду, і відхилені stale shares, які її не приносять. Отже, сама позначка не каже, чи втратила Петра гроші. Цю політику не можна переносити на кожен пул: важливі правила конкретного сервісу та фактичне нарахування. Порівнюючи постачальників, Петра спершу з’ясовує категорію результатів. Лише після цього можна оцінювати їхній вплив на дохід. [2]
Читаючи журнал роботи, легко не помітити, що Stratum V2 може підтвердити кілька подань одним повідомленням SubmitShares.Success. Поле new_submits_accepted_count містить кількість щойно підтверджених подань, а new_shares_sum — суму їхніх складностей. Кількість відповідей сервера тому не дорівнює кількості прийнятих shares. При відхиленні SubmitShares.Error містить sequence_number, ідентифікатор подання, та error_code, причину помилки. Без цього розрізнення Петра могла б сприйняти будь-яку помилку як запізнілу роботу. [1]
Звістка про новий блок спершу має пройти між комп’ютерами, що перевіряють Bitcoin. BIP152 описує Compact Block Relay — передавання блоків з меншим обсягом даних між вузлами мережі P2P, тобто безпосередньо з’єднаними учасниками. Менший обсяг може скоротити затримку передавання. Проте це поширення блоків, а не облік shares у пулі. Частка блоків, що лишилися поза основним ланцюгом, тому не вимірює запізнілі результати пристрою Петри. [4]
Braiins надає статистику роботи за різні періоди: shares_5m (за останні 5 хвилин), shares_60m (за останні 60 хвилин) і shares_24h (за останні 24 години). Петра не може ділити запізнілі результати короткого проміжку на роботу за весь день і порівнювати це з погодинною статистикою іншого пристрою. Обидві частини розрахунку мають охоплювати той самий період і ті самі пристрої. Якщо жодного подання не спостерігали, частку не визначено; це не виміряна втрата 0%. Прогалина в моніторингу або відсутня відповідь самі по собі теж не доводять, що результат був stale. [5]
Петра починає зі змін завдань, причин відхилення й стану з’єднання за той самий період. F2Pool пов’язує результати stale з мережевими умовами. Інші відхилення можуть спричиняти помилки прошивки — програмного забезпечення, яке керує пристроєм, — або надмірний розгін. Розгін означає підвищення робочої частоти чипів, щоб спробувати виконувати більше обчислень. Braiins радить ping — просту перевірку того, чи відповідає сервер на мережеві запити. Успішна відповідь не підтверджує правильності майнінгу чи нарахування винагороди. Нижчий загальний відсоток сам по собі не доводить усунення причини. Мета — зрозуміти, що змінилося, і відстежувати конкретну помилку за порівнюваних умов. [2] [6]
Для повної картини прочитайте також Mining Share, Share Difficulty, Mining Latency, Pool Fee, Bitcoin. На цю статтю також посилаються Stale Block, Mining Latency.