07 / 736HASH

Майнінг

Mining

Як непідтверджені платежі потрапляють у підтверджений блок, за що платять майнерам і чому інші мають перевірити результат.

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

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

Майнінг не викопує монети, заховані в комп’ютері. Йдеться про пропозицію наступного дійсного блока — набору транзакцій, що продовжує наявну історію. Для цієї пропозиції майнер шукає результат обчислення, який важко отримати. Знайшовши його, він надсилає блок іншим. Вони перевіряють і обчислення, і транзакції та за однаковими правилами визначають, чи можуть прийняти блок. Нові біткоїни є частиною винагороди, але їх випуск — не єдина мета майнінгу. Для користувача важливий передусім перехід від платежу в очікуванні до платежу, записаного в історії, яку можна перевірити. [1] [2]

Коли ви надсилаєте платіж, він спочатку поширюється між вузлами. Вузол — комп’ютер, що бере участь у мережі Bitcoin; його mempool — локальна збірка непідтверджених транзакцій. Єдиної черги, якою хтось керував би для всіх, немає. Майнер складає блок-кандидат із доступних транзакцій, враховуючи комісії й обмежений простір. Якщо транзакція витрачає вихід іншої, ще непідтвердженої транзакції, та попередня має стояти в блоці раніше. Команда getblocktemplate надає дані для складання блока, зокрема ці залежності. Добір також обмежують правила ваги блока та витрат на перевірку підписів. [1]

Перша транзакція блока називається Coinbase Transaction. Це не рахунок на однойменній біржі, а особлива транзакція, якою майнер призначає собі дозволену винагороду. Вона складається із субсидії блока — новостворених біткоїнів — і комісій решти транзакцій у блоці. Комісія є різницею між вартістю входів і виходів, тому лише передає вже наявні біткоїни. Якщо майнер візьме забагато, вузли відхилять увесь блок. Навіть правильну винагороду не можна витратити відразу: вихід Coinbase Transaction дозволено витратити щонайраніше в блоці, висота якого на 100 більша. [2]

Уявіть лотерею, де ніхто наперед не знає виграшного результату, проте після оголошення кожен швидко його перевірить. Майнери обчислюють хеш — цифровий відбиток даних, який можна прочитати і як велике число. Для блока Bitcoin це число має бути меншим або дорівнювати межі, що називається target. Це вимога Proof of Work. Конкретно хеш-функцію SHA-256 двічі застосовують до 80-байтового заголовка блока, який містить основні підсумкові дані. Майнери не розв’язують окремі платежі. Вони змінюють дані для обчислення й перевіряють, чи новий результат відповідає умові. [3]

ASIC — чип для певного обчислювального завдання; пристрій для майнінгу Bitcoin багаторазово застосовує подвійний SHA-256 до варіантів 80-байтового заголовка. Одне зі змінюваних полів — nonce, чотирибайтове число в заголовку. Діапазон його значень скінченний. Коли він вичерпаний, можна змінити extra nonce, додаткові дані всередині Coinbase Transaction. Це змінює Merkle Root — спільний відбиток транзакцій — і далі заголовок, відкриваючи нові варіанти. Жодна невдала спроба не наближає пристрій до гарантованої перемоги. І десять хвилин не обіцяні окремому майнеру: це цільове середнє всієї мережі. [3]

Майнер зацікавлений складати дійсні блоки: відхилена пропозиція не дає винагороди, якою можна скористатися. Однак його перевірка не замінює перевірок інших. Full Node — комп’ютер, який сам перевіряє правила Bitcoin, зокрема транзакції, винагороду й Proof of Work. Наприклад, він відхилить блок, що створює більше біткоїнів, ніж дозволено, навіть якщо майнер вклав значну обчислювальну потужність. Власний вузол дає користувачу змогу не покладатися на заяву майнера, що з блоком усе гаразд. [2] [4]

Самостійний майнер може дуже довго чекати успіху. Mining Pool дає змогу ділити роботу й доходи між учасниками. Щоб оцінити внесок пристроїв, оператор також приймає результати, які відповідають легшій внутрішній умові. Такий результат називається share. Більшість результатів share недостатня для мережі Bitcoin; лише деякі виконують і її суворішу вимогу. Виплати залежать від обраної моделі, узгоджених умов і комісій пулу. Участь у пулі не дає права змінювати правила Bitcoin. Оператор також не обов’язково володіє підключеними пристроями. Його частка знайдених блоків сама по собі не доводить власності на обладнання. [3]

Після успішного обчислення повний блок ще має дістатися інших вузлів. Два майнери можуть майже одночасно знайти різні дійсні блоки з одним попередником. Частина мережі тоді ненадовго знає одну гілку, а решта — іншу. Вузли обирають дійсну гілку з найбільшою накопиченою роботою, тобто сумою роботи, приписаної її блокам. Наступний знайдений блок може схилити вибір на користь однієї гілки. Блок у відкинутій гілці може бути дійсним, але його винагорода не потрапить до активної історії. Тому важливо швидко поширювати результат і не продовжувати роботу над застарілою пропозицією після отримання нової вершини ланцюга. [4]

Hashrate показує кількість спроб хешування за секунду. Частка майнера в загальній потужності мережі допомагає оцінити частоту успіхів, але не гарантує регулярного доходу. Дохід — не прибуток: треба відняти витрати на електроенергію, охолодження, пристрої, обслуговування й комісії пулу. Простої можуть додатково погіршити результат. Зважайте й на одиниці: TH/s вимірює обчислювальну продуктивність, а вати — споживану електричну потужність. Продуктивний пристрій може бути збитковим за дорогої електроенергії, а один вдалий випадок мало говорить про довгострокову рентабельність. [3]

На власному вузлі можна порівняти пропозицію getblocktemplate із заголовком, Coinbase Transaction і звичайними транзакціями знайденого блока. Команди на кшталт getblocktemplate належать до технічного інтерфейсу вузла, а не до сервісу, якому треба довіряти гроші. submitblock передає готовий блок вузлу на перевірку. Місцеве прийняття не гарантує, що блок назавжди залишиться в історії всієї мережі. У пулі розрізняйте подані результати share, прийняті блоки Bitcoin і фактично виплачені суми. Разом з експлуатаційними витратами вони показують економічний результат майнінгу. [5]

Для повної картини прочитайте також Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. На цю статтю також посилаються Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.

DOC · 001Bitcoin Core v29.0: block assemblerПервинне джерело DOC · 002Bitcoin Core v29.0: block validationПервинне джерело DOC · 003Bitcoin Developer Guide: MiningПервинне джерело DOC · 004Bitcoin whitepaperПервинне джерело DOC · 005BIP 22: getblocktemplateПервинне джерело
Переглянуто: Спочатку джерела · Не інвестиційна порада