27 Квітня, 2024

Як працює біткоїн?

Сьогодні про Bitcoin не чув, напевно, тільки ледачий. Чути-то чув, але мало хто задавався питанням, як він там “всередині” працює. Багато хто задовольняється тими знаннями, яких вистачає, щоб завести гаманець, отримати, відправити криптовалюту на іншу адресу або продати її. Працює – і добре, а як саме – не важливо. Проте знати це необхідно, оскільки ця інформація може зняти безліч запитань і уникнути складностей з використанням.

Якось ми вже розглядали, що таке біткоїн, але не заглиблювалися в деталі. У цій статті ми постараємося доступно і детально розповісти, як працює біткоїн.

Мережа

Як кажуть нам багато джерел, Bitcoin – це однорангова платіжна система (мережа), розрахунковою одиницею операцій у якій є однойменна криптовалюта.

Однорангова мережа – це комп’ютерна мережа, принципом якої є рівноправність усіх учасників. Кожен вузол (peer) або нода, як їх ще називають, виконує функції як клієнта, так і сервера. Така організація дає змогу зберігати працездатність мережі за будь-якої кількості та будь-якого поєднання доступних нод (від перестановки місць доданків сума не змінюється). Учасниками мережі є всі піри, тому головною особливістю системи є повна децентралізація: немає будь-якого центрального адміністратора або сервера. Замість терміна “однорангова” можна використовувати такі визначення, як: децентралізована, пірингова або p2p (peer-to-peer) мережа.

Blockchain

Основою біткоїну або “книгою” обліку транзакцій є впорядкована послідовність (ланцюжок) набору даних (блоків), або просто – блокчейн. Кожен блок мережі біткоїну вміщує до 1 Мб даних, формується в середньому за 10 хвилин, містить інформацію про всі транзакції, вміщені до нього, та інформацію, яка пов’язує його з попереднім блоком.

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

Принцип роботи

Для наочнішого розуміння основ роботи мережі біткоїна уявімо гіпотетичного криптоентузіаста Тоні, у якого встановлений біткоїн-гаманець з 2-ма BTC на балансі.

Наш Тоні бажає подарувати 1 BTC своїй подрузі Сінді, і для цього йому потрібна її унікальна біткоїн-адреса гаманця (аналог номера рахунку в традиційному банку). Цю адресу Тоні вносить у відповідне поле введення свого гаманця, а в іншому вказує суму переказу – 1 BTC. Потім Тоні переходить до виставлення розміру комісії за транзакцію – тут зупинимося трохи докладніше.

Транзакції та навантаження мережі

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

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

По суті, транзакція – це набір інформації, яка вказує учасникам мережі, на яке значення зменшився баланс відправника, і на яке значення збільшився баланс одержувача.

Майнери

Щоб транзакція була успішно здійснена, її мають підтвердити (валідувати) майнери. Наразі, це спеціалізовані організації, які за допомогою потужного обчислювального обладнання (ASIC-ферми) перевіряють транзакції на “правильність”, збирають ці транзакції в блоки, а блоки послідовно приєднують один до одного. На формування 1 блоку алгоритмом мережі відводиться в середньому 10 хвилин, протягом яких майнери щосекунди виконують однотипну обчислювальну роботу в пошуках одного єдино правильного рішення. Це не складно, це не математична проблема, але це дуже великий обсяг роботи, який важко зробити маленькими обчислювальними потужностями швидко й ефективно.

За виконану роботу майнери отримують винагороду у вигляді BTC. Ця винагорода складається з тих комісій, які заплатили користувачі за транзакції та абсолютно нових біткоїнів, які згенерувала сама мережа в момент, коли з транзакцій був зібраний і підтверджений новий блок. Нові біткоїни є нагородою для майнерів за виконану роботу. Кожні 210 000 блоків відбувається зменшення нагороди в 2 рази для майнерів за знайдений блок, це називається “халвінг“.

Комісії

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

Для вас, читачі, ми розповімо, як формується вага і вартість транзакції Тоні.

Ті 2 BTC, який він має на балансі, з’явилися в гаманці не просто так. Тоні їх заробив. 1 BTC у 2017 році, 1 BTC – у 2018. Тепер він хоче відправити половину подрузі. У його транзакцію, крім відомостей про кількість монет, буде включена інформація про адреси, з яких йому надійшли монети (їх називають входи), інформація про адреси одержувачів (їх називають виходи) і інформація про його власну адресу.

  • Кожен вхід, з якого були отримані монети, важить ~148 байтів;
  • Кожен вихід, на який йдуть монети ~34 байти;
  • Сама транзакція важить ~10 байтів, незалежно від кількості адрес або суми переказу.

Рахуємо: 148*2+34*2+10=374 байти. Тепер ми знаємо, що наш “жадібний” Тоні заплатить за транзакцію 374 satoshi.

Решта

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

Тому, крім інформації про адресу одержувача, у транзакцію включається й інформація про адресу відправника, тобто вашу адресу. Це повернення називається “рештою”. В оглядачах цей момент можна побачити в такому вигляді.

Mempool

Виставивши мізерну комісію в 374 сатоші, Тоні підтверджує відправлення 1 BTC і чекає, коли майнери підтвердять цю транзакцію.

Ось тільки майнери не поспішають її підтверджувати, транзакція потрапляє в мемпул (mempool) – книгу черги на підтвердження. Чому? Тому що майнери хочуть заробляти, а не просто експлуатувати своє обладнання, адже за підтвердження транзакції Тоні вони отримують лише 374 satoshi. Спеціально для таких дуже дешевих транзакцій і існує мемпул з його системою сортування.

