Що таке транзакція Coinbase?
Що таке транзакції coinbase
Не плутайте з криптовалютною біржею Coinbase. Термін “транзакція coinbase” позначає особливий вид транзакції, що відбувається в кожному новому блоці блокчейну.
Транзакції coinbase є ключовою частиною системи, яку блокчейни використовують для впровадження нових монет, що раніше не перебували в обороті. Перша транзакція coinbase була створена псевдонімним творцем Bitcoin Сатоші Накамото під час майнінгу першого “генезис-блоку”. Як повідомляється, виплата coinbase була спрямована на адресу Bitcoin “1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa” із вартістю 50 BTC.
Однією з найбільших загадок блокчейну Bitcoin є те, що цей блок ніколи не був підтверджений у блокчейні — факт, який досі ставить у тупик багатьох вчених і розробників у сфері блокчейнів.
Одна теорія припускає, що це сталося тому, що перша транзакція coinbase була закодована в початковому коді генезис-блоку. І оскільки весь блокчейн побудований на основі цього блоку, концепція підтвердження не застосовувалася до нього.
Інша теорія свідчить про те, що Накамото спеціально розробив це таким чином, оскільки, якщо з якоїсь причини генезис-блок не буде підтверджено, це викликало б створення нового блокчейну, роблячи оригінальний блокчейн застарілим.
Транзакція coinbase також використовується для винагородження майнерів за підтримку блокчейну. Їм виплачується певна кількість монет за кожен блок, який вони майнять. Ця система винагород створює стимул для майнерів і допомагає забезпечити безпеку блокчейну, запобігаючи шкідливій діяльності, здатній дестабілізувати мережу.
Як працює транзакція coinbase
Транзакції coinbase мають унікальні особливості, такі як період дозрівання, запобігання форкам і можливість додавання настроюваного тексту. Вони також мають відмінну структуру порівняно зі звичайними транзакціями.
У блокчейні Bitcoin усі транзакції, виконані в мережі, об’єднуються для формування одного блоку. Коли блок створено, його одразу додають до блокчейну. Ці блоки є незмінними та захищеними від підробок завдяки практично ідеальному коду блокчейну Bitcoin. Кожен блок повинен містити одну або кілька транзакцій, першою з яких завжди є транзакція coinbase.
Ось як працює транзакція coinbase:
- Створення блоку: Щоб отримати винагороду за блок після його створення, майнер спочатку має створити транзакцію coinbase.
- Вхідні дані: Транзакція coinbase не має вхідних даних, на відміну від звичайної транзакції, яка використовує вхідні дані з попередніх транзакцій. Натомість транзакція coinbase створює нові монети з нізвідки.
- Вихідні дані: Транзакція coinbase має один або кілька виходів, які вказують адреси, на які буде направлено винагороду за блок. Майнери можуть розподілити цю винагороду на різні адреси.
- Винагорода за блок: Наразі винагорода в BTC зменшується вдвічі приблизно кожні 210,000 блоків. Ця винагорода виплачується майнеру, який підтвердив та додав транзакції до блокчейну.
- Комісія за майнінг: Майнери можуть включати комісію за майнінг у транзакцію coinbase, яка сплачується ініціаторами транзакції як додатковий стимул для включення їхніх транзакцій у наступний блок.
Майнер може включити транзакцію coinbase разом з іншими транзакціями у блок, який він видобув, і транслювати цей блок у мережу після його створення. Блок перевіряється іншими майнерами, і якщо він схвалений, його додають до блокчейну, а майнер отримує винагороду за блок та будь-які пов’язані з ним комісії за майнінг.
Далі висвітлені ключові особливості транзакцій coinbase.
Що таке винагорода за блок і скорочення Bitcoin (halving)
Винагорода за блок — це нагорода, яку отримують майнери за створення нових блоків і додавання їх у блокчейн. Скорочення Bitcoin зменшує винагороду за блок на 50% приблизно кожні чотири роки.
Майнери відповідають за створення блоків у блокчейнах на основі proof-of-work (PoW), таких як Bitcoin. У свою чергу вони отримують нагороду в BTC після успішного створення кожного блоку. Розмір винагороди за блок залежить від двох факторів: суми комісій, включених у транзакції блоку, і кількості блоків з моменту генезис-блоку.
На початку існування Bitcoin винагорода за блок становила 50 BTC на блок, і ця винагорода включалася в транзакцію coinbase. Проте через скорочення Bitcoin винагорода зменшується на половину після кожних 210,000 блоків. Скорочення Bitcoin відбувається приблизно кожні чотири роки.
Наразі субсидія за блок, яка розподіляється транзакцією coinbase, становить 6,25 BTC за блок (за останнім скороченням). Оскільки транзакції coinbase створюють нові монети, вони є дійсними навіть без будь-яких вхідних даних, оскільки BTC в цих транзакціях є новоствореним і раніше не використовувався.
Наприклад, транзакція coinbase Blockstream у блоці 650,000 не має вхідних даних, а єдиний вихід дорівнює 6,25 BTC плюс комісія майнера у розмірі 0,244131 BTC.
Що таке правило дозрівання в транзакціях coinbase
Правило дозрівання для транзакцій coinbase регулює, коли винагороду за блок можна витратити.
BTC, уведений у транзакцію coinbase, не можна витратити, поки блок не отримає щонайменше 100 підтверджень у блокчейні. На відміну від звичайних транзакцій Bitcoin, які містять дані про переміщення BTC між гаманцями, транзакції coinbase містять дані про створення нової валюти, яку ще не використано.
Через це вхідні дані в цих транзакціях залишаються порожніми. Таким чином, структурно транзакції coinbase можуть бути представлені як одиничні порожні входи. Правило дозрівання було впроваджено для захисту блокчейну від форків, які виникають, коли спільнота приймає рішення про зміну протоколу чи набору правил блокчейну.
Що таке запобігання форкам у транзакціях coinbase
Транзакції coinbase сприяють запобіганню форкам через особливі правила їх створення та валідації.
Такі блокчейни, як Bitcoin, є open-source і спираються на спільноти для підтримки та розвитку свого коду. Таким чином, подія, як-от форк, призведе до поділу ланцюга і створення нового блокчейну. Цей новий блокчейн міститиме всю історію вихідного ланцюга, але водночас буде рухатися у новому напрямку.
У такій ситуації майнер теоретично може створити необмежену кількість BTC, якщо новий блокчейн не містить правила дозрівання. Це може суперечити алгоритму Bitcoin, який регулює процес скорочення, спрямованого на збереження дефіцитності криптовалюти.
Що таке значення транзакції та властивість настроюваного тексту в транзакціях coinbase
Значення транзакції coinbase залежить від таких факторів, як значення кожної окремої транзакції, висота блоку та процес скорочення. Майнери можуть додавати будь-який настроюваний текст у блоки, які вони створили.
Значення транзакції coinbase визначається декількома чинниками. Серед них значення кожної транзакції, верифікованої блоком, висота блоку (кількість транзакцій) та скорочення Bitcoin стосовно блоку. Після того як блок отримає 100 підтверджень, майнер може скористатися BTC.
Коли створюється блок, він зберігає близько 100 байтів даних. Крім того, у нього є простір для того, щоб майнери могли додавати будь-який текст на свій вибір. Наприклад, Накамото залишив таке повідомлення, добуваючи генезис-блок Bitcoin:
Це повідомлення є посиланням на заголовок статті в британській газеті The Times від 3 січня 2009 року і часто сприймається як коментар щодо стану світової фінансової системи на момент створення Bitcoin.
Накамото вирішив вбудувати це повідомлення в генезис-блок, аби підкреслити необхідність децентралізованої та незалежної системи транзакцій, вільної від впливу центральних органів і посередників.
Крім того, майнери можуть додавати будь-яку інформацію, яку вони вважають за потрібне, щоб персоналізувати блок і залишити незмінне повідомлення у вічності.
Як структуровані транзакції coinbase
Транзакції coinbase формуються як перша транзакція у блоці, де майнер включає новостворений обсяг BTC як винагороду за свої зусилля у розв’язуванні складної математичної задачі для валідації транзакцій і створення нового блоку в блокчейні.
Транзакції coinbase мають особливий формат. У порівнянні зі звичайними транзакціями, вхідні дані для транзакцій coinbase мають набір значень, які не представляють витрачені вихідні дані транзакцій (UTXO).
Таким чином, замість хешу транзакції у транзакції coinbase є 32 байти, усі встановлені на нулі. Індекс виходу також заповнюється 4 байтами з усіма значеннями, встановленими на 0xFF (255 у десятковому форматі).