Насамперед майнери “беруть” з мемпула легші транзакції і з вищою комісією, тому що підтверджувати їх вигідніше, і в блок їх вміщається набагато більше.

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

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

Фактично, в такій ситуації баланси відправника ніби “заморожені”. Саме цей механізм захищає мережу від спам-транзакцій – ситуацій, коли спамер створює безліч дешевих відправок, тим самим перевантажуючи мережу.

Поки транзакція Тоні перебуває в мемпулі, вона не вважається підтвердженою і не вважається завислою. При цьому перебувати в черзі вона може досить тривалий час – доти, доки не підтвердиться, або доки її не видалять ноди, що валідують, з мемпула. За статистикою, максимальний період очікування черги дорівнює ~3 добам, але в моменти високої активності мережі цей термін може розтягнутися на тиждень і довше.

Погодьтеся, що швидкість переказів у наш час – це одна з пріоритетних характеристик у питанні використання платіжних систем, а такі ось черги не дуже приємні, м’яко кажучи.

Щоб проштовхнути транзакцію в мемпулі існує багато способів. Усі вони досить складні для розуміння і здійснення пересічним користувачем, а деякі межують з таким шахрайським способом як “double-spending” (повторна витрата). Проте, є одна чудова функція, якою може користуватися будь-хто. Називається вона “Заміна комісійних” (Replace-by-Fee або RBF).

Replace-by-fee (RBF)

RBF – це редагування наявної транзакції, яка перебуває в мемпулі.

Редагування означає, що в новій транзакції будуть використані ті самі входи, що й у старій, але при цьому буде змінена комісія. Така відредагована транзакція не вважатиметься “double-spending”, оскільки використання опції Replace-by-Fee дасть змогу цього уникнути. Ноди мережі bitcoin сприймають відредаговану транзакцію як стару, і вона переноситься в черзі мемпула на більш привабливі для майнерів позиції.

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

Про те, як прискорити транзакцію bitcoin у Trustee Wallet описано в цій короткій статті.

Підтвердження

Тоні вчасно зметикував, що через його жадібність Сінді може не отримати подарунка зовсім, тому своєчасно скористався функцією RBF і збільшив комісію. Транзакція, як і очікувалося, стала більш привабливою для майнерів, і вони включили її в черговий блок – транзакція отримала 1 підтвердження. 

З кожним наступним знайденим блоком, ця транзакція отримуватиме по 1 додатковому підтвердженню. Коли таких підтверджень набирається 6 і більше, транзакція вважається підтвердженою.

Швидкість транзакцій

Говорячи про швидкість переказів, слід зрозуміти, що немає чіткого значення. Але давайте обчислимо її на основі транзакції Тоні та наявних у нас даних.

Умова:

  • розмір одного блоку ~1 Мб (1’048’576 байтів);
  • кожен блок, заповнений транзакціями, формується раз на ~10 хвилин;
  • транзакція нашого Тоні має вагу 374 байти.

Рішення:

  • 1’048’576 байтів : 374 байти = 2803,6 транзакцій в одному блоці;
  • 2803,6 транзакцій : 600 секунд = 4,6 транзакцій на секунду.

Відповідь: Щосекунди майнери підтверджують ~5 транзакцій, подібних до транзакції Тоні.

Зрозуміло, все це приблизні значення, оскільки швидкість обробки змінюється щосекунди і залежить від багатьох факторів. Головне, щоб вашу транзакцію було взято з мемпула якомога швидше, і якщо це станеться, то ваш переказ дійде до одержувача в межах 1-600 секунд.

Фактично, після включення транзакції в блок, одержувач може не тільки бачити кошти у себе на балансі, а й за певної умови розпоряджатися ними. Швидко, чи не так?

Так, але як же правило про 6 підтверджень? 6 блоків, по 10 хвилин на кожен, разом – 1 година…

Bitcoin-клієнти

Вся справа в програмному забезпеченні, яким користуються власники криптовалют. Класичні Bitcoin-гаманці відображатимуть транзакцію як “непідтверджену” доти, доки вона не отримає 6 підтверджень (блоків).

Сервіси, які приймають BTC як оплату, можуть виставляти свої обмеження на кількість блоків, потрібних для підтвердження (7, 10, 45, 214 …).

BTC, які генеруються мережею як нагорода за знаходження блоку, можна використовувати тільки через 100 підтверджень, але класичні біткойн-гаманці не відображатимуть монети, отримані за знаходження блоку, поки не набереться 120 підтверджень.

Цифра “6” була обрана не випадково. З кожним новим блоком, транзакція стає дедалі менш вразливою до підміни або зміни. Щоб зробити щось з уже підтвердженою транзакцією в блоці, потрібно буде “переписати” всі наступні блоки, а це вимагає дуже величезних обчислювальних потужностей і мільйонних капіталовкладень. І що більше підтверджень отримає транзакція, то надійніше вона буде захищена.

Але в такому потужному і стійкому блокчейні, як у біткоїна, це, скоріше, вимога одержувача транзакції, а не правило протоколу.

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

Зв’язка “SegWit + RBF + використання непідтверджених транзакцій” дає змогу вичавити максимум швидкості з блокчейна BTC, що важливо для некастодіальних сервісів.

Передбачаючи ваше запитання, що за біткойн-гаманець використовують Тоні та Сінді, відповімо відразу – Trustee Wallet.

Висновки

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

Стійка робота Bitcoin однаково залежить як від майнерів, так і від звичайних користувачів, і що більше учасників буде в мережі, то більш захищеною і децентралізованою вона стане.

#BTC 2TheMoon!

Share

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